mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-15 08:34:40 +00:00
Collision events
This commit is contained in:
parent
2a96c946b7
commit
8aaed004f1
2 changed files with 38 additions and 0 deletions
|
|
@ -24,6 +24,7 @@
|
||||||
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
|
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
|
||||||
// Copyright (C) 2015 Faust Logic, Inc.
|
// Copyright (C) 2015 Faust Logic, Inc.
|
||||||
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
||||||
|
|
||||||
#include "platform/platform.h"
|
#include "platform/platform.h"
|
||||||
#include "T3D/shapeBase.h"
|
#include "T3D/shapeBase.h"
|
||||||
|
|
||||||
|
|
@ -3722,6 +3723,31 @@ void ShapeBase::setCurrentWaterObject( WaterObject *obj )
|
||||||
mCurrentWaterObject = obj;
|
mCurrentWaterObject = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShapeBase::notifyCollisionCallbacks(SceneObject* obj, const VectorF& vel)
|
||||||
|
{
|
||||||
|
for (S32 i = 0; i < collision_callbacks.size(); i++)
|
||||||
|
if (collision_callbacks[i])
|
||||||
|
collision_callbacks[i]->collisionNotify(this, obj, vel);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShapeBase::registerCollisionCallback(CollisionEventCallback* ce_cb)
|
||||||
|
{
|
||||||
|
for (S32 i = 0; i < collision_callbacks.size(); i++)
|
||||||
|
if (collision_callbacks[i] == ce_cb)
|
||||||
|
return;
|
||||||
|
|
||||||
|
collision_callbacks.push_back(ce_cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShapeBase::unregisterCollisionCallback(CollisionEventCallback* ce_cb)
|
||||||
|
{
|
||||||
|
for (S32 i = 0; i < collision_callbacks.size(); i++)
|
||||||
|
if (collision_callbacks[i] == ce_cb)
|
||||||
|
{
|
||||||
|
collision_callbacks.erase(i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
//--------------------------------------------------------------------------
|
//--------------------------------------------------------------------------
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
DefineEngineMethod( ShapeBase, setHidden, void, ( bool show ),,
|
DefineEngineMethod( ShapeBase, setHidden, void, ( bool show ),,
|
||||||
|
|
|
||||||
|
|
@ -1860,6 +1860,18 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DECLARE_CALLBACK( F32, validateCameraFov, (F32 fov) );
|
DECLARE_CALLBACK( F32, validateCameraFov, (F32 fov) );
|
||||||
|
public:
|
||||||
|
class CollisionEventCallback
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void collisionNotify(SceneObject* shape0, SceneObject* shape1, const VectorF& vel)=0;
|
||||||
|
};
|
||||||
|
private:
|
||||||
|
Vector<CollisionEventCallback*> collision_callbacks;
|
||||||
|
void notifyCollisionCallbacks(SceneObject*, const VectorF& vel);
|
||||||
|
public:
|
||||||
|
void registerCollisionCallback(CollisionEventCallback*);
|
||||||
|
void unregisterCollisionCallback(CollisionEventCallback*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum {
|
enum {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue