private void GetStateFromDynamicData(VehicleEntity vehicle, ShipInternState state) { var data = (ShipDynamicDataComponent)vehicle.GetDynamicData(); state.Flag = data.Flag; state.IsAccelerated = data.IsAccelerated; state.SteerInput = data.SteerInput; state.ThrottleInput = data.ThrottleInput; state.Position = data.Position.ShiftedVector3(); state.Rotation = data.Rotation; state.IsSleeping = data.IsSleeping; state.LinearVelocity = data.LinearVelocity; state.AngularVelocity = data.AngularVelocity; var indexArray = VehicleIndexHelper.GetRudderIndexArray(); for (int i = 0; i < indexArray.Length; ++i) { var index = indexArray[i]; if (ShipEntityUtility.HasRudder(vehicle, index)) { state.RudderStates[i] = GetRudderState(ShipEntityUtility.GetRudder(vehicle, index)); } } data.Clear(); }
public void SyncToComponent(VehicleEntity vehicle) { var state = GetCurrentState(vehicle); var data = vehicle.shipDynamicData; data.Flag = (int)VehicleFlag.LocalSet; data.IsAccelerated = state.IsAccelerated; data.SteerInput = state.RudderInput; data.ThrottleInput = state.ThrottleInput; data.Position = state.Position.ShiftedToFixedVector3(); data.Rotation = state.Rotation; data.IsSleeping = state.IsSleeping; data.LinearVelocity = state.BodyState.LinearVelocity; data.AngularVelocity = state.BodyState.AngularVelocity; var indexArray = VehicleIndexHelper.GetRudderIndexArray(); var rudderCount = GetController(vehicle).rudders.Count; for (int i = 0; i < rudderCount; ++i) { var index = indexArray[i]; if (ShipEntityUtility.HasRudder(vehicle, index)) { SetShipRudderState(vehicle, index, state.RudderStates[i]); } } }
private void SetShipRudderState(VehicleEntity vehicle, VehiclePartIndex index, RudderState state) { var rudder = ShipEntityUtility.GetRudder(vehicle, index); rudder.Angle = state.Angle; }