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); }
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; } }
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)); }
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); }
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; } }
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(); } }
private static void SetControllerInterface(VehicleCommonController controller) { controller.GeneralGroundMaterial = SingletonManager.Get <TerrainManager>().GetCurrentTerrain(); controller.WaterInterface = SingletonManager.Get <VehicleWaterInterface>(); }
public static VehicleDynamicState MoveToState(VehicleCommonController controller, VehicleInternState state) { return(MoveToStateInternal(controller, GetStateFromInternalState(state))); }
public static VehicleDynamicState MoveToState(VehicleCommonController controller, VehicleCmd cmd) { return(MoveToStateInternal(controller, GetStateFromCmd(cmd))); }