コード例 #1
0
        public override void Abort()
        {
            _particle?.Delete();
            Prop prop = _prop;

            if (prop != null)
            {
                prop.Delete();
            }
            _peds?.ForEach(delegate(Ped ped)
            {
                Blip currentBlip = ped.CurrentBlip;
                if (currentBlip.Handle != 0)
                {
                    currentBlip.Remove();
                }
                ped.Delete();
            });
            Blip blip = _blip;

            if (blip != null)
            {
                blip.Remove();
            }
            if (MenuConrtoller.BarPool.ToList().Contains(_timerBar))
            {
                MenuConrtoller.BarPool.Remove(_timerBar);
            }
        }
コード例 #2
0
        public override void CleanUp()
        {
            _particle.Delete();
            _peds?.ForEach(delegate(Ped ped)
            {
                Blip currentBlip = ped.CurrentBlip;
                if (currentBlip.Handle != 0)
                {
                    currentBlip.Remove();
                }
                ped.AlwaysKeepTask = true;
                ped.IsPersistent   = false;
            });
            Blip blip = _blip;

            if (blip != null)
            {
                blip.Remove();
            }
            if (MenuConrtoller.BarPool.ToList().Contains(_timerBar))
            {
                MenuConrtoller.BarPool.Remove(_timerBar);
            }
        }
コード例 #3
0
        /// <summary>
        /// Destroy assets used for Strafe Run, either by force or gracefully
        /// </summary>
        /// <param name="force"></param>
        public virtual void destructor(bool force = false)
        {
            // if the strafe run is not currently active, and the force flag is false, then do nothing
            if (!_isActive && !force)
            {
                return;
            }

            try
            {
                foreach (Vehicle strafeVehicle in strafeVehiclesList)
                {
                    strafeVehicle.AttachedBlip.Delete();

                    // if destroying by force
                    if (force)
                    {
                        strafeVehicle.Driver.Delete();
                        strafeVehicle.Delete();
                    }

                    // if destroying gracefully, command the pilot to fly away. Mark crew and vehicle as no longer needed
                    else
                    {
                        strafeVehicle.Driver.Task.FleeFrom(_targetPos);
                        strafeVehicle.Driver.MarkAsNoLongerNeeded();
                        strafeVehicle.MarkAsNoLongerNeeded();
                    }
                }

                strafeVehiclesList.Clear();
                //_jdamDrops.Clear();

                // free each ped in the initial targets list
                foreach (Ped p in initialTargetList)
                {
                    p.MarkAsNoLongerNeeded();
                }
            }
            catch { }

            // free PTFX assets from memory, and remove end any particle FX
            try
            {
                if (force)
                {
                    targetMarkerPtfxAsset.MarkAsNoLongerNeeded();
                }
                targetMarkerPtfx.Delete();
            }
            catch { }

            // try to reset cinematic camera to default game cam
            try
            {
                if (_cinematic)
                {
                    cineCamCtrler.destructor();
                }
            }
            catch { }

            // reset settings
            _isActive     = false;
            _lastDistance = float.PositiveInfinity;
        }