Irrlicht 3D Engine
ISceneNodeAnimatorCollisionResponse.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2012 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __I_SCENE_NODE_ANIMATOR_COLLISION_RESPONSE_H_INCLUDED__
00006 #define __I_SCENE_NODE_ANIMATOR_COLLISION_RESPONSE_H_INCLUDED__
00007 
00008 #include "ISceneNode.h"
00009 
00010 namespace irr
00011 {
00012 namespace scene
00013 {
00014 
00015     class ISceneNodeAnimatorCollisionResponse;
00016 
00018 
00022     class ICollisionCallback : public virtual IReferenceCounted
00023     {
00024     public:
00025 
00027 
00036         virtual bool onCollision(const ISceneNodeAnimatorCollisionResponse& animator) = 0;
00037     };
00038 
00040 
00053     class ISceneNodeAnimatorCollisionResponse : public ISceneNodeAnimator
00054     {
00055     public:
00056 
00058         virtual ~ISceneNodeAnimatorCollisionResponse() {}
00059 
00061 
00066         virtual bool isFalling() const = 0;
00067 
00069 
00077         virtual void setEllipsoidRadius(const core::vector3df& radius) = 0;
00078 
00080 
00081         virtual core::vector3df getEllipsoidRadius() const = 0;
00082 
00084 
00089         virtual void setGravity(const core::vector3df& gravity) = 0;
00090 
00093         virtual core::vector3df getGravity() const = 0;
00094 
00096 
00098         virtual void jump(f32 jumpSpeed) = 0;
00099 
00101         virtual void setAnimateTarget ( bool enable ) = 0;
00102         virtual bool getAnimateTarget () const = 0;
00103 
00105 
00111         virtual void setEllipsoidTranslation(const core::vector3df &translation) = 0;
00112 
00114 
00119         virtual core::vector3df getEllipsoidTranslation() const = 0;
00120 
00122 
00124         virtual void setWorld(ITriangleSelector* newWorld) = 0;
00125 
00127         virtual ITriangleSelector* getWorld() const = 0;
00128 
00130 
00133         virtual void setTargetNode(ISceneNode * node) = 0;
00134 
00136 
00137         virtual ISceneNode* getTargetNode(void) const = 0;
00138 
00140         virtual bool collisionOccurred() const = 0;
00141 
00143         virtual const core::vector3df & getCollisionPoint() const = 0;
00144 
00146         virtual const core::triangle3df & getCollisionTriangle() const = 0;
00147 
00149 
00153         virtual const core::vector3df & getCollisionResultPosition(void) const = 0;
00154 
00156         virtual ISceneNode* getCollisionNode(void) const = 0;
00157 
00159 
00162         virtual void setCollisionCallback(ICollisionCallback* callback) = 0;
00163 
00164     };
00165 
00166 
00167 } // end namespace scene
00168 } // end namespace irr
00169 
00170 #endif
00171