public void StopCollide(WeaponDetachColliderComponent colliderComponent) { colliderComponent.Collider.enabled = false; Rigidbody rigidbody = colliderComponent.Rigidbody; rigidbody.isKinematic = true; rigidbody.detectCollisions = false; }
private Rigidbody DetachWeapon(TankNode tank, UnblockedWeaponNode weapon) { Rigidbody rigidbody = tank.rigidbody.Rigidbody; WeaponVisualRootComponent weaponVisualRoot = weapon.weaponVisualRoot; WeaponDetachColliderComponent weaponDetachCollider = weapon.weaponDetachCollider; GameObject gameObject = weapon.weaponVisualRoot.gameObject; if (weapon.Entity.HasComponent <DetachedWeaponComponent>()) { return(rigidbody); } gameObject.transform.parent = tank.assembledTank.AssemblyRoot.transform; gameObject.layer = Layers.TANK_AND_STATIC; weaponVisualRoot.VisualTriggerMarker.VisualTriggerMeshCollider.enabled = false; MeshCollider collider = weaponDetachCollider.Collider; collider.enabled = true; Rigidbody rigidbody2 = weaponDetachCollider.Rigidbody; Bounds bounds = collider.sharedMesh.bounds; Vector3 center = bounds.center; center.z = 0f; this.SetInertiaTensor(rigidbody2, bounds.size, center); rigidbody2.mass = rigidbody.mass / 10f; rigidbody2.maxAngularVelocity = rigidbody.maxAngularVelocity; rigidbody2.maxDepenetrationVelocity = 0f; rigidbody2.angularDrag = 2f; rigidbody2.drag = 0f; rigidbody2.SetVelocitySafe(rigidbody.velocity); rigidbody2.SetAngularVelocitySafe(rigidbody.angularVelocity); rigidbody2.interpolation = RigidbodyInterpolation.Interpolate; rigidbody2.isKinematic = false; rigidbody2.detectCollisions = true; weapon.Entity.AddComponent <DetachedWeaponComponent>(); return(rigidbody2); }