Beispiel #1
0
        internal void OnAddedToSceneTasks()
        {
            try {
                Ai.UpdatePowerSources = true;
                if (!Ai.GridInit)
                {
                    Ai.GridInit = true;
                    Ai.InitFakeShipController();
                    Ai.ScanBlockGroups = true;
                    var fatList = Session.GridToFatMap[MyCube.CubeGrid].MyCubeBocks;

                    for (int i = 0; i < fatList.Count; i++)
                    {
                        var cubeBlock = fatList[i];
                        if (cubeBlock is MyBatteryBlock || cubeBlock is IMyCargoContainer || cubeBlock is IMyAssembler || cubeBlock is IMyShipConnector)
                        {
                            Ai.FatBlockAdded(cubeBlock);
                        }
                    }
                }

                var maxTrajectory = 0d;
                var ob            = MyCube.BlockDefinition as MyLargeTurretBaseDefinition;

                for (int i = 0; i < Platform.Weapons.Length; i++)
                {
                    var weapon = Platform.Weapons[i];
                    weapon.InitTracking();

                    double weaponMaxRange;
                    DpsAndHeatInit(weapon, ob, out weaponMaxRange);

                    if (maxTrajectory < weaponMaxRange)
                    {
                        maxTrajectory = weaponMaxRange;
                    }
                }

                if (maxTrajectory + Ai.MyGrid.PositionComp.LocalVolume.Radius > Ai.MaxTargetingRange)
                {
                    Ai.MaxTargetingRange    = maxTrajectory + Ai.MyGrid.PositionComp.LocalVolume.Radius;
                    Ai.MaxTargetingRangeSqr = Ai.MaxTargetingRange * Ai.MaxTargetingRange;
                }

                Ai.OptimalDps += PeakDps;
                Ai.UpdateConstruct();

                if (!FunctionalBlock.Enabled)
                {
                    for (int i = 0; i < Platform.Weapons.Length; i++)
                    {
                        Platform.Weapons[i].EventTriggerStateChanged(EventTriggers.TurnOff, true);
                    }
                }

                Status = !IsWorking ? Start.Starting : Start.ReInit;
            }
            catch (Exception ex) { Log.Line($"Exception in OnAddedToSceneTasks: {ex} AiNull:{Ai == null} - SessionNull:{Session == null} EntNull{Entity == null} MyCubeNull:{MyCube?.CubeGrid == null}"); }
        }