protected override void UpdateShape(GameObject root) { Fix64Vec2 s = CalculateSize(); if (s != Fix64Vec2.zero) { Fix64Vec2[] scaled = new Fix64Vec2[convexVertsCount]; for (int i = 0; i < convexVertsCount; i++) { scaled[i] = convexVerts[i] * s; } Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } Parallel2D.UpdatePolygon(_shape, _fixture, scaled, convexVertsCount, center, angle); } }
public override PShape2D CreateShape(GameObject root) { Fix64 radius = CalculateRadius(); Fix64 height = CalculateHeight(); CalculatePoints(height, radius, ref v1, ref v2); if (v1 == Fix64Vec2.zero || v2 == Fix64Vec2.zero) { return(null); } else { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } return(Parallel2D.CreateCapsule(v1, v2, radius, center, angle)); } }
public static Fix64Quat FromEulerAngles(Fix64Vec3 value) { Fix64 yaw_y = Fix64.DegToRad(value.y); Fix64 pitch_x = Fix64.DegToRad(value.x); Fix64 roll_z = Fix64.DegToRad(value.z); return(Fix64Quat.FromYawPitchRoll(yaw_y, pitch_x, roll_z)); }
protected override void UpdateShape(GameObject root) { Fix64Vec2 s = CalculateSize(); if (s != Fix64Vec2.zero) { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } Parallel2D.UpdateBox(_shape, _fixture, s.x, s.y, center, angle); } }
protected override void UpdateShape(GameObject root) { Fix64 radius = CalculateRadius(); Fix64 height = CalculateHeight(); CalculatePoints(height, radius, ref v1, ref v2); if (v1 != Fix64Vec2.zero && v2 != Fix64Vec2.zero) { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } Parallel2D.UpdateCapsule(_shape, _fixture, v1, v2, radius, center, angle); } }
public override PShape2D CreateShape(GameObject root) { Fix64Vec2 s = CalculateSize(); if (s != Fix64Vec2.zero) { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } return(Parallel2D.CreateBox(s.x, s.y, center, angle)); } else { return(null); } }
public override PShape2D CreateShape(GameObject root) { Fix64Vec2 s = CalculateSize(); if (s != Fix64Vec2.zero) { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } if (s == Fix64Vec2.one) { return(Parallel2D.CreatePolygon(convexVerts, convexVertsCount, center, angle)); } else { Fix64Vec2[] scaled = new Fix64Vec2[convexVertsCount]; for (int i = 0; i < convexVertsCount; i++) { scaled[i] = convexVerts[i] * s; } return(Parallel2D.CreatePolygon(scaled, convexVertsCount, center, angle)); } } else { return(null); } }
void UpdateRigidbodyTransform() { if (_rigidbody2D == null) { _rigidbody2D = GetComponent <ParallelRigidbody2D>(); } if (_rigidbody3D == null) { _rigidbody3D = GetComponent <ParallelRigidbody3D>(); } if (_rigidbody2D != null) { Parallel2D.UpdateBodyTransForm(_rigidbody2D._body2D, (Fix64Vec2)_localPosition, Fix64.DegToRad(_internalLocalEularAngles.z)); } if (_rigidbody3D != null) { Parallel3D.UpdateBodyTransForm(_rigidbody3D._body3D, _localPosition, _internalLocalRotation); } }