Example #1
0
        public void StopCollide(WeaponDetachColliderComponent colliderComponent)
        {
            colliderComponent.Collider.enabled = false;
            Rigidbody rigidbody = colliderComponent.Rigidbody;

            rigidbody.isKinematic      = true;
            rigidbody.detectCollisions = false;
        }
Example #2
0
        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);
        }