/** * @brief Initializes internal properties based on whether there is a {@link TSCollider2D} attached. **/ public void Initialize() { if (initialized) { return; } tsCollider = GetComponent <FPCollider2D>(); if (transform.parent != null) { tsParent = transform.parent.GetComponent <FPTransform2D>(); } if (!_serialized) { UpdateEditMode(); } if (tsCollider != null) { if (tsCollider.IsBodyInitialized) { tsCollider.Body.TSPosition = _position + scaledCenter; tsCollider.Body.TSOrientation = _rotation * FP.Deg2Rad; } } else { StateTracker.AddTracking(this); } initialized = true; }
internal void Update(GameObject otherGO, Physics2D.Contact c) { if (this.gameObject == null) { this.gameObject = otherGO; this.collider = this.gameObject.GetComponent <FPCollider2D>(); this.rigidbody = this.gameObject.GetComponent <FPRigidBody2D>(); this.transform = this.collider.FPTransform; } if (c != null) { if (contacts[0] == null) { contacts[0] = new TSContactPoint2D(); } FPVector2 normal; Physics2D.FixedArray2 <FPVector2> points; c.GetWorldManifold(out normal, out points); contacts[0].normal = normal; contacts[0].point = points[0]; this.relativeVelocity = c.CalculateRelativeVelocity(); } }
private static void InitializeGameObject(GameObject go, FPVector position, FPQuaternion rotation) { ICollider[] tsColliders = go.GetComponentsInChildren <ICollider>(); if (tsColliders != null) { for (int index = 0, length = tsColliders.Length; index < length; index++) { PhysicsManager.instance.AddBody(tsColliders[index]); } } FPTransform rootFPTransform = go.GetComponent <FPTransform>(); if (rootFPTransform != null) { rootFPTransform.Initialize(); rootFPTransform.position = position; rootFPTransform.rotation = rotation; } FPTransform[] FPTransforms = go.GetComponentsInChildren <FPTransform>(); if (FPTransforms != null) { for (int index = 0, length = FPTransforms.Length; index < length; index++) { FPTransform FPTransform = FPTransforms[index]; if (FPTransform != rootFPTransform) { FPTransform.Initialize(); } } } FPTransform2D rootFPTransform2D = go.GetComponent <FPTransform2D>(); if (rootFPTransform2D != null) { rootFPTransform2D.Initialize(); rootFPTransform2D.position = new FPVector2(position.x, position.y); rootFPTransform2D.rotation = rotation.ToQuaternion().eulerAngles.z; } FPTransform2D[] FPTransforms2D = go.GetComponentsInChildren <FPTransform2D>(); if (FPTransforms2D != null) { for (int index = 0, length = FPTransforms2D.Length; index < length; index++) { FPTransform2D FPTransform2D = FPTransforms2D[index]; if (FPTransform2D != rootFPTransform2D) { FPTransform2D.Initialize(); } } } }
/** * @brief Creates a new {@link FPRigidBody} when there is no one attached to this GameObject. **/ public void Awake() { FPTransform = this.GetComponent <FPTransform2D>(); FPRigidBody = this.GetComponent <FPRigidBody2D>(); if (lossyScale == FPVector.one) { lossyScale = FPVector.Abs(transform.localScale.ToFPVector()); } }