rendered paste bodyNxaJoint^ NxaRevoluteJointDescription::CreateJoint(NxScene* scenePtr)
{
NxRevoluteJointDesc revoluteDesc;
//JointDescription Stuff
revoluteDesc.actor[0] = Actor[0]->nxActor;
revoluteDesc.actor[1] = Actor[1]->nxActor;
revoluteDesc.localAnchor[0] = NxaMath::Vector3XNAToPhysX(LocalAnchor[0]);
revoluteDesc.localAnchor[1] = NxaMath::Vector3XNAToPhysX(LocalAnchor[1]);
revoluteDesc.localAxis[0] = NxaMath::Vector3XNAToPhysX(LocalAxis[0]);
revoluteDesc.localAxis[1] = NxaMath::Vector3XNAToPhysX(LocalAxis[1]);
revoluteDesc.localNormal[0] = NxaMath::Vector3XNAToPhysX(LocalNormal[0]);
revoluteDesc.localNormal[1] = NxaMath::Vector3XNAToPhysX(LocalNormal[1]);
revoluteDesc.maxForce = MaxForce;
revoluteDesc.maxTorque = MaxTorque;
revoluteDesc.jointFlags = (NxU32)JointFlags;
//RevoluteJointDescription Stuff
revoluteDesc.limit = Limit.ConvertToNative();
revoluteDesc.motor = Motor.ConvertToNative();
revoluteDesc.spring = Spring.ConvertToNative();
revoluteDesc.projectionDistance = ProjectionDistance;
revoluteDesc.projectionAngle = ProjectionAngle;
revoluteDesc.flags = (NxU32)Flags;
revoluteDesc.projectionMode = (NxJointProjectionMode)ProjectionMode;
NxJoint* jointPtr = scenePtr->createJoint(revoluteDesc);
return NxaJoint::CreateFromPointer(jointPtr);
}
// Reflector
internal override unsafe NxaJoint CreateJoint(NxScene* scenePtr)
{
NxRevoluteJointDesc revoluteDesc;
*((int*) &revoluteDesc) = &??_7NxJointDesc@@6B@;
*((int*) (&revoluteDesc + 4)) = 1;
int num8 = 0;
int num6 = ((int) &revoluteDesc) + 0x40;
int num5 = ((int) &revoluteDesc) + 0x10;
int num4 = ((int) &revoluteDesc) + 40;
do
{
(num8 * 4)[((int) &revoluteDesc) + 8] = 0;
num4[0] = 0f;
num4[4] = 0f;
num4[8] = 1f;
num5[0] = 1f;
num5[4] = 0f;
num5[8] = 0f;
num6[8] = 0f;
num6[4] = 0f;
num6[0] = 0f;
num8++;
num4 += 12;
num5 += 12;
num6 += 12;
}
while (num8 < 2);
*((float*) (&revoluteDesc + 0x58)) = float.MaxValue;
*((float*) (&revoluteDesc + 0x5c)) = float.MaxValue;
*((int*) (&revoluteDesc + 0x60)) = 0;
*((int*) (&revoluteDesc + 100)) = 0;
*((int*) (&revoluteDesc + 0x68)) = 2;
try
{
*((int*) &revoluteDesc) = &??_7NxRevoluteJointDesc@@6B@;
*((float*) (&revoluteDesc + 0x6c)) = 0f;
*((float*) (&revoluteDesc + 0x70)) = 0f;
*((float*) (&revoluteDesc + 0x74)) = 1f;
*((float*) (&revoluteDesc + 120)) = 0f;
*((float*) (&revoluteDesc + 0x7c)) = 0f;
*((float*) (&revoluteDesc + 0x80)) = 1f;
*((float*) (&revoluteDesc + 0x84)) = float.MaxValue;
*((float*) (&revoluteDesc + 0x88)) = 0f;
*((int*) (&revoluteDesc + 140)) = 0;
*((float*) (&revoluteDesc + 0x90)) = 0f;
*((float*) (&revoluteDesc + 0x94)) = 0f;
*((float*) (&revoluteDesc + 0x98)) = 0f;
int num7 = 0;
int num3 = ((int) &revoluteDesc) + 0x40;
int num2 = ((int) &revoluteDesc) + 0x10;
int num = ((int) &revoluteDesc) + 40;
do
{
(num7 * 4)[((int) &revoluteDesc) + 8] = 0;
num[0] = 0f;
num[4] = 0f;
num[8] = 1f;
num2[0] = 1f;
num2[4] = 0f;
num2[8] = 0f;
num3[8] = 0f;
num3[4] = 0f;
num3[0] = 0f;
num7++;
num += 12;
num2 += 12;
num3 += 12;
}
while (num7 < 2);
*((float*) (&revoluteDesc + 0x58)) = float.MaxValue;
*((float*) (&revoluteDesc + 0x5c)) = float.MaxValue;
*((int*) (&revoluteDesc + 0x60)) = 0;
*((int*) (&revoluteDesc + 100)) = 0;
*((int*) (&revoluteDesc + 0x68)) = 2;
*((float*) (&revoluteDesc + 0x9c)) = 1f;
*((float*) (&revoluteDesc + 160)) = 0.0872f;
*((int*) (&revoluteDesc + 0xa4)) = 0;
*((int*) (&revoluteDesc + 0xa8)) = 0;
}
fault
{
___CxxCallUnwindDtor(NxJointDesc.{dtor}, (void*) &revoluteDesc);
}
try
{
NxSpringDesc desc;
NxMotorDesc desc2;
NxJointLimitPairDesc desc3;
NxVec3 vec;
NxVec3 vec2;
NxVec3 vec3;
NxVec3 vec4;
NxVec3 vec5;
NxVec3 vec6;
NxaActor[] actor = base.Actor;
*((int*) (&revoluteDesc + 8)) = actor[0].nxActor;
*((int*) (&revoluteDesc + 12)) = actor[1].nxActor;
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr6 = NxaMath.Vector3XNAToPhysX(&vec6, ref base.LocalAnchor[0]);
*((float*) (&revoluteDesc + 0x40)) = vecPtr6[0];
*((float*) (&revoluteDesc + 0x44)) = vecPtr6[4];
*((float*) (&revoluteDesc + 0x48)) = vecPtr6[8];
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr5 = NxaMath.Vector3XNAToPhysX(&vec5, ref base.LocalAnchor[1]);
*((float*) (&revoluteDesc + 0x4c)) = vecPtr5[0];
*((float*) (&revoluteDesc + 80)) = vecPtr5[4];
*((float*) (&revoluteDesc + 0x54)) = vecPtr5[8];
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr4 = NxaMath.Vector3XNAToPhysX(&vec4, ref base.LocalAxis[0]);
*((float*) (&revoluteDesc + 40)) = vecPtr4[0];
*((float*) (&revoluteDesc + 0x2c)) = vecPtr4[4];
*((float*) (&revoluteDesc + 0x30)) = vecPtr4[8];
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr3 = NxaMath.Vector3XNAToPhysX(&vec3, ref base.LocalAxis[1]);
*((float*) (&revoluteDesc + 0x34)) = vecPtr3[0];
*((float*) (&revoluteDesc + 0x38)) = vecPtr3[4];
*((float*) (&revoluteDesc + 60)) = vecPtr3[8];
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr2 = NxaMath.Vector3XNAToPhysX(&vec2, ref base.LocalNormal[0]);
*((float*) (&revoluteDesc + 0x10)) = vecPtr2[0];
*((float*) (&revoluteDesc + 20)) = vecPtr2[4];
*((float*) (&revoluteDesc + 0x18)) = vecPtr2[8];
NxVec3 modopt(IsConst)* modopt(IsImplicitlyDereferenced) vecPtr = NxaMath.Vector3XNAToPhysX(&vec, ref base.LocalNormal[1]);
*((float*) (&revoluteDesc + 0x1c)) = vecPtr[0];
*((float*) (&revoluteDesc + 0x20)) = vecPtr[4];
*((float*) (&revoluteDesc + 0x24)) = vecPtr[8];
*((float*) (&revoluteDesc + 0x58)) = base.MaxForce;
*((float*) (&revoluteDesc + 0x5c)) = base.MaxTorque;
*((int*) (&revoluteDesc + 0x68)) = base.JointFlags;
NxJointLimitPairDesc* descPtr = this.Limit.ConvertToNative(&desc3);
memcpy(descPtr, (&revoluteDesc + 0x6c), 0x18);
NxaMotorDescription modopt(IsConst) motor = this.Motor;
float velocityTarget = motor.VelocityTarget;
float maxForce = motor.MaxForce;
int freeSpin = (int) motor.FreeSpin;
*((float*) &desc2) = velocityTarget;
*((float*) (&desc2 + 4)) = maxForce;
*((int*) (&desc2 + 8)) = freeSpin;
memcpy(&desc2, (&revoluteDesc + 0x84), 12);
NxaSpringDescription modopt(IsConst) spring = this.Spring;
float num11 = spring.Spring;
float damper = spring.Damper;
float targetValue = spring.TargetValue;
*((float*) &desc) = num11;
*((float*) (&desc + 4)) = damper;
*((float*) (&desc + 8)) = targetValue;
memcpy(&desc, (&revoluteDesc + 0x90), 12);
*((float*) (&revoluteDesc + 0x9c)) = this.ProjectionDistance;
*((float*) (&revoluteDesc + 160)) = this.ProjectionAngle;
*((int*) (&revoluteDesc + 0xa4)) = this.Flags;
*((int*) (&revoluteDesc + 0xa8)) = this.ProjectionMode;
return NxaJoint.CreateFromPointer((NxJoint*) **(((int*) scenePtr))[0x24](scenePtr, &revoluteDesc));
}
fault
{
___CxxCallUnwindDtor(NxRevoluteJointDesc.{dtor}, (void*) &revoluteDesc);
}
}