public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { this.m_definition = base.BlockDefinition as MyOreDetectorDefinition; MyResourceSinkComponent component = new MyResourceSinkComponent(1); component.Init(this.m_definition.ResourceSinkGroup, 0.002f, delegate { if (!base.Enabled || !base.IsFunctional) { return(0f); } return(base.ResourceSink.MaxRequiredInputByType(MyResourceDistributorComponent.ElectricityId)); }); base.ResourceSink = component; base.ResourceSink.IsPoweredChanged += new Action(this.Receiver_IsPoweredChanged); base.Init(objectBuilder, cubeGrid); MyObjectBuilder_OreDetector detector = objectBuilder as MyObjectBuilder_OreDetector; this.m_oreDetectorComponent.DetectionRadius = (detector.DetectionRadius == 0f) ? MathHelper.Clamp(0.5f * this.m_definition.MaximumRange, 1f, this.m_definition.MaximumRange) : MathHelper.Clamp(detector.DetectionRadius, 1f, this.m_definition.MaximumRange); this.m_oreDetectorComponent.BroadcastUsingAntennas = detector.BroadcastUsingAntennas; this.m_broadcastUsingAntennas.SetLocalValue(this.m_oreDetectorComponent.BroadcastUsingAntennas); this.m_oreDetectorComponent.OnCheckControl = (MyOreDetectorComponent.CheckControlDelegate)Delegate.Combine(this.m_oreDetectorComponent.OnCheckControl, new MyOreDetectorComponent.CheckControlDelegate(this.OnCheckControl)); base.ResourceSink.Update(); base.SlimBlock.ComponentStack.IsFunctionalChanged += new Action(this.ComponentStack_IsFunctionalChanged); base.NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME; base.OnClose += new Action <VRage.Game.Entity.MyEntity>(this.MyOreDetector_OnClose); }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { base.Init(objectBuilder, cubeGrid); m_definition = BlockDefinition as MyOreDetectorDefinition; SyncObject = new MySyncOreDetector(this); var ob = objectBuilder as MyObjectBuilder_OreDetector; m_oreDetectorComponent.DetectionRadius = ob.DetectionRadius; if (m_oreDetectorComponent.DetectionRadius == 0) { m_oreDetectorComponent.DetectionRadius = m_definition.MaximumRange; } m_oreDetectorComponent.BroadcastUsingAntennas = ob.BroadcastUsingAntennas; m_oreDetectorComponent.OnCheckControl += OnCheckControl; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; NeedsUpdate = MyEntityUpdateEnum.EACH_100TH_FRAME; PowerReceiver = new MyPowerReceiver( MyConsumerGroupEnum.Factory, false, MyEnergyConstants.MAX_REQUIRED_POWER_ORE_DETECTOR, () => (Enabled && IsFunctional) ? PowerReceiver.MaxRequiredInput : 0f); PowerReceiver.Update(); PowerReceiver.IsPoweredChanged += Receiver_IsPoweredChanged; AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(PowerReceiver, this)); }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { m_definition = BlockDefinition as MyOreDetectorDefinition; var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( m_definition.ResourceSinkGroup, MyEnergyConstants.MAX_REQUIRED_POWER_ORE_DETECTOR, () => (Enabled && IsFunctional) ? ResourceSink.MaxRequiredInput : 0f); ResourceSink = sinkComp; ResourceSink.IsPoweredChanged += Receiver_IsPoweredChanged; base.Init(objectBuilder, cubeGrid); var ob = objectBuilder as MyObjectBuilder_OreDetector; m_oreDetectorComponent.DetectionRadius = ob.DetectionRadius; if (m_oreDetectorComponent.DetectionRadius == 0) { m_oreDetectorComponent.DetectionRadius = m_definition.MaximumRange; } m_oreDetectorComponent.BroadcastUsingAntennas = ob.BroadcastUsingAntennas; m_broadcastUsingAntennas.Value = m_oreDetectorComponent.BroadcastUsingAntennas; m_oreDetectorComponent.OnCheckControl += OnCheckControl; ResourceSink.Update(); SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME; AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(ResourceSink, this)); }