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