void PrepData(ThrusterDataHandler.ThrusterData data) { EmissiveMaterialName = data.EmissiveMaterialName; OnColor = data.OnColor; OffColor = data.OffColor; NonWorkingColor = data.NotWorkingColor; NonFunctionalColor = data.NonFunctionalColor; ThrusterOn_EmissiveMultiplier = data.ThrusterOnEmissiveMultiplier; ThrusterOff_EmissiveMultiplier = data.ThrusterOffEmissiveMultiplier; ThrusterNotWorking_EmissiveMultiplier = data.ThrusterNotWorkingEmissiveMultiplier; ThrusterNonFunctional_EmissiveMultiplier = data.ThrusterNonFunctionalEmissiveMultiplier; ChangeColorByThrustOutput = data.ChangeColorByThrustOutput; AntiFlickerThreshold = data.AntiFlickerThreshold; ColorAtMaxThrust = data.ColorAtMaxThrust; MaxThrust_EmissiveMultiplierMin = data.MaxThrust_EmissiveMultiplierMin; MaxThrust_EmissiveMultiplierMax = data.MaxThrust_EmissiveMultiplierMax; //ErrorColor = data.ErrorColor; //CurrentColor = data.CurrentColor; }
public override void UpdateOnceBeforeFrame() { if (block == null) // Null check all the things. { return; } blockSubtypeID = block.BlockDefinition.SubtypeId; if (EXPERIMENTAL) { var blockDefinition = block.SlimBlock.BlockDefinition as MyThrustDefinition; DefaultFlameIdleColor = blockDefinition.FlameIdleColor; DefaultFlameFullColor = blockDefinition.FlameFullColor; block.Model.GetDummies(ModelDummy); if (ModelDummy.ContainsKey("flame_light_inner")) { DummyCount++; LightInnerDummyPos = ModelDummy["flame_light_inner"].Matrix.Translation; } if (ModelDummy.ContainsKey("flame_light_outer")) { DummyCount++; LightOuterDummyPos = ModelDummy["flame_light_outer"].Matrix.Translation; } } //subpart = block.GetSubpart(subpartName); block.TryGetSubpart(subpartName, out subpart); MyThrusterData = ThrusterDataInstance.GetThrusterData(blockSubtypeID); EmissiveMaterialCount = MyThrusterData.Count; foreach (var data in MyThrusterData) { PrepData(data); if (ChangeColorByThrustOutput) { // Load data as new instance, set defaults where needed, check for errors or missing values and set to defaults as well. DynamicData = new ThrusterDataHandler.ThrusterData(); DynamicData.EmissiveMaterialName = data.EmissiveMaterialName; DynamicData.OnColor = data.OnColor; DynamicData.OffColor = data.OffColor; DynamicData.NotWorkingColor = data.NotWorkingColor; DynamicData.NonFunctionalColor = data.NonFunctionalColor; DynamicData.ThrusterOnEmissiveMultiplier = data.ThrusterOnEmissiveMultiplier; DynamicData.ThrusterOffEmissiveMultiplier = data.ThrusterOffEmissiveMultiplier; DynamicData.ThrusterNotWorkingEmissiveMultiplier = data.ThrusterNotWorkingEmissiveMultiplier; DynamicData.ThrusterNonFunctionalEmissiveMultiplier = data.ThrusterNonFunctionalEmissiveMultiplier; DynamicData.ChangeColorByThrustOutput = data.ChangeColorByThrustOutput; DynamicData.AntiFlickerThreshold = data.AntiFlickerThreshold; DynamicData.ColorAtMaxThrust = data.ColorAtMaxThrust; DynamicData.MaxThrust_EmissiveMultiplierMin = data.MaxThrust_EmissiveMultiplierMin; DynamicData.MaxThrust_EmissiveMultiplierMax = data.MaxThrust_EmissiveMultiplierMax; DynamicData.ErrorColor = data.ErrorColor; DynamicData.CurrentColor = data.CurrentColor; DynamicData.ActiveColor = data.OnColor; DynamicData.InactiveColor = data.NonFunctionalColor; DynamicData.ActiveGlow = data.ThrusterOnEmissiveMultiplier; DynamicData.InactiveGlow = data.ThrusterNonFunctionalEmissiveMultiplier; DynamicData.ThrusterStatus = 0f; DynamicData.ThrusterStrength = 0f; if (data.ThrusterStatusRampUp == 0f) { data.ThrusterStatusRampUp = 0.005f; } DynamicData.ThrusterStatusRampUp = data.ThrusterStatusRampUp; if (data.ThrusterStatusRampDown == 0f) { data.ThrusterStatusRampDown = 0.005f; } DynamicData.ThrusterStatusRampDown = data.ThrusterStatusRampDown; if (data.ThrusterStrengthRampUp == 0f) { data.ThrusterStrengthRampUp = 0.005f; } DynamicData.ThrusterStrengthRampUp = data.ThrusterStrengthRampUp; if (data.ThrusterStrengthRampDown == 0f) { data.ThrusterStrengthRampDown = 0.005f; } DynamicData.ThrusterStrengthRampDown = data.ThrusterStrengthRampDown; if (data.ThrusterOffRampDown == 0f) { data.ThrusterOffRampDown = 0.005f; } DynamicData.ThrusterOffRampDown = data.ThrusterOffRampDown; if (data.ThrusterNotWorkingRampDown == 0f) { data.ThrusterNotWorkingRampDown = 0.005f; } DynamicData.ThrusterNotWorkingRampDown = data.ThrusterNotWorkingRampDown; if (data.ThrusterNonFunctionalRampDown == 0f) { data.ThrusterNonFunctionalRampDown = 0.005f; } DynamicData.ThrusterNonFunctionalRampDown = data.ThrusterNonFunctionalRampDown; DynamicThrusterData.Add(DynamicData); } else { StaticThrusterData.Add(data); CheckAndSetEmissives(); } } if (DynamicThrusterData.Any()) { NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME; } // Hook to events. block.IsWorkingChanged += IsWorkingChanged; block.PropertiesChanged += PropertiesChanged; }