示例#1
0
        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();
        }
示例#2
0
        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]);
                }
            }
        }
示例#3
0
        private void SetShipRudderState(VehicleEntity vehicle, VehiclePartIndex index, RudderState state)
        {
            var rudder = ShipEntityUtility.GetRudder(vehicle, index);

            rudder.Angle = state.Angle;
        }