ConnectorProxy.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #include "ConnectorProxy.h"
  2. #include "PhysicsScene.h"
  3. ConnectorProxy::ConnectorProxy(PhysicsScene& scene, IPhysRigidBody * left, IPhysRigidBody * right, float brokeForce) :
  4. IPhysRigidBodyConnector(&scene),
  5. IProxy(scene),
  6. m_realConn(NULL),
  7. m_left(left),
  8. m_right(right),
  9. m_brokeForce(brokeForce),
  10. m_eventHandler(NULL)
  11. {
  12. if (left) left->AddRef();
  13. if (right) right->AddRef();
  14. }
  15. ConnectorProxy::~ConnectorProxy(void)
  16. {
  17. if (m_realConn)
  18. m_realConn->Release(), m_realConn = NULL;
  19. if (m_left) m_left->Release();
  20. if (m_right) m_right->Release();
  21. }
  22. void ConnectorProxy::SetEventHandler(BrokeEvent * event)
  23. {
  24. m_eventHandler = event;
  25. }
  26. bool ConnectorProxy::Release()
  27. {
  28. return IProxy::AddReleaseCount();
  29. //m_bReleaseCall = true;
  30. //return false;
  31. }
  32. void ConnectorProxy::OnSyncCreate()
  33. {
  34. if (m_realConn)
  35. return;
  36. m_realConn = NEW PhysRigidBodyConnector(GetFileName(), GetFileLine(), &m_scene, m_left, m_right, m_brokeForce);
  37. Assert(m_realConn);
  38. SetRealPhysObject(m_realConn);
  39. /*PhysInternal internals;
  40. m_realConn->GetInternals(internals);
  41. internals.actor->userData = (IPhysBase*)this;*/
  42. }
  43. void ConnectorProxy::OnSyncCalls()
  44. {
  45. if (m_eventHandler)
  46. m_realConn->SetEventHandler(m_eventHandler);
  47. }
  48. bool ConnectorProxy::OnSyncRelease()
  49. {
  50. return IProxy::ReleaseCounts(this);
  51. //if (m_bReleaseCall)
  52. // return IPhysBase::Release();
  53. //return false;
  54. }
  55. void ConnectorProxy::OnSyncTrace()
  56. {
  57. }