Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. //-----------------------------------------------------
  2. // Name:
  3. // First name:
  4. // Group: 1DAE.
  5. //-----------------------------------------------------
  6. #include "stdafx.h"
  7.  
  8. //---------------------------
  9. // Includes
  10. //---------------------------
  11. #include "Elevator.h"
  12.  
  13. //---------------------------
  14. // Defines
  15. //---------------------------
  16. //#define GAME_ENGINE (GameEngine::GetSingleton())
  17.  
  18. //---------------------------
  19. // Constructor & Destructor
  20. //---------------------------
  21. Elevator::Elevator()
  22. {
  23. // actors
  24. m_ActElevatorFloorPtr = new PhysicsActor(ELEVATOR_FLOOR_POS, 0, BodyType::STATIC);
  25. m_ActElevatorFloorPtr->AddBoxShape(FLOOR_WIDTH, FLOOR_HEIGHT);
  26.  
  27. m_ActElevatorPtr = new PhysicsActor(ELEVATOR_POS, 0, BodyType::DYNAMIC);
  28. m_ActElevatorPtr->AddBoxShape(ELEVATOR_WIDTH, ELEVATOR_HEIGHT);
  29.  
  30. // joint
  31. m_PrismaJointPtr = new PhysicsPrismaticJoint(m_ActElevatorFloorPtr, DOUBLE2(0, 0), m_ActElevatorPtr, DOUBLE2(0, 0), DOUBLE2(0,-1), false);
  32. m_PrismaJointPtr->EnableJointLimits(true, ELEVATOR_LOWER_LIMIT, ELEVATOR_HIGHER_LIMIT);
  33.  
  34.  
  35. // trigger
  36. m_ActElevatorTriggerUpPtr = new PhysicsActor(ELEVATOR_UP_TRIGGER_POS, 0, BodyType::STATIC);
  37. m_ActElevatorTriggerUpPtr->AddBoxShape(TRIGGER_WIDTH, TRIGGER_HEIGHT);
  38. m_ActElevatorTriggerUpPtr->SetTrigger(true);
  39. m_ActElevatorTriggerUpPtr->AddContactListener(this);
  40.  
  41. // trigger
  42. m_ActElevatorTriggerDownPtr = new PhysicsActor(ELEVATOR_DOWN_TRIGGER_POS, 0, BodyType::STATIC);
  43. m_ActElevatorTriggerDownPtr->AddBoxShape(TRIGGER_WIDTH, TRIGGER_HEIGHT);
  44. m_ActElevatorTriggerDownPtr->SetTrigger(true);
  45. m_ActElevatorTriggerDownPtr->AddContactListener(this);
  46. }
  47.  
  48. Elevator::~Elevator()
  49. {
  50.  
  51. }
  52.  
  53. void Elevator::RegisterFriend(PhysicsActor *actFriendPtr)
  54. {
  55. m_FriendsArrayPtr.push_back(actFriendPtr);
  56. }
  57.  
  58. //-------------------------------------------------------
  59. // ContactListener overloaded member function definitions
  60. //-------------------------------------------------------
  61. void Elevator::BeginContact(PhysicsActor *actThisPtr, PhysicsActor *actOtherPtr)
  62. {
  63. for (size_t i = 0; i < m_FriendsArrayPtr.size(); i++)
  64. {
  65. if (actOtherPtr == m_FriendsArrayPtr[i])
  66. {
  67. if (actThisPtr == m_ActElevatorTriggerUpPtr) m_PrismaJointPtr->EnableMotor(true, MOTOR_TARGET_SPEED, MOTOR_TORQUE);
  68. if (actThisPtr == m_ActElevatorTriggerDownPtr)
  69. {
  70. actOtherPtr->ApplyLinearImpulse(DOUBLE2(-1000, 2000));
  71. m_PrismaJointPtr->EnableMotor(true, -MOTOR_TARGET_SPEED, MOTOR_TORQUE);
  72. }
  73. }
  74. }
  75.  
  76. }
  77. void Elevator::EndContact(PhysicsActor *actThisPtr, PhysicsActor *actOtherPtr)
  78. {
  79.  
  80. }
  81. void Elevator::ContactImpulse(PhysicsActor *actThisPtr, double impulse)
  82. {
  83.  
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement