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
\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
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.
*/
virtual bool onCollision(ISceneNodeAnimatorCollisionResponse* animator) = 0;
virtual bool onCollision(const ISceneNodeAnimatorCollisionResponse& animator) = 0;
};
//! Special scene node animator for doing automatic collision detection and response.
......@@ -135,14 +135,14 @@ namespace scene
//! Returns true if a collision occurred during the last animateNode()
virtual bool collisionOccurred() const = 0;
//! Returns the point of collision
virtual core::vector3df getCollisionPoint() const = 0;
//! Returns the last point of collision.
virtual const core::vector3df & getCollisionPoint() const = 0;
//! 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.
/** \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.
*/
virtual void setCollisionCallback(ICollisionCallback* callback) = 0;
......
......@@ -195,7 +195,7 @@ void CSceneNodeAnimatorCollisionResponse::animateNode(ISceneNode* node, u32 time
CollisionPoint = pos;
if(CollisionCallback)
collisionConsumed = CollisionCallback->onCollision(this);
collisionConsumed = CollisionCallback->onCollision(*this);
}
if(!collisionConsumed)
......
......@@ -99,13 +99,13 @@ namespace scene
virtual bool collisionOccurred() const { return CollisionOccurred; }
//! 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.
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.
/** \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.
*/
virtual void setCollisionCallback(ICollisionCallback* callback);
......
......@@ -15,9 +15,9 @@ static bool expectedCollisionCallbackPositions = true;
class CMyCollisionCallback : public ICollisionCallback
{
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",
collisionPoint.X, collisionPoint.Y, collisionPoint.Z);
......@@ -30,28 +30,28 @@ public:
assert(false);
}
if(animator->getTargetNode() != ExpectedTarget)
if(animator.getTargetNode() != ExpectedTarget)
{
logTestString("*** Error: wrong node\n");
expectedCollisionCallbackPositions = false;
assert(false);
}
return ConsumeCollision;
return ConsumeNextCollision;
}
void setNextExpectedCollision(ISceneNode* target, const vector3df& point, bool consume)
{
ExpectedTarget = target;
ExpectedCollisionPoint = point;
ConsumeCollision = consume;
ConsumeNextCollision = consume;
}
private:
ISceneNode * ExpectedTarget;
vector3df ExpectedCollisionPoint;
bool ConsumeCollision;
bool ConsumeNextCollision;
};
......@@ -97,7 +97,7 @@ bool collisionResponseAnimator(void)
vector3df(0, 0, 0));
testNode2->addAnimator(collisionAnimator2);
collisionAnimator2->setCollisionCallback(&collisionCallback);
wallSelector->drop();
// 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" ?>
<CodeBlocks_workspace_file>
<Workspace title="tests">
<Project filename="tests.cbp" active="1" />
<Project filename="..\source\Irrlicht\Irrlicht-gcc.cbp" />
<Project filename="tests.cbp" active="1" />
</Workspace>
</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