107 lines
1.8 KiB
C++
107 lines
1.8 KiB
C++
#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());
|
|
}
|
|
|
|
};
|
|
}
|
|
}
|