NxaJoint^ 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); } }