Exemplo n.º 1
0
        public DeloreanManager(Vehicle vehicle)
        {
            Vehicle = vehicle;

            rpmNeedle     = new AnimateProp(Vehicle, "dmc12_rpm_needle", "rpm_needle");
            speedNeedle   = new AnimateProp(Vehicle, "dmc12_speed_needle", "speed_needle");
            fuelNeedle    = new AnimateProp(Vehicle, "dmc12_fuel_needle", "fuel_needle");
            tempNeedle    = new AnimateProp(Vehicle, "dmc12_temperature_needle", "temperature_needle");
            oilNeedle     = new AnimateProp(Vehicle, "dmc12_oil_needle", "oil_needle");
            voltNeedle    = new AnimateProp(Vehicle, "dmc12_voltage_needle", "voltage_needle");
            doorIndicator = new AnimateProp(Vehicle, "dmc12_door_indicator", Vector3.Zero, Vector3.Zero);
            leftFan       = new AnimateProp(Vehicle, ModelHandler.RadiatorFan, "radiator_fan_l");
            rightFan      = new AnimateProp(Vehicle, ModelHandler.RadiatorFan, "radiator_fan_r");

            suspensionLeftFront  = new AnimateProp(Vehicle, ModelHandler.SuspensionFront, "suspension_lf");
            suspensionLeftRear   = new AnimateProp(Vehicle, ModelHandler.SuspensionRear, "suspension_lr");
            suspensionRightFront = new AnimateProp(Vehicle, ModelHandler.SuspensionRightFront, "suspension_rf");
            suspensionRightRear  = new AnimateProp(Vehicle, ModelHandler.SuspensionRightRear, "suspension_rr");

            rpmNeedle.SpawnProp();
            speedNeedle.SpawnProp();
            fuelNeedle.SpawnProp();
            tempNeedle.SpawnProp();
            oilNeedle.SpawnProp();
            voltNeedle.SpawnProp();
            doorIndicator.SpawnProp();
            leftFan.SpawnProp();
            rightFan.SpawnProp();

            suspensionLeftFront.SpawnProp();
            suspensionLeftRear.SpawnProp();
            suspensionRightFront.SpawnProp();
            suspensionRightRear.SpawnProp();
        }
Exemplo n.º 2
0
        public SpeedoHandler(TimeCircuits circuits) : base(circuits)
        {
            //speedoProp = new AnimateProp(Vehicle, ModelHandler.BTTFSpeedo, new Vector3(-0.2543122f, 0.3725779f, 0.7174588f), Vector3.Zero);
            _compass           = new AnimateProp(Vehicle, ModelHandler.Compass, "bttf_compass");
            speedoProp         = new AnimateProp(Vehicle, ModelHandler.BTTFSpeedo, "bttf_speedo");
            _speedoRt          = new RenderTarget(ModelHandler.BTTFSpeedo, "bttf_speedo");
            _speedoRtScaleform = new ScaleformGui("bttf_3d_speedo")
            {
                DrawInPauseMenu = true
            };

            _speedBeep                 = circuits.AudioEngine.Create("general/speedoTick.wav", Presets.Interior);
            _speedBeep.Volume          = 1f;
            _speedBeep.MinimumDistance = 0.3f;
            _speedBeep.SourceBone      = "bttf_speedo";

            _speedoRt.OnRenderTargetDraw += () =>
            {
                var aspectRatio = Screen.Resolution.Width / (float)Screen.Resolution.Height;

                _speedoRtScaleform.Render2D(new PointF(0.5f, 0.5f), new SizeF(0.9f, 0.9f));
            };

            speedoProp.SpawnProp();

            UpdateGUI(GUI, "8", "8");
        }
        public PlutoniumRefillPlayer(TimeCircuits circuits)
        {
            Circuits = circuits;

            plutoniumCap = new AnimateProp(Circuits.Vehicle, ModelHandler.RequestModel(ModelHandler.BTTFReactorCap), "bttf_reactorcap");
            plutoniumCap.SpawnProp();
        }
Exemplo n.º 4
0
 public override void Stop()
 {
     _hoodboxLights?.DeleteProp();
     _hoodboxLights = null;
     _state         = false;
     _applyAlpha    = false;
     _alphaLevel    = 0;
 }
        public CoilsIndicatorHandler(TimeCircuits circuits) : base(circuits)
        {
            _leftIndicatorProp = new AnimateProp(Vehicle, ModelHandler.CoilsIndicatorLeft,
                                                 Vector3.Zero, Vector3.Zero);

            _rightIndicatorProp = new AnimateProp(Vehicle, ModelHandler.CoilsIndicatorRight,
                                                  Vector3.Zero, Vector3.Zero);
        }
Exemplo n.º 6
0
        public SparkPlayer(Vehicle vehicle, IEnumerable <Vector3> frames, Model model, float speed = 20f)
        {
            Vehicle = vehicle;

            _frames = frames.ToList();
            _spark  = new AnimateProp(Vehicle, model, _frames[0], Vector3.Zero);

            Speed = speed;
        }
Exemplo n.º 7
0
        public TFCHandler(TimeCircuits circuits) : base(circuits)
        {
            tfcOn = new AnimateProp(Vehicle, ModelHandler.TFCOn, Vector3.Zero, Vector3.Zero);
            tfcOff = new AnimateProp(Vehicle, ModelHandler.TFCOff, Vector3.Zero, Vector3.Zero);
            tfcHandle = new AnimateProp(Vehicle, ModelHandler.TFCHandle, new Vector3(-0.03805999f, -0.0819466f, 0.5508024f), Vector3.Zero);
            tfcHandle.SpawnProp(false);

            TimeCircuits.OnTimeCircuitsToggle += OnTimeCircuitsToggle;
        }   
Exemplo n.º 8
0
        public TimeTravelHandler(TimeCircuits circuits) : base(circuits)
        {
            _lightExplosion   = new PtfxEntityPlayer("scr_josh3", "scr_josh3_light_explosion", Vehicle, Vector3.Zero, Vector3.Zero, 4f);
            _timeTravelEffect = new PtfxEntityPlayer("core", "veh_exhaust_spacecraft", Vehicle, new Vector3(0, 4, 0), Vector3.Zero, 8f, true);
            _whiteSphere      = new AnimateProp(Vehicle, ModelHandler.WhiteSphere, Vector3.Zero, Vector3.Zero)
            {
                Duration = 0.25f
            };

            LoadRes();
        }
Exemplo n.º 9
0
        public TCDHandler(TimeCircuits circuits) : base(circuits)
        {
            destinationSlot = new TCDSlot("red", GUI, circuits);
            destinationSlot.SetVisible(false);

            presentSlot = new TCDSlot("green", GUI, circuits);
            presentSlot.SetVisible(false);

            previousSlot = new TCDSlot("yellow", GUI, circuits);
            previousSlot.SetVisible(false);

            beep          = circuits.AudioEngine.Create("general/timeCircuits/beep.wav", Presets.Interior);
            fluxCapacitor = circuits.AudioEngine.Create("general/fluxCapacitor.wav", Presets.InteriorLoop);

            fluxCapacitor.Volume = 0.1f;

            fluxCapacitor.MinimumDistance = 0.5f;
            beep.MinimumDistance          = 0.3f;
            fluxCapacitor.SourceBone      = "flux_capacitor";
            beep.SourceBone = "bttf_tcd_green";

            tickingDiodes    = new AnimateProp(circuits.Delorean, ModelHandler.TickingDiodes, Vector3.Zero, Vector3.Zero);
            tickingDiodesOff = new AnimateProp(circuits.Delorean, ModelHandler.TickingDiodesOff, Vector3.Zero, Vector3.Zero);
            tickingDiodesOff.SpawnProp();

            TimeCircuits.OnTimeCircuitsToggle    += OnTimeCircuitsToggle;
            TimeCircuits.OnDestinationDateChange += OnDestinationDateChange;
            TimeCircuits.OnScaleformPriority     += OnScaleformPriority;

            TimeCircuits.OnTimeTravel         += OnTimeTravel;
            TimeCircuits.OnTimeTravelComplete += OnTimeTravelComplete;

            int _time = 0;

            for (int i = 0; i < 7; i++)
            {
                glitchEvents.Add(0, 0, _time, 0, 0, _time + 499);
                glitchEvents.Last.OnExecute += Blank_OnExecute;

                _time += 500;

                glitchEvents.Add(0, 0, _time, 0, 0, _time + 199);
                glitchEvents.Last.OnExecute += RandomDate_OnExecute;

                _time += 200;

                glitchEvents.Add(0, 0, _time, 0, 0, _time + 499);
                glitchEvents.Last.OnExecute += ErrorDate_OnExecute;

                _time += 500;
            }
        }
Exemplo n.º 10
0
        public GMCVanHandler(Vehicle vehicle)
        {
            Vehicle = vehicle;

            Open = false;

            finalRamp    = new AnimateProp(vehicle, ModelHandler.GMCVanRamps, "ramps_bone");
            rampSupports = new AnimateProp(vehicle, ModelHandler.GMCVanSupports, "supports_bone");

            finalRamp.SpawnProp(Vector3.Zero, finalRampRot);
            rampSupports.SpawnProp(Vector3.Zero, rampSupportsRot);

            //rampOpeningSound = new AudioPlayer($"VanOpening.wav", false);
        }
        public PrestoLogsHandler(TimeCircuits circuits) : base(circuits)
        {
            ModelHandler.RequestModel(ModelHandler.GreenPrestoLogProp);
            ModelHandler.RequestModel(ModelHandler.YellowPrestoLogProp);
            ModelHandler.RequestModel(ModelHandler.RedPrestoLogProp);

            greenLog = new AnimateProp(Vehicle, ModelHandler.GreenPrestoLogProp, "seat_pside_f");
            greenLog.SpawnProp(greenOffset, logsRotation);

            yellowLog = new AnimateProp(Vehicle, ModelHandler.YellowPrestoLogProp, "seat_pside_f");
            yellowLog.SpawnProp(yellowOffset, logsRotation);

            redLog = new AnimateProp(Vehicle, ModelHandler.RedPrestoLogProp, "seat_pside_f");
            redLog.SpawnProp(redOffset, logsRotation);
        }
Exemplo n.º 12
0
        public HerbieProps(Herbie herbie)
        {
            Herbie = herbie;
            Entity = herbie.Vehicle;

            EnginePulley = new AnimateProp(ModelHandler.EnginePulley, Entity, "engine_pulley_dummy", Vector3.Zero, Vector3.Zero);
            EnginePulley[AnimationType.Rotation][AnimationStep.First][Coordinate.Y].Setup(true, false, true, 0, 360, 1, 90, 1);
            EnginePulley[AnimationType.Rotation][AnimationStep.First][Coordinate.Y].DoNotInvert = true;

            TimingPulley = new AnimateProp(ModelHandler.TimingPulley, Entity, "timing_pulley_dummy", Vector3.Zero, Vector3.Zero);
            TimingPulley[AnimationType.Rotation][AnimationStep.First][Coordinate.Y].Setup(true, false, true, 0, 360, 1, 180, 1);
            TimingPulley[AnimationType.Rotation][AnimationStep.First][Coordinate.Y].DoNotInvert = true;

            FuelNeedle  = new AnimateProp(ModelHandler.FuelNeedle, Entity, "1963beetle_fuel_needle_dummy", Vector3.Zero, Vector3.Zero);
            SpeedNeedle = new AnimateProp(ModelHandler.SpeedNeedle, Entity, "1963beetle_speed_needle_dummy", Vector3.Zero, Vector3.Zero);
        }
        public MrFusionRefillPlayer(TimeCircuits circuits)
        {
            Circuits = circuits;

            _mrFusion = new AnimateProp(Circuits.Vehicle, ModelHandler.RequestModel(ModelHandler.BTTFMrFusion), "mr_fusion");
            _mrFusion.SpawnProp();

            _mrFusionHandle = new AnimateProp(Circuits.Vehicle, ModelHandler.RequestModel(ModelHandler.BTTFMrFusionHandle), "mr_fusion_handle");
            _mrFusionHandle.SpawnProp();

            _mrfusionOpen   = circuits.AudioEngine.Create("general/mrfusionOpen.wav", Presets.Exterior);
            _mrfusionClosed = circuits.AudioEngine.Create("general/mrfusionClose.wav", Presets.Exterior);

            _mrfusionOpen.Volume   = 0.4f;
            _mrfusionClosed.Volume = 0.4f;
        }
Exemplo n.º 14
0
        public TCDSlot(string slotType, TimeCircuitsScaleform scaleform, TimeCircuits circuits)
        {
            SlotType     = slotType;
            ScreenTCD    = scaleform;
            TimeCircuits = circuits;
            Scaleform    = new TCDRowScaleform(slotType);
            RenderTarget = new RenderTarget(new Model("bttf_3d_row_" + slotType), "bttf_tcd_row_" + slotType, circuits.Vehicle, offsets[slotType], new Vector3(355.9951f, 0.04288517f, 352.7451f));
            RenderTarget.CreateProp();
            Scaleform.DrawInPauseMenu = true;

            amProp = new AnimateProp(circuits.Delorean, new Model($"bttf_{slotType}_am"), Vector3.Zero, Vector3.Zero);
            pmProp = new AnimateProp(circuits.Delorean, new Model($"bttf_{slotType}_pm"), Vector3.Zero, Vector3.Zero);

            RenderTarget.OnRenderTargetDraw += OnRenderTargetDraw;

            date = new DateTime();
        }
Exemplo n.º 15
0
        private void LoadLights(bool force = false)
        {
            if (!force && _isNight == Utils.IsNight())
            {
                return;
            }

            _isNight = Utils.IsNight();

            _hoodboxLights?.Dispose();

            if (_isNight)
            {
                _hoodboxLights = new AnimateProp(Vehicle, ModelHandler.HoodboxLightsNight, "bonnet");
            }
            else
            {
                _hoodboxLights = new AnimateProp(Vehicle, ModelHandler.HoodboxLights, "bonnet");
            }
        }
        private void ReloadWheelModels()
        {
            if (_roadWheel == TimeCircuits.Delorean.Mods.Wheel)
            {
                return;
            }

            leftWheelProps.ForEach(x => x?.DeleteProp());
            leftWheelProps.Clear();

            rightWheelProps.ForEach(x => x?.DeleteProp());
            rightWheelProps.Clear();

            _roadWheel = TimeCircuits.Delorean.IsStockWheel ? WheelType.Stock : WheelType.Red;

            Model modelWheel     = _roadWheel == WheelType.Stock ? ModelHandler.WheelProp : ModelHandler.RedWheelProp;
            Model modelWheelRear = _roadWheel == WheelType.Stock ? ModelHandler.RearWheelProp : ModelHandler.RedWheelProp;

            foreach (var wheel in Utils.GetWheelPositions(vehicle))
            {
                string  wheelName  = wheel.Key;
                Vector3 offset     = wheel.Value;
                bool    leftWheel  = (wheelName.Contains("lf") || wheelName.Contains("lr"));
                bool    frontWheel = (wheelName.Contains("lf") || wheelName.Contains("rf"));

                Model wheelModel = !frontWheel ? modelWheelRear : modelWheel;

                ModelHandler.RequestModel(wheelModel);

                AnimateProp wheelAnimateProp = new AnimateProp(vehicle, wheelModel, offset, Vector3.Zero);

                if (leftWheel)
                {
                    leftWheelProps.Add(wheelAnimateProp);
                }
                else
                {
                    rightWheelProps.Add(wheelAnimateProp);
                }
            }
        }
Exemplo n.º 17
0
        public FlyingHandler(TimeCircuits circuits) : base(circuits)
        {
            if (Mods.HoverUnderbody == ModState.On)
            {
                LoadWheelAnim();
            }

            _flyOn      = circuits.AudioEngine.Create("bttf2/hover/toHover.wav", Presets.Exterior);
            _flyOff     = circuits.AudioEngine.Create("bttf2/hover/toRegular.wav", Presets.Exterior);
            _upSound    = circuits.AudioEngine.Create("bttf2/hover/hoverUp.wav", Presets.Exterior);
            _boostSound = circuits.AudioEngine.Create("bttf2/hover/boost.wav", Presets.Exterior);

            foreach (var wheelPos in Utils.GetWheelPositions(Vehicle))
            {
                var ptfx = new PtfxEntityPlayer("cut_trevor1", "cs_meth_pipe_smoke", Vehicle, wheelPos.Value, new Vector3(-90, 0, 0), 7f);
                _smokeParticles.Add(ptfx);
            }

            for (int i = 1; i < 6; i++)
            {
                if (!ModelHandler.UnderbodyLights.TryGetValue(i, out var model))
                {
                    continue;
                }

                ModelHandler.RequestModel(model);
                var prop = new AnimateProp(Vehicle, model, Vector3.Zero, Vector3.Zero);
                _underbodyLights.Add(prop);
            }

            _flyModeInput = new NativeInput((GTA.Control) 357);
            _flyModeInput.OnControlLongPressed += OnFlyModeControlJustPressed;

            _hoverGlowing = new AnimateProp(Vehicle, ModelHandler.RequestModel(ModelHandler.HoverGlowing), Vector3.Zero, Vector3.Zero)
            {
                Duration = 1.7f
            };

            ventGlowing = new AnimateProp(Vehicle, ModelHandler.RequestModel(ModelHandler.VentGlowing), Vector3.Zero, Vector3.Zero);
        }
Exemplo n.º 18
0
        public void LoadRes()
        {
            _refuelPlayer?.Dispose();
            _emptySound?.Dispose();
            _refuelSound?.Dispose();

            if (Mods.Reactor == ReactorType.Nuclear)
            {
                _refuelPlayer = new PlutoniumRefillPlayer(TimeCircuits);
                _emptySound   = TimeCircuits.AudioEngine.Create("bttf1/timeCircuits/plutoniumEmpty.wav", Presets.Interior);
                _refuelSound  = TimeCircuits.AudioEngine.Create("bttf1/refuel.wav", Presets.Exterior);

                _emptySound.SourceBone = "bttf_tcd_green";
            }
            else
            {
                _refuelPlayer = new MrFusionRefillPlayer(TimeCircuits);
            }

            _emptyGlowing = new AnimateProp(Vehicle, ModelHandler.RequestModel(ModelHandler.Empty), Vector3.Zero, Vector3.Zero);
            _emptyOff     = new AnimateProp(Vehicle, ModelHandler.RequestModel(ModelHandler.EmptyOff), Vector3.Zero, Vector3.Zero);
        }
Exemplo n.º 19
0
        public WormholeAnimationPlayer(TimeCircuits circuits, int maxTime = 4350)
        {
            _wheelPtfxes = new List <PtfxEntityPlayer>();

            TimeCircuits = circuits;
            MaxTime      = maxTime;

            string wormholeScaleformName    = "bttf_wormhole_scaleform"; // default
            string wormholeRenderTargetName = "bttf_wormhole";           // default

            switch (circuits.DeloreanType)
            {
            case DeloreanType.BTTF1:

                SetupWheelPTFXs("veh_xs_vehicle_mods", "veh_nitrous", new Vector3(0, -0.25f, -0.15f), new Vector3(0, 0, 0), 1.3f);

                _wormholeModel           = ModelHandler.WormholeViolet;
                _wormholeNightModel      = ModelHandler.WormholeVioletNight;
                _sparkModel              = ModelHandler.SparkModel;
                _sparkNightModel         = ModelHandler.SparkNightModel;
                wormholeScaleformName    = "bttf_wormhole_scaleform";
                wormholeRenderTargetName = "bttf_wormhole";
                break;

            case DeloreanType.BTTF2:

                _wormholeModel           = ModelHandler.WormholeBlue;
                _wormholeNightModel      = ModelHandler.WormholeBlueNight;
                _sparkModel              = ModelHandler.SparkModel;
                _sparkNightModel         = ModelHandler.SparkNightModel;
                wormholeScaleformName    = "bttf_wormhole_scaleform_blue";
                wormholeRenderTargetName = "bttf_wormhole_blue";
                break;

            case DeloreanType.BTTF3:

                SetupWheelPTFXs("veh_xs_vehicle_mods", "veh_nitrous", new Vector3(0, -0.25f, -0.15f), new Vector3(0, 0, 0), 1.3f);
                SetupWheelPTFXs("des_bigjobdrill", "ent_ray_big_drill_start_sparks", new Vector3(0, 0, 0.18f), new Vector3(90f, 0, 0), 1f, true);

                _sparkProp = new AnimateProp(TimeCircuits.Vehicle, ModelHandler.InvisibleProp, new Vector3(0, 3.4f, -0.6f), new Vector3(0, 0, 180));
                _sparkProp.SpawnProp();

                _sparkPTFX = new PtfxEntityPlayer("scr_paletoscore", "scr_paleto_box_sparks", _sparkProp.Prop, Vector3.Zero, Vector3.Zero, 1.5f, true, true, 300);

                //_sparkPTFX = new PtfxEntityPlayer("scr_paletoscore", "scr_paleto_box_sparks", TimeCircuits.Vehicle, new Vector3(0, 3.4f, -0.6f), new Vector3(0, 0, 180), 1.5f, true, true, 300);
                //_sparkPTFX = new PtfxEntityBonePlayer("scr_reconstructionaccident", "scr_sparking_generator", TimeCircuits.Vehicle, "bonnet", new Vector3(0,-0.2f,0.2f), Vector3.Zero, 4f, true);

                //_sparkPTFX = new List<PtfxEntityBonePlayer>();

                //_sparkPTFX.Add(new PtfxEntityBonePlayer("core", "ent_amb_sparking_wires", TimeCircuits.Vehicle, "bonnet", new Vector3(-0.2f, -0.2f, 0.2f), new Vector3(0, -90, 0), 2f, true));
                //_sparkPTFX.Add(new PtfxEntityBonePlayer("core", "ent_amb_sparking_wires", TimeCircuits.Vehicle, "bonnet", new Vector3(0, -0.2f, 0.2f), new Vector3(0, 0, 0), 2f, true));
                //_sparkPTFX.Add(new PtfxEntityBonePlayer("core", "ent_amb_sparking_wires", TimeCircuits.Vehicle, "bonnet", new Vector3(0.2f, -0.2f, 0.2f), new Vector3(0, 90, 0), 2f, true));

                _wormholeModel           = ModelHandler.WormholeRed;
                _wormholeNightModel      = ModelHandler.WormholeRedNight;
                _sparkModel              = ModelHandler.SparkRedModel;
                _sparkNightModel         = ModelHandler.SparkRedNightModel;
                wormholeScaleformName    = "bttf_wormhole_scaleform_red";
                wormholeRenderTargetName = "bttf_wormhole_red";
                break;
            }

            _wormholeRT                        = new RenderTarget(_wormholeModel, wormholeRenderTargetName, TimeCircuits.Vehicle, "bttf_wormhole");
            _wormholeScaleform                 = new ScaleformGui(wormholeScaleformName);
            _wormholeRT.OnRenderTargetDraw    += OnRenderTargetDraw;
            _wormholeScaleform.DrawInPauseMenu = true;

            _coilsProp = new AnimateProp(TimeCircuits.Vehicle, ModelHandler.CoilsGlowing, Vector3.Zero, Vector3.Zero);

            _sparks = new List <SparkPlayer>();
            foreach (List <Vector3> sparks in Constants.SparkOffsets)
            {
                _sparks.Add(new SparkPlayer(TimeCircuits.Vehicle, sparks, _sparkModel));
            }
        }
Exemplo n.º 20
0
 public RenderTarget(Model propModel, string renderTargetName, Entity attachTo, Vector3 offset, Vector3 rotation) : this(propModel, renderTargetName)
 {
     Prop = new AnimateProp(attachTo, propModel, offset, rotation);
 }
Exemplo n.º 21
0
 public RenderTarget(Model propModel, string renderTargetName, Entity attachTo, string bone) : this(propModel, renderTargetName)
 {
     Prop = new AnimateProp(attachTo, propModel, bone);
 }
Exemplo n.º 22
0
 public PhotoHandler(TimeCircuits circuits) : base(circuits)
 {
     _coilsProp = new AnimateProp(TimeCircuits.Vehicle, ModelHandler.CoilsGlowing, Vector3.Zero, Vector3.Zero);
 }
        public WheelAnimationPlayer(TimeCircuits circuits)
        {
            vehicle      = circuits.Vehicle;
            TimeCircuits = circuits;

            _roadWheel = TimeCircuits.Delorean.IsStockWheel ? WheelType.Stock : WheelType.Red;

            Model modelWheel     = _roadWheel == WheelType.Stock ? ModelHandler.WheelProp : ModelHandler.RedWheelProp;
            Model modelWheelRear = _roadWheel == WheelType.Stock ? ModelHandler.RearWheelProp : ModelHandler.RedWheelProp;

            foreach (var wheel in Utils.GetWheelPositions(vehicle))
            {
                string  wheelName  = wheel.Key;
                Vector3 offset     = wheel.Value;
                bool    leftWheel  = (wheelName.Contains("lf") || wheelName.Contains("lr"));
                bool    frontWheel = (wheelName.Contains("lf") || wheelName.Contains("rf"));

                Model   wheelModel     = !frontWheel ? modelWheelRear : modelWheel;
                Model   wheelGlowModel = !frontWheel ? ModelHandler.RearWheelGlowing : ModelHandler.WheelGlowing;
                Vector3 strutOffset    = Vector3.Zero;

                ModelHandler.RequestModel(wheelModel);
                ModelHandler.RequestModel(wheelGlowModel);

                if (leftWheel && frontWheel)
                {
                    strutOffset = strutFrontOffset;
                }
                else if (leftWheel && !frontWheel)
                {
                    strutOffset = strutRearOffset;
                }
                else if (!leftWheel && frontWheel)
                {
                    strutOffset = new Vector3(-strutFrontOffset.X, strutFrontOffset.Y, strutFrontOffset.Z);
                }
                else if (!leftWheel && !frontWheel)
                {
                    strutOffset = new Vector3(-strutRearOffset.X, strutRearOffset.Y, strutRearOffset.Z);
                }

                AnimateProp wheelAnimateProp = new AnimateProp(vehicle, wheelModel, offset, Vector3.Zero);

                AnimateProp wheelGlowAnimateProp = new AnimateProp(null, wheelGlowModel, Vector3.Zero, Vector3.Zero);

                AnimateProp strut = new AnimateProp(vehicle, ModelHandler.RequestModel(ModelHandler.Strut), strutOffset, leftWheel ? Vector3.Zero : new Vector3(0, 0, 180));
                strut.SpawnProp();

                AnimateProp disk = new AnimateProp(strut.Prop, ModelHandler.RequestModel(ModelHandler.Disk), frontWheel ? diskOffsetFromStrut : diskOffsetFromRearStrut, new Vector3(0, leftWheel ? 90 : -90, 0));
                disk.SpawnProp();

                AnimateProp piston = new AnimateProp(disk.Prop, ModelHandler.RequestModel(ModelHandler.Piston), frontWheel ? pistonOffsetFromDisk : pistonOffsetFromRearDisk, Vector3.Zero);
                piston.SpawnProp();

                if (leftWheel)
                {
                    leftStruts.Add(strut);
                    leftPistons.Add(piston);
                    leftDisks.Add(disk);

                    leftWheelProps.Add(wheelAnimateProp);
                    leftWheelGlowProps.Add(wheelGlowAnimateProp);
                }
                else
                {
                    rightStruts.Add(strut);
                    rightPistons.Add(piston);
                    rightDisks.Add(disk);

                    rightWheelProps.Add(wheelAnimateProp);
                    rightWheelGlowProps.Add(wheelGlowAnimateProp);
                }
            }

            currentPistonRotation = MAX_PISTON_ROTATION;

            ApplyAnimation(currentOffset, currentStrutOffset, currentRotation, currentPistonRotation);
        }
Exemplo n.º 24
0
 public CompassHandler(TimeCircuits circuits) : base(circuits)
 {
     _compass = new AnimateProp(Vehicle, ModelHandler.Compass, "bttf_compass");
 }