void Process_light(ModuleLight light) { if (light.useResources && light.isOn) { Resource("ElectricCharge").Consume(light.resourceAmount, "light"); } }
public static bool IsOn(PartModule light) { switch (light.moduleName) { case "ModuleColorChanger": case "ModuleColorChangerConsumer": ModuleColorChanger castMCC = (ModuleColorChanger)light; return(castMCC.animState); case "ModuleLight": case "ModuleStockLightColoredLens": case "ModuleMultiPointSurfaceLight": case "ModuleColoredLensLight": ModuleLight castML = (ModuleLight)light; return(castML.isOn); case "ModuleAnimateGeneric": case "ModuleAnumateGenericConsumer": ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light; return(!castMAG.animSwitch); case "WBILight": return((bool)light.GetType().InvokeMember("isDeployed", BindingFlags.GetField, null, light, null)); case "ModuleKELight": return((bool)light.GetType().InvokeMember("isOn", BindingFlags.GetField, null, light, null)); default: return(false); } }
protected override void DI_Start(StartState state) { if (HighLogic.LoadedSceneIsFlight) { this.lightModule = this.part.Modules.OfType <ModuleLight>().Single(); } }
internal Light(Part part) { this.part = part; light = part.InternalPart.Module <ModuleLight> (); if (light == null) { throw new ArgumentException("Part does not have a ModuleLight PartModule"); } }
internal Light(Part part) { this.part = part; light = part.InternalPart.Module <ModuleLight> (); if (light == null) { throw new ArgumentException("Part is not a light"); } }
public void updateReferences() { lightModule = part.GetComponent <ModuleLight>(); lightModule.resourceAmount = 0; lightModule.Fields["resourceAmount"].guiActive = false; lightModule.useResources = false; lights = part.FindModelComponents <Light>(); renderers = part.FindModelComponents <Renderer>(); animations = part.FindModelAnimators(); }
// apply type-specific hacks to enable/disable the module void Apply(bool b) { switch (type) { case "ProcessController": if (b) { foreach (PartModule m in modules) { Lib.SetResourceFlow(part, (m as ProcessController).resource, false); } } break; case "ModuleDeployableSolarPanel": case "ModuleDeployableRadiator": if (b) { part.FindModelComponents <Animation>().ForEach(k => k.Stop()); } break; case "ModuleLight": if (b) { foreach (PartModule m in modules) { ModuleLight light = m as ModuleLight; if (light.animationName.Length > 0) { new Animator(part, light.animationName).Still(0.0f); } else { part.FindModelComponents <Light>().ForEach(k => k.enabled = false); } } } break; case "ModuleEngines": case "ModuleEnginesFX": if (b) { foreach (PartModule m in modules) { (m as ModuleEngines).Shutdown(); } } break; } }
// Updates the Unity light object to override the normal LightModule. Allows setting of RGB, Range, Spot angle private void OnUISliderChange(BaseField field, object obj) { // In flight logic, no symmetry if (!HighLogic.LoadedSceneIsEditor) { Color lightColor = new Color { r = RColorField * IntensityField, g = GColorField * IntensityField, b = BColorField * IntensityField }; Light unitylight = part.GetComponentInChildren <Light>(); unitylight.range = 100 * (float)Math.Pow(RangeField, RangeField); unitylight.color = lightColor; unitylight.spotAngle = ConeAngleField; } // Handle Symmetry in editor else { ModuleLight modulelight = part.FindModuleImplementing <ModuleLight>(); Color lightColor = new Color { r = modulelight.lightR * IntensityField, g = modulelight.lightG * IntensityField, b = modulelight.lightB * IntensityField }; Light unitylight = part.GetComponentInChildren <Light>(); unitylight.range = 100 * (float)Math.Pow(RangeField, RangeField); unitylight.color = lightColor; unitylight.spotAngle = ConeAngleField; RColorField = modulelight.lightR; GColorField = modulelight.lightG; BColorField = modulelight.lightB; foreach (Part part in part.symmetryCounterparts) { ModuleLightTracker lighttrackermodule = part.FindModuleImplementing <ModuleLightTracker>(); unitylight = part.GetComponentInChildren <Light>(); unitylight.range = 100 * (float)Math.Pow(RangeField, RangeField); unitylight.color = lightColor; unitylight.spotAngle = ConeAngleField; lighttrackermodule.RColorField = modulelight.lightR; lighttrackermodule.GColorField = modulelight.lightG; lighttrackermodule.BColorField = modulelight.lightB; } } }
internal override void postControllerSetup() { base.postControllerSetup(); setupAnimationController(); lightModule = part.GetComponent <ModuleLight>(); if (lightModule != null && controller.wheelState == KSPWheelState.DEPLOYED) { lightModule.LightsOn(); } if (vessel != null) { vessel.ActionGroups.SetGroup(KSPActionGroup.Gear, controller.wheelState == KSPWheelState.DEPLOYED); } if (!string.IsNullOrEmpty(tempColliderName)) { tempColliderTransform = part.transform.FindChildren(tempColliderName)[wheelData.indexInDuplicates]; } }
public static void Off(PartModule light) { switch (light.moduleName) { case "ModuleColorChanger": case "ModuleColorChangerConsumer": ModuleColorChanger castMCC = (ModuleColorChanger)light; if (castMCC.animState) { castMCC.ToggleEvent(); } break; case "ModuleLight": case "ModuleStockLightColoredLens": case "ModuleMultiPointSurfaceLight": case "ModuleColoredLensLight": ModuleLight castML = (ModuleLight)light; castML.LightsOff(); break; case "ModuleAnimateGeneric": case "ModuleAnumateGenericConsumer": ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light; castMAG.Toggle(); break; case "WBILight": light.GetType().InvokeMember("TurnOffLights", BindingFlags.InvokeMethod, null, light, null); break; case "ModuleNavLight": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { 0 }); break; case "ModuleKELight": light.GetType().InvokeMember("LightsOff", BindingFlags.InvokeMethod, null, light, null); break; } }
public override void OnAwake() { base.OnAwake(); this.module = base.part.FindModuleImplementing <ModuleLight>(); }
public static void On(PartModule light) { if (!settingsLoaded) { LoadSettings(); } switch (light.moduleName) { case "ModuleColorChanger": case "ModuleColorChangerConsumer": ModuleColorChanger castMCC = (ModuleColorChanger)light; if (!castMCC.animState) { castMCC.ToggleEvent(); } break; case "ModuleLight": case "ModuleStockLightColoredLens": case "ModuleMultiPointSurfaceLight": case "ModuleColoredLensLight": ModuleLight castML = (ModuleLight)light; castML.LightsOn(); break; case "ModuleAnimateGeneric": case "ModuleAnimateGenericConsumer": ModuleAnimateGeneric castMAG = (ModuleAnimateGeneric)light; if (castMAG.animSwitch) { castMAG.Toggle(); } break; case "WBILight": light.GetType().InvokeMember("TurnOnLights", BindingFlags.InvokeMethod, null, light, null); break; case "ModuleNavLight": if (generalSettings.useAviationLightsEffect && GameSettingsLive.inSunlight) { switch (light.part.name) { case "lightbeacon.amber": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.beaconAmber) }); break; case "lightbeacon.red": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.beaconRed) }); break; case "lightnav.blue": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.navBlue) }); break; case "lightnav.green": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.navGreen) }); break; case "lightnav.red": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.navRed) }); break; case "lightnav.white": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.navWhite) }); break; case "lightstrobe.white": light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { ParseNavLightStr(aviationLSettings.strobeWhite) }); break; default: light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { 4 }); break; } } else { light.GetType().InvokeMember("navLightSwitch", BindingFlags.SetField, null, light, new object[] { 4 }); } break; case "ModuleKELight": light.GetType().InvokeMember("LightsOn", BindingFlags.InvokeMethod, null, light, null); break; } }
internal MASActionModuleLight(ModuleLight lightModule, ActionType action) : base(action) { this.lightModule = lightModule; }
public LightDevice(ModuleLight light) { this.light = light; }
public override void OnAwake() { base.OnAwake(); this.module = base.part.FindModuleImplementing<ModuleLight>(); }
// apply type-specific hacks to enable/disable the module void Apply(bool b) { switch (type) { case "ProcessController": if (b) { foreach (PartModule m in modules) { (m as ProcessController).ReliablityEvent(b); } } break; case "ModuleDeployableSolarPanel": case "ModuleDeployableRadiator": if (b) { part.FindModelComponents <Animation>().ForEach(k => k.Stop()); } break; case "ModuleLight": if (b) { foreach (PartModule m in modules) { ModuleLight light = m as ModuleLight; if (light.animationName.Length > 0) { new Animator(part, light.animationName).Still(0.0f); } else { part.FindModelComponents <Light>().ForEach(k => k.enabled = false); } } } break; case "ModuleEngines": case "ModuleEnginesFX": if (b) { foreach (PartModule m in modules) { (m as ModuleEngines).Shutdown(); } } break; case "ModuleEnginesRF": if (b) { foreach (PartModule m in modules) { Lib.ReflectionCall(m, "Shutdown"); } } break; case "ModuleScienceExperiment": if (b) { foreach (PartModule m in modules) { (m as ModuleScienceExperiment).SetInoperable(); } } break; case "Experiment": if (b) { foreach (PartModule m in modules) { (m as Experiment).ReliablityEvent(b); } } break; } API.Failure.Notify(part, type, b); }
public static void ActivateModule(this ModuleLight module) { module.isEnabled = true; module.Events["LightsOn"].active = module.Events["LightsOn"].guiActive = true; }
public override bool Initialize(PartModule pm) { base.Initialize(pm); light = (ModuleLight)pm; return(true); }
// apply type-specific hacks to enable/disable the module protected void Apply(bool b) { if (b && type.StartsWith("ModuleEngines", StringComparison.Ordinal)) { foreach (PartModule m in modules) { var e = m as ModuleEngines; e.Shutdown(); e.EngineIgnited = false; e.flameout = true; var efx = m as ModuleEnginesFX; if (efx != null) { efx.DeactivateRunningFX(); efx.DeactivatePowerFX(); efx.DeactivateLoopingFX(); } } } switch (type) { case "ProcessController": if (b) { foreach (PartModule m in modules) { (m as ProcessController).ReliablityEvent(b); } } break; case "ModuleDeployableRadiator": if (b) { part.FindModelComponents <Animation>().ForEach(k => k.Stop()); } break; case "ModuleLight": if (b) { foreach (PartModule m in modules) { ModuleLight l = m as ModuleLight; if (l.animationName.Length > 0) { new Animator(part, l.animationName).Still(0.0f); } else { part.FindModelComponents <Light>().ForEach(k => k.enabled = false); } } } break; case "ModuleRCSFX": if (b) { foreach (PartModule m in modules) { var e = m as ModuleRCSFX; if (e != null) { e.DeactivateFX(); e.DeactivatePowerFX(); } } } break; case "ModuleScienceExperiment": if (b) { foreach (PartModule m in modules) { (m as ModuleScienceExperiment).SetInoperable(); } } break; case "Experiment": if (b) { foreach (PartModule m in modules) { (m as Experiment).ReliablityEvent(b); } } break; case "SolarPanelFixer": foreach (PartModule m in modules) { (m as SolarPanelFixer).ReliabilityEvent(b); } break; } API.Failure.Notify(part, type, b); }
public override void OnStart(PartModule.StartState state) { base.OnStart(state); this.module = base.part.FindModuleImplementing<ModuleLight>(); }
// apply type-specific hacks to enable/disable the module void Apply(bool b) { switch (type) { case "ProcessController": if (b) { foreach (PartModule m in modules) { Lib.SetResourceFlow(part, (m as ProcessController).resource, false); } } break; case "ModuleDeployableSolarPanel": case "ModuleDeployableRadiator": if (b) { part.FindModelComponents <Animation>().ForEach(k => k.Stop()); } break; case "ModuleLight": if (b) { foreach (PartModule m in modules) { ModuleLight light = m as ModuleLight; if (light.animationName.Length > 0) { new Animator(part, light.animationName).Still(0.0f); } else { part.FindModelComponents <Light>().ForEach(k => k.enabled = false); } } } break; case "ModuleEngines": case "ModuleEnginesFX": if (b) { foreach (PartModule m in modules) { (m as ModuleEngines).Shutdown(); } } break; case "ModuleEnginesRF": if (b) { foreach (PartModule m in modules) { Lib.ReflectionCall(m, "Shutdown"); } } break; case "ModuleScienceExperiment": if (b) { foreach (PartModule m in modules) { (m as ModuleScienceExperiment).SetInoperable(); } } break; } if (RemoteTech.Enabled) { foreach (PartModule m in part.FindModulesImplementing <PartModule>()) { if (RemoteTech.IsAntenna(m)) { RemoteTech.SetBroken(m, b); } } } }
public void updateReferences() { lightModule = part.GetComponent<ModuleLight>(); lightModule.resourceAmount = 0; lightModule.Fields["resourceAmount"].guiActive = false; lightModule.useResources = false; lights = part.FindModelComponents<Light>(); renderers = part.FindModelComponents<Renderer>(); animations = part.FindModelAnimators(); }
public static void DeactivateModule(this ModuleLight module) { module.LightsOff(); module.Events["LightsOn"].active = module.Events["LightsOn"].guiActive = false; module.isEnabled = false; }
/// <summary> /// Called when the part is started. /// </summary> /// <param name="state">The start state.</param> public override void OnStart(PartModule.StartState state) { base.OnStart(state); if (HighLogic.LoadedSceneIsFlight) { mLight = part.Modules.OfType<ModuleLight>().FirstOrDefault<ModuleLight>(); if (!mLight) { Logger.DebugError("mLight is NULL!"); } if (failure != "") { BustBulb(false); } Fields["quality"].guiName = "Light " + Fields["quality"].guiName; } }
public override void OnStart(PartModule.StartState state) { base.OnStart(state); this.module = base.part.FindModuleImplementing <ModuleLight>(); }
static void ProcessLight(Vessel v, ProtoPartSnapshot p, ProtoPartModuleSnapshot m, ModuleLight light, resource_info ec, double elapsed_s) { if (light.useResources && Lib.Proto.GetBool(m, "isOn")) { ec.Consume(light.resourceAmount * elapsed_s); } }
protected override void DI_Start(StartState state) { if (HighLogic.LoadedSceneIsFlight) { this.lightModule = this.part.Modules.OfType<ModuleLight>().Single(); } }