Commit 0e147df2 authored by Rogerborg's avatar Rogerborg

Change recently added ICollisionCallback / ISceneNodeAnimatorCollisionResponse...

Change recently added ICollisionCallback / ISceneNodeAnimatorCollisionResponse methods to use const & parameters and return values.  Regression tested.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2113 dfc29bdd-3216-0410-991c-e03cc46cb475
parent a771f88c
...@@ -30,10 +30,10 @@ namespace scene ...@@ -30,10 +30,10 @@ namespace scene
\retval true if the collision was handled in the animator. The animator's target \retval true if the collision was handled in the animator. The animator's target
node will *not* be moved to the collision point, but will instead move directly node will *not* be moved to the collision point, but will instead move directly
to the location that triggered the collision check. to the location that triggered the collision check.
\retval false if the collision was not handled in the animator. The animator's \retval false if the collision was not handled in the animator. The animator's
target node will be moved to the collision position. target node will be moved to the collision position.
*/ */
virtual bool onCollision(ISceneNodeAnimatorCollisionResponse* animator) = 0; virtual bool onCollision(const ISceneNodeAnimatorCollisionResponse& animator) = 0;
}; };
//! Special scene node animator for doing automatic collision detection and response. //! Special scene node animator for doing automatic collision detection and response.
...@@ -135,14 +135,14 @@ namespace scene ...@@ -135,14 +135,14 @@ namespace scene
//! Returns true if a collision occurred during the last animateNode() //! Returns true if a collision occurred during the last animateNode()
virtual bool collisionOccurred() const = 0; virtual bool collisionOccurred() const = 0;
//! Returns the point of collision //! Returns the last point of collision.
virtual core::vector3df getCollisionPoint() const = 0; virtual const core::vector3df & getCollisionPoint() const = 0;
//! Returns the last triangle that caused a collision //! Returns the last triangle that caused a collision
virtual core::triangle3df getCollisionTriangle() const = 0; virtual const core::triangle3df & getCollisionTriangle() const = 0;
//! Sets a callback interface which will be called if a collision occurs. //! Sets a callback interface which will be called if a collision occurs.
/** \param callback: collision callback handler that will be called when a collision /** \param callback: collision callback handler that will be called when a collision
occurs. Set this to 0 to disable the callback. occurs. Set this to 0 to disable the callback.
*/ */
virtual void setCollisionCallback(ICollisionCallback* callback) = 0; virtual void setCollisionCallback(ICollisionCallback* callback) = 0;
......
...@@ -195,7 +195,7 @@ void CSceneNodeAnimatorCollisionResponse::animateNode(ISceneNode* node, u32 time ...@@ -195,7 +195,7 @@ void CSceneNodeAnimatorCollisionResponse::animateNode(ISceneNode* node, u32 time
CollisionPoint = pos; CollisionPoint = pos;
if(CollisionCallback) if(CollisionCallback)
collisionConsumed = CollisionCallback->onCollision(this); collisionConsumed = CollisionCallback->onCollision(*this);
} }
if(!collisionConsumed) if(!collisionConsumed)
......
...@@ -99,13 +99,13 @@ namespace scene ...@@ -99,13 +99,13 @@ namespace scene
virtual bool collisionOccurred() const { return CollisionOccurred; } virtual bool collisionOccurred() const { return CollisionOccurred; }
//! Returns the last point of collision. //! Returns the last point of collision.
virtual core::vector3df getCollisionPoint() const { return CollisionPoint; } virtual const core::vector3df & getCollisionPoint() const { return CollisionPoint; }
//! Returns the last triangle that caused a collision. //! Returns the last triangle that caused a collision.
virtual core::triangle3df getCollisionTriangle() const { return CollisionTriangle; } virtual const core::triangle3df & getCollisionTriangle() const { return CollisionTriangle; }
//! Sets a callback interface which will be called if a collision occurs. //! Sets a callback interface which will be called if a collision occurs.
/** \param callback: collision callback handler that will be called when a collision /** \param callback: collision callback handler that will be called when a collision
occurs. Set this to 0 to disable the callback. occurs. Set this to 0 to disable the callback.
*/ */
virtual void setCollisionCallback(ICollisionCallback* callback); virtual void setCollisionCallback(ICollisionCallback* callback);
......
...@@ -15,9 +15,9 @@ static bool expectedCollisionCallbackPositions = true; ...@@ -15,9 +15,9 @@ static bool expectedCollisionCallbackPositions = true;
class CMyCollisionCallback : public ICollisionCallback class CMyCollisionCallback : public ICollisionCallback
{ {
public: public:
bool onCollision(ISceneNodeAnimatorCollisionResponse* animator) bool onCollision(const ISceneNodeAnimatorCollisionResponse& animator)
{ {
const vector3df & collisionPoint = animator->getCollisionPoint(); const vector3df & collisionPoint = animator.getCollisionPoint();
logTestString("Collision callback at %f %f %f\n", logTestString("Collision callback at %f %f %f\n",
collisionPoint.X, collisionPoint.Y, collisionPoint.Z); collisionPoint.X, collisionPoint.Y, collisionPoint.Z);
...@@ -30,28 +30,28 @@ public: ...@@ -30,28 +30,28 @@ public:
assert(false); assert(false);
} }
if(animator->getTargetNode() != ExpectedTarget) if(animator.getTargetNode() != ExpectedTarget)
{ {
logTestString("*** Error: wrong node\n"); logTestString("*** Error: wrong node\n");
expectedCollisionCallbackPositions = false; expectedCollisionCallbackPositions = false;
assert(false); assert(false);
} }
return ConsumeCollision; return ConsumeNextCollision;
} }
void setNextExpectedCollision(ISceneNode* target, const vector3df& point, bool consume) void setNextExpectedCollision(ISceneNode* target, const vector3df& point, bool consume)
{ {
ExpectedTarget = target; ExpectedTarget = target;
ExpectedCollisionPoint = point; ExpectedCollisionPoint = point;
ConsumeCollision = consume; ConsumeNextCollision = consume;
} }
private: private:
ISceneNode * ExpectedTarget; ISceneNode * ExpectedTarget;
vector3df ExpectedCollisionPoint; vector3df ExpectedCollisionPoint;
bool ConsumeCollision; bool ConsumeNextCollision;
}; };
...@@ -97,7 +97,7 @@ bool collisionResponseAnimator(void) ...@@ -97,7 +97,7 @@ bool collisionResponseAnimator(void)
vector3df(0, 0, 0)); vector3df(0, 0, 0));
testNode2->addAnimator(collisionAnimator2); testNode2->addAnimator(collisionAnimator2);
collisionAnimator2->setCollisionCallback(&collisionCallback); collisionAnimator2->setCollisionCallback(&collisionCallback);
wallSelector->drop(); wallSelector->drop();
// Don't drop() collisionAnimator2 since we're going to use it. // Don't drop() collisionAnimator2 since we're going to use it.
......
Test suite pass at GMT Tue Jan 20 19:08:37 2009 Test suite pass at GMT Wed Jan 21 08:35:20 2009
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_workspace_file> <CodeBlocks_workspace_file>
<Workspace title="tests"> <Workspace title="tests">
<Project filename="tests.cbp" active="1" />
<Project filename="..\source\Irrlicht\Irrlicht-gcc.cbp" /> <Project filename="..\source\Irrlicht\Irrlicht-gcc.cbp" />
<Project filename="tests.cbp" active="1" />
</Workspace> </Workspace>
</CodeBlocks_workspace_file> </CodeBlocks_workspace_file>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment