- #pragma once
- #include "stdafx.h"
- #include "Body.cpp"
- #include "JointDef.cpp"
- namespace Box2D
- {
- namespace Net
- {
- public ref class Joint
- {
- internal:
- b2Joint *joint;
- Joint(b2Joint *jointRef) : joint(jointRef) { }
- public:
- property JointType JointType
- {
- Box2D::Net::JointType get()
- {
- return (Box2D::Net::JointType) joint->GetType();
- }
- }
- property Body^ Body1
- {
- Body^ get()
- {
- return gcnew Body(joint->GetBody1());
- }
- }
- property Body^ Body2
- {
- Body^ get()
- {
- return gcnew Body(joint->GetBody2());
- }
- }
- property Vector^ Anchor1
- {
- Vector^ get()
- {
- return gcnew Vector(joint->GetAnchor1());
- }
- }
- property Vector^ Anchor2
- {
- Vector^ get()
- {
- return gcnew Vector(joint->GetAnchor2());
- }
- }
- Vector^ GetReactionForce()
- {
- return gcnew Vector(joint->GetReactionForce());
- }
- float32 GetReactionTorque()
- {
- return joint->GetReactionTorque();
- }
- Joint^ GetNext()
- {
- return gcnew Joint(joint->GetNext());
- }
- //TODO:
- /*
- void* GetUserData();
- */
- };
- public ref class MouseJoint : public Joint
- {
- internal:
- b2MouseJoint *mouseJoint;
- MouseJoint(b2MouseJoint *joint) : Joint(joint), mouseJoint(joint) { }
- public:
- MouseJoint(Joint^ joint) : Joint(joint->joint), mouseJoint(0)
- {
- if(joint->JointType == Box2D::Net::JointType::e_mouseJoint &&
- reinterpret_cast<b2MouseJoint *>(joint->joint))
- {
- mouseJoint = reinterpret_cast<b2MouseJoint *>(joint->joint);
- }
- else
- {
- throw gcnew System::Exception("Attempting to convert a Joint to a MouseJoint, "
- "but the joint is not a mouse joint.");
- }
- }
- void SetTarget(Vector^ Target)
- {
- mouseJoint->SetTarget(Target->getVec2());
- }
- };
- }
- }