public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { base.Init(objectBuilder, cubeGrid); this.IsLargeLight = cubeGrid.GridSizeEnum == MyCubeSize.Large; this.SyncObject = new MySyncLightingBlock(this); var builder = (MyObjectBuilder_LightingBlock)objectBuilder; MyModel lightModel = MyModels.GetModelOnlyDummies(BlockDefinition.Model); foreach (var pair in lightModel.Dummies) { if (!pair.Key.ToLower().Contains("light")) { continue; } m_lightLocalPosition = pair.Value.Matrix.Translation; break; } Vector4 color = (builder.ColorAlpha == -1) ? LightColorDef : new Vector4(builder.ColorRed, builder.ColorGreen, builder.ColorBlue, builder.ColorAlpha); float radius = RadiusBounds.Clamp((builder.Radius == -1f) ? RadiusBounds.Default : builder.Radius); float falloff = FalloffBounds.Clamp(builder.Falloff); m_blinkIntervalSeconds = BlinkIntervalSecondsBounds.Clamp((builder.BlinkIntervalSeconds == -1f) ? BlinkIntervalSecondsBounds.Default : builder.BlinkIntervalSeconds); m_blinkLength = BlinkLenghtBounds.Clamp((builder.BlinkLenght == -1f) ? BlinkLenghtBounds.Default : builder.BlinkLenght); m_blinkOffset = BlinkOffsetBounds.Clamp((builder.BlinkOffset == -1f) ? BlinkOffsetBounds.Default : builder.BlinkOffset); m_intesity = IntensityBounds.Clamp((builder.Intensity == -1f) ? IntensityBounds.Default : builder.Intensity); m_positionDirty = true; m_light = MyLights.AddLight(); InitLight(m_light, color, radius, falloff); m_light.ReflectorRange = ShortReflectorRangeDef; m_light.Range = radius; m_light.PointLightOffset = 0.5f; m_light.ReflectorOn = false; m_light.LightOn = false; m_light.GlareOn = false; UpdateIntensity(); UpdateLightPosition(); NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME; Render.NeedsDrawFromParent = true; PowerReceiver = new MyPowerReceiver( MyConsumerGroupEnum.Utility, false, BlockDefinition.RequiredPowerInput, () => (Enabled && IsFunctional) ? PowerReceiver.MaxRequiredInput : 0f); PowerReceiver.Update(); AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawPowerReciever(PowerReceiver, this)); PowerReceiver.IsPoweredChanged += Receiver_IsPoweredChanged; SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; }
public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid) { var sinkComp = new MyResourceSinkComponent(); sinkComp.Init( BlockDefinition.ResourceSinkGroup, BlockDefinition.RequiredPowerInput, () => (Enabled && IsFunctional) ? ResourceSink.MaxRequiredInput : 0f); sinkComp.IsPoweredChanged += Receiver_IsPoweredChanged; ResourceSink = sinkComp; base.Init(objectBuilder, cubeGrid); this.IsLargeLight = cubeGrid.GridSizeEnum == MyCubeSize.Large; var builder = (MyObjectBuilder_LightingBlock)objectBuilder; MyModel lightModel = VRage.Game.Models.MyModels.GetModelOnlyDummies(BlockDefinition.Model); foreach (var pair in lightModel.Dummies) { if (!pair.Key.ToLower().Contains("light")) { continue; } m_lightLocalPosition = pair.Value.Matrix.Translation; break; } Vector4 color = (builder.ColorAlpha == -1) ? LightColorDef : new Vector4(builder.ColorRed, builder.ColorGreen, builder.ColorBlue, builder.ColorAlpha); float radius = RadiusBounds.Clamp((builder.Radius == -1f) ? RadiusBounds.Default : builder.Radius); float reflectorRadius = ReflectorRadiusBounds.Clamp((builder.ReflectorRadius == -1f) ? ReflectorRadiusBounds.Default : builder.ReflectorRadius); float falloff = FalloffBounds.Clamp(builder.Falloff); m_blinkIntervalSeconds.Value = BlinkIntervalSecondsBounds.Clamp((builder.BlinkIntervalSeconds == -1f) ? BlinkIntervalSecondsBounds.Default : builder.BlinkIntervalSeconds); m_blinkLength.Value = BlinkLenghtBounds.Clamp((builder.BlinkLenght == -1f) ? BlinkLenghtBounds.Default : builder.BlinkLenght); m_blinkOffset.Value = BlinkOffsetBounds.Clamp((builder.BlinkOffset == -1f) ? BlinkOffsetBounds.Default : builder.BlinkOffset); m_intesity.Value = IntensityBounds.Clamp((builder.Intensity == -1f) ? IntensityBounds.Default : builder.Intensity); m_positionDirty = true; m_light = MyLights.AddLight(); InitLight(m_light, color, radius, falloff); m_light.ReflectorRange = reflectorRadius; m_light.Range = radius; m_light.ReflectorOn = false; m_light.LightOn = false; m_light.GlareOn = false; UpdateIntensity(); UpdateLightPosition(); NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.BEFORE_NEXT_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME; Render.NeedsDrawFromParent = true; AddDebugRenderComponent(new MyDebugRenderComponentDrawPowerReciever(ResourceSink, this)); ResourceSink.Update(); SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged; IsWorkingChanged += CubeBlock_OnWorkingChanged; }