protected void doSetup(string powerPriority, float smallGridMW, float largeGridMW, params MyEntityUpdateEnum[] updateCycles) { NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME; Entity.NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME; NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; Entity.NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; if (updateCycles.Length == 0) { IO.log("WARNING: " + this + " has no update cycles set!"); } foreach (MyEntityUpdateEnum e in updateCycles) { NeedsUpdate |= e; Entity.NeedsUpdate |= e; } thisBlock = Container.Entity as IMyFunctionalBlock; thisGrid = thisBlock.CubeGrid as IMyCubeGrid; //thisBlock.Enabled = false; //causes it to turn off every time you load the game //Sandbox.ModAPI.Ingame.TerminalBlockExtentions.ApplyAction(thisBlock, "OnOff_Off"); energySink = new MyResourceSinkComponent(1); energySink.Init(MyStringHash.GetOrCompute(powerPriority), thisGrid.GridSizeEnum == MyCubeSize.Small ? smallGridMW : largeGridMW, calcRequiredPower, (MyCubeBlock)thisBlock); if (thisBlock.Components.Contains(typeof(MyResourceSinkComponent))) { IO.log("Power sinks already present in " + this + " #" + Entity.EntityId + ":"); List <MyResourceSinkComponent> li = new List <MyResourceSinkComponent>(); Dictionary <Type, MyComponentBase> .ValueCollection.Enumerator e = thisBlock.Components.GetEnumerator(); while (e.MoveNext()) { if (e.Current is MyResourceSinkComponent) { MyResourceSinkComponent req = e.Current as MyResourceSinkComponent; IO.log(">> " + req.GetType() + " needing " + req.MaxRequiredInput + ", of " + req.AcceptedResources.ToString()); } } thisBlock.Components.Remove <MyResourceSinkComponent>(); } thisBlock.Components.Add(energySink); energySink.Update(); thisBlock.IsWorkingChanged += onWorkingChanged; thisBlock.AppendingCustomInfo += updateInfo; MyAPIGateway.TerminalControls.CustomControlGetter += filterControls; soundSource = new MultiSoundSource(thisBlock); IO.log("Loaded logic script " + this + " for block '" + thisBlock.CustomName + "' / '" + Entity.DisplayName + "' #" + Entity.EntityId + "; update rate = " + NeedsUpdate); }
protected void doSetup(string powerPriority, float maxPowerInMW, params MyEntityUpdateEnum[] updateCycles) { NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME; Entity.NeedsUpdate |= MyEntityUpdateEnum.EACH_10TH_FRAME; NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; Entity.NeedsUpdate |= MyEntityUpdateEnum.BEFORE_NEXT_FRAME; if (updateCycles.Length == 0) { IO.log("WARNING: " + this + " has no update cycles set!"); } foreach (MyEntityUpdateEnum e in updateCycles) { NeedsUpdate |= e; Entity.NeedsUpdate |= e; } thisBlock = Container.Entity as IMyFunctionalBlock; thisGrid = thisBlock.CubeGrid as IMyCubeGrid; energySink = new MyResourceSinkComponent(1); energySink.Init(MyStringHash.GetOrCompute(powerPriority), maxPowerInMW, calcRequiredPower, (MyCubeBlock)thisBlock); if (thisBlock.Components.Contains(typeof(MyResourceSinkComponent))) { IO.log("Power sinks already present in " + this + " #" + Entity.EntityId + ":"); List <MyResourceSinkComponent> li = new List <MyResourceSinkComponent>(); Dictionary <Type, MyComponentBase> .ValueCollection.Enumerator e = thisBlock.Components.GetEnumerator(); while (e.MoveNext()) { if (e.Current is MyResourceSinkComponent) { MyResourceSinkComponent req = e.Current as MyResourceSinkComponent; IO.log(">> " + req.GetType() + " needing " + req.MaxRequiredInput + ", of " + req.AcceptedResources.ToString()); } } thisBlock.Components.Remove <MyResourceSinkComponent>(); } thisBlock.Components.Add(energySink); energySink.Update(); thisBlock.IsWorkingChanged += onWorkingChanged; thisBlock.AppendingCustomInfo += updateInfo; soundSource = new MultiSoundSource(thisBlock); IO.log("Loaded logic script " + this + " for block '" + thisBlock.CustomName + "' / '" + Entity.DisplayName + "' #" + Entity.EntityId + "; update rate = " + NeedsUpdate); }