Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-----------------------------------------------------
- // Name:
- // First name:
- // Group: 1DAE.
- //-----------------------------------------------------
- #include "stdafx.h"
- //---------------------------
- // Includes
- //---------------------------
- #include "Elevator.h"
- //---------------------------
- // Defines
- //---------------------------
- //#define GAME_ENGINE (GameEngine::GetSingleton())
- //---------------------------
- // Constructor & Destructor
- //---------------------------
- Elevator::Elevator()
- {
- // actors
- m_ActElevatorFloorPtr = new PhysicsActor(ELEVATOR_FLOOR_POS, 0, BodyType::STATIC);
- m_ActElevatorFloorPtr->AddBoxShape(FLOOR_WIDTH, FLOOR_HEIGHT);
- m_ActElevatorPtr = new PhysicsActor(ELEVATOR_POS, 0, BodyType::DYNAMIC);
- m_ActElevatorPtr->AddBoxShape(ELEVATOR_WIDTH, ELEVATOR_HEIGHT);
- // joint
- m_PrismaJointPtr = new PhysicsPrismaticJoint(m_ActElevatorFloorPtr, DOUBLE2(0, 0), m_ActElevatorPtr, DOUBLE2(0, 0), DOUBLE2(0,-1), false);
- m_PrismaJointPtr->EnableJointLimits(true, ELEVATOR_LOWER_LIMIT, ELEVATOR_HIGHER_LIMIT);
- // trigger
- m_ActElevatorTriggerUpPtr = new PhysicsActor(ELEVATOR_UP_TRIGGER_POS, 0, BodyType::STATIC);
- m_ActElevatorTriggerUpPtr->AddBoxShape(TRIGGER_WIDTH, TRIGGER_HEIGHT);
- m_ActElevatorTriggerUpPtr->SetTrigger(true);
- m_ActElevatorTriggerUpPtr->AddContactListener(this);
- // trigger
- m_ActElevatorTriggerDownPtr = new PhysicsActor(ELEVATOR_DOWN_TRIGGER_POS, 0, BodyType::STATIC);
- m_ActElevatorTriggerDownPtr->AddBoxShape(TRIGGER_WIDTH, TRIGGER_HEIGHT);
- m_ActElevatorTriggerDownPtr->SetTrigger(true);
- m_ActElevatorTriggerDownPtr->AddContactListener(this);
- }
- Elevator::~Elevator()
- {
- }
- void Elevator::RegisterFriend(PhysicsActor *actFriendPtr)
- {
- m_FriendsArrayPtr.push_back(actFriendPtr);
- }
- //-------------------------------------------------------
- // ContactListener overloaded member function definitions
- //-------------------------------------------------------
- void Elevator::BeginContact(PhysicsActor *actThisPtr, PhysicsActor *actOtherPtr)
- {
- for (size_t i = 0; i < m_FriendsArrayPtr.size(); i++)
- {
- if (actOtherPtr == m_FriendsArrayPtr[i])
- {
- if (actThisPtr == m_ActElevatorTriggerUpPtr) m_PrismaJointPtr->EnableMotor(true, MOTOR_TARGET_SPEED, MOTOR_TORQUE);
- if (actThisPtr == m_ActElevatorTriggerDownPtr)
- {
- actOtherPtr->ApplyLinearImpulse(DOUBLE2(-1000, 2000));
- m_PrismaJointPtr->EnableMotor(true, -MOTOR_TARGET_SPEED, MOTOR_TORQUE);
- }
- }
- }
- }
- void Elevator::EndContact(PhysicsActor *actThisPtr, PhysicsActor *actOtherPtr)
- {
- }
- void Elevator::ContactImpulse(PhysicsActor *actThisPtr, double impulse)
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement