private static bool IsTransformSameWithComponent(VehicleCommonController controller, VehicleDynamicDataComponent data)
        {
            const float epsilon = 1e-6f;

            var     position     = controller.cachedTransform.position;
            var     dataPosition = data.Position;
            Vector3 deltaPosition;

            deltaPosition.x = position.x - dataPosition.x;
            deltaPosition.y = position.y - dataPosition.y;
            deltaPosition.z = position.z - dataPosition.z;

            if ((deltaPosition.x * deltaPosition.x + deltaPosition.y * deltaPosition.y +
                 deltaPosition.z * deltaPosition.z) > epsilon)
            {
                return(false);
            }

            var        rot     = controller.cachedTransform.rotation;
            var        dataRot = data.Rotation;
            Quaternion deltaRot;

            deltaRot.x = rot.x - dataRot.x;
            deltaRot.y = rot.y - dataRot.y;
            deltaRot.z = rot.z - dataRot.z;
            deltaRot.w = rot.w - dataRot.w;

            if ((deltaRot.x * deltaRot.x + deltaRot.y * deltaRot.y + deltaRot.z * deltaRot.z +
                 deltaRot.w * deltaRot.w) > epsilon)
            {
                return(false);
            }

            return(true);
        }
Exemple #2
0
 public static void InitController(VehicleCommonController controller, bool isServer, int vehicleId)
 {
     controller.VehicleId = vehicleId;
     SetControllerInterface(controller);
     if (isServer)
     {
         DisableEffectScripts(controller);
         controller.processContacts = false;
         controller.disableVisuals  = true;
     }
 }
Exemple #3
0
        private static VehicleDynamicState MoveToStateInternal(VehicleCommonController controller, VehicleDynamicState targetState)
        {
            if (controller.IsKinematic)
            {
                return(targetState);
            }

            var currentState = GetStateFromController(controller);

            //ShiftContactObject(vehicle, targetState.Position - currentState.Position);
            return(MoveToStateInternal(currentState, targetState));
        }
Exemple #4
0
        private static VehicleDynamicState GetStateFromController(VehicleCommonController controller)
        {
            var body  = controller.cachedRigidbody;
            var state = new VehicleDynamicState()
            {
                Position        = body.position,
                Rotation        = body.rotation,
                LinearVelocity  = body.velocity,
                AngularVelocity = body.angularVelocity,
                IsSleeping      = body.IsSleeping(),
                SleepingOutSync = controller.SleepingOutSync,
            };

            return(state);
        }
Exemple #5
0
        private static void DisableEffectScripts(VehicleCommonController controller)
        {
            var audioScript = controller.GetComponent <VehicleAbstractAudioPack>();

            if (audioScript != null)
            {
                audioScript.enabled = false;
            }

            var effectScripts = controller.GetComponents <VehicleEffectMonoBehavior>();

            foreach (var script in effectScripts)
            {
                script.enabled = false;
            }
        }
Exemple #6
0
        public static void SetControllerState(VehicleCommonController controller, Vector3 position, Quaternion rotation, Vector3 linearVelocity, Vector3 angularVelocity, bool isSleeping, int sleepingOutSync)
        {
            var isKinematic = controller.IsKinematic;

            controller.cachedRigidbody.position = position;
            controller.cachedRigidbody.rotation = rotation;
            if (!isKinematic)
            {
                controller.Velocity        = linearVelocity;
                controller.AngularVelocity = angularVelocity;
            }

            controller.SleepingOutSync = sleepingOutSync;
            if (isSleeping && !isKinematic)
            {
                controller.PutToSleepImmediate();
            }
        }
Exemple #7
0
 private static void SetControllerInterface(VehicleCommonController controller)
 {
     controller.GeneralGroundMaterial = SingletonManager.Get <TerrainManager>().GetCurrentTerrain();
     controller.WaterInterface        = SingletonManager.Get <VehicleWaterInterface>();
 }
Exemple #8
0
 public static VehicleDynamicState MoveToState(VehicleCommonController controller, VehicleInternState state)
 {
     return(MoveToStateInternal(controller, GetStateFromInternalState(state)));
 }
Exemple #9
0
 public static VehicleDynamicState MoveToState(VehicleCommonController controller, VehicleCmd cmd)
 {
     return(MoveToStateInternal(controller, GetStateFromCmd(cmd)));
 }