/** * @brief Destroys a GameObject in a deterministic way. * * The method {@link #DestroyFPRigidBody} is called and attached FrameSyncBehaviors are disabled. * * @param rigidBody Instance of a {@link FPRigidBody} **/ public static void SyncedDestroy(GameObject go, float delayTime = 0.0f) { if (instance != null /*&& instance.lockstep != null*/) { SyncedDisableBehaviour(go); FPCollider[] tsColliders = go.GetComponentsInChildren <FPCollider>(); if (tsColliders != null) { for (int index = 0, length = tsColliders.Length; index < length; index++) { FPCollider tsCollider = tsColliders[index]; DestroyFPRigidBody(tsCollider.gameObject, tsCollider.Body); } } FPCollider2D[] tsColliders2D = go.GetComponentsInChildren <FPCollider2D>(); if (tsColliders2D != null) { for (int index = 0, length = tsColliders2D.Length; index < length; index++) { FPCollider2D tsCollider2D = tsColliders2D[index]; DestroyFPRigidBody(tsCollider2D.gameObject, tsCollider2D.Body); } } RemoveSyncBehaviour(go); Destroy(go, delayTime); } }
/** * @brief Removes objets related to a provided player. * * @param playerId Target player's id. **/ public static void RemovePlayer(int playerId) { if (instance != null /*&& instance.lockstep != null*/) { List <FrameSyncManagedBehaviour> behaviorsList = instance.behaviorsByPlayer[playerId]; for (int index = 0, length = behaviorsList.Count; index < length; index++) { FrameSyncManagedBehaviour tsmb = behaviorsList[index]; tsmb.disabled = true; FPCollider[] tsColliders = ((FrameSyncBehaviour)tsmb.FrameSyncBehavior).gameObject.GetComponentsInChildren <FPCollider>(); if (tsColliders != null) { for (int index2 = 0, length2 = tsColliders.Length; index2 < length2; index2++) { FPCollider tsCollider = tsColliders[index2]; if (!tsCollider.Body.TSDisabled) { DestroyFPRigidBody(tsCollider.gameObject, tsCollider.Body); } } } FPCollider2D[] tsCollider2Ds = ((FrameSyncBehaviour)tsmb.FrameSyncBehavior).gameObject.GetComponentsInChildren <FPCollider2D>(); if (tsCollider2Ds != null) { for (int index2 = 0, length2 = tsCollider2Ds.Length; index2 < length2; index2++) { FPCollider2D tsCollider2D = tsCollider2Ds[index2]; if (!tsCollider2D.Body.TSDisabled) { DestroyFPRigidBody(tsCollider2D.gameObject, tsCollider2D.Body); } } } } instance.behaviorsByPlayer.Remove(playerId); } }
public FPRaycastHit2D(FPCollider2D collider) { this.collider = collider; this.rigidbody = collider.GetComponent <FPRigidBody2D>(); this.transform = collider.GetComponent <FPTransform2D>(); }
/*public Action<FP> trigger; * * public void OnFixedTriggerEnter(FPCollision2D other) * { * * trigger.Invoke(other.collider._body.FPPosition.x); * } * * public void OnFixedTriggerExit() * { * trigger.Invoke(0); * }*/ public FP GetPosOfOther() { FPCollider2D hold = FPPhysics2D.OverlapBox(box.Center + box.FPTransform.position, box.size, box.FPTransform.rotation, this.gameObject.layer); return((hold != null) ? hold.FPTransform.position.x : FP.Zero); }