private void DirectSetStateFromCmd(VehicleEntity vehicle, IVehicleCmd cmd) { var vehicleCmd = (VehicleCmd)cmd; var body = vehicleCmd.Body; var controller = GetController(vehicle); SetRudderAnglesFromCmd(controller, vehicleCmd); VehicleDynamicPredictionUtility.SetControllerState(controller, body.Position, body.Rotation, body.LinearVelocity, body.AngularVelocity, controller.IsSleeping, 0); // var state = controller.GetShipState(); // // state.IsFlagSync = true; // // state.Position = vehicleCmd.Body.Position; // state.Rotation = vehicleCmd.Body.Rotation; // state.BodyState.Body2WorldPosition = vehicleCmd.Body.Body2WorldPosition; // state.BodyState.Body2WorldRotation = vehicleCmd.Body.Body2WorldRotation; // state.BodyState.LinearVelocity = vehicleCmd.Body.LinearVelocity; // state.BodyState.AngularVelocity = vehicleCmd.Body.AngularVelocity; // // var rudders = state.RudderStates; // for (int i = 0; i < vehicleCmd.SteerableCount; ++i) // { // var rudder = rudders[i]; // var shipSteerable = vehicleCmd.Steerables[i].Ship; // rudder.Angle = shipSteerable.Angle; // rudder.Rpm = shipSteerable.Rpm; // rudder.SpinVelocity = shipSteerable.SpinVelocity; // rudder.Submerged = shipSteerable.Submerged; // } // // controller.ApplyShipState(); }
private void SetControllerState(VehicleAbstractController controller, Vector3 position, Quaternion rotation, Vector3 linearVelocity, Vector3 angularVelocity, bool crashed, bool isSleeping, int sleepingOutSync) { controller.IsCrashed = crashed; VehicleDynamicPredictionUtility.SetControllerState(controller, position, rotation, linearVelocity, angularVelocity, isSleeping, sleepingOutSync); }
private void DynamicSyncFromComponentToController(VehicleEntity vehicle, VehicleAbstractInternState internalState) { var controller = GetController(vehicle); var state = VehicleDynamicPredictionUtility.MoveToState(controller, internalState); SetWheelAngleFromState(controller, internalState); SetWheelEntityInput(controller, internalState); SetControllerState(controller, state.Position, state.Rotation, state.LinearVelocity, state.AngularVelocity, state.Crashed, state.IsSleeping, state.SleepingOutSync); }
private void DynamicSyncFromComponentToDWP(VehicleEntity vehicle, ShipInternState internalState) { var controller = GetController(vehicle); var state = VehicleDynamicPredictionUtility.MoveToState(controller, internalState); SetRudderAnglesFromState(controller, internalState); SetShipInput(controller, internalState); VehicleDynamicPredictionUtility.SetControllerState(controller, state.Position, state.Rotation, state.LinearVelocity, state.AngularVelocity, state.IsSleeping, state.SleepingOutSync); }
private void DynamicPredictState(VehicleEntity vehicle, IVehicleCmd cmd) { var vehicleCmd = (VehicleCmd)cmd; var controller = GetController(vehicle); var state = VehicleDynamicPredictionUtility.MoveToState(controller, vehicleCmd); SetRudderAnglesFromCmd(controller, vehicleCmd); VehicleDynamicPredictionUtility.SetControllerState(controller, state.Position, state.Rotation, state.LinearVelocity, state.AngularVelocity, state.IsSleeping, state.SleepingOutSync); }