From 6cd78839ae90a6395b1f47ab1414cdfca5b08793 Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Tue, 3 Dec 2019 12:41:33 -0800 Subject: [PATCH] Update ModuleRestockHeatEffects to fix instantiation issues Untested (will test when I get home) --- .../GameData/ReStock/Plugins/Restock.dll | Bin 36864 -> 36864 bytes Source/Restock/ModuleRestockHeatEffects.cs | 41 ++++++++++-------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index 57c0b58514d3699a678d8b6a6cea95b96dce7e5c..c6c487cdcbb7d7e8195b6704b784d9688c78ac67 100644 GIT binary patch delta 2391 zcmYk82~1R16o&u%VBo>PILII{qO!Ok`zDLB$S^WguxhEPTGADZwkj5kwjJy+r3FMp zr_X}g4J{J2iIR+Mj9S|!Mw@7w+Er3DB{s&ybTPKkYG`}zg7Px&-us>Z+aXd1qihzH&C0#QnZ#VAn@O)x#X-hZz1EBY%&t&%i@MODfF^SQ zHZ-;qGUNDgk?YCIcei`~lIx_GmVnzXPnwcF?kTReR`*+Nqj zG>WW)WZ|Tas(pBTnjn zF}7z^vseAY86hDaD?K;hEcycKSOks97NsEMEk%crHPI?q3l4!#jMfoH~;ew(X(xUK#q7!Op!MB(w1VdnjSFVMPMwa_p<3d;FunFE+7V` z97)qm46#U8bT@`my`p&XjK!!T8+qE1oGa(0P-X1cEy#y%>!Z3Iad}*mHJpl<16CeczpZ zReB=26a^7Y$8JT#k*oBX7$lXdDd&+qDk&qAVA*>wx zB(WWIg357FX-SjIh=wG2Sg!38y&Sid>t}jZ4ns;aw=K<|M&ujn7fmJ@a=T&Qtz zzoNB*J{KhOcHx{PQA8KMRvJ&+g-c4~X}gf?KU%^}LBouHyNw~o5r2I}gvsx&DhQl8 zid$MRyQ&qiO#yD|7vQS4jrv=xh>fB;C_&rA0RN9Q8JX4tUp7UZ`u3iy?NYK`^~LTreJglZbC#@4nz64Ntt2PEBO=g#l@&dfP; z=I*wgRN77|hq{8_9@fwLyAxTj|MQj1p);1I)}I01)NM+ZUdPhdaoxwf2|ETLJ{2@7 zP?1*!WYqyo|FUatV7c?ulm5viUw8Zsj!`1DH=)wBO(Lday%y@xN|OGB1vT;Hb;n5wznKGvtN7BUkjVSjKvNTJr zNi#grtNh`N=sX3j5csbo6?zvYC5d7n@#fGao>RL`PtoC*Ot z(5W#@#R%0x6n{E~Qv?W$&1DbN!!Vb#(<iC2T-@l={KRE7lD@(u4vJf~Vo$rPD@N0MSF(u%|a zBQk?JV@0Mf-Qo2F=%SgQm{)>2+>S*OS&1|pv^`<5#{g2&ZtdV zI);Sl$2oO}mWk_&6tlCgW%JSX$$akF^}Zl zDQzLt#hi>3#Yhn3kG~M}g|-;81R13*Mz$btJ8U>h<~)Jza1oWDOj08lmY{rMp-Qw` z&?tMCUZ_&MBdIqrmuPM!43gVTjM5ZNTQ<2aPha{fRjy0v+^C5~cq833$dOLO-B+}clPkKDP9fzgo<>~Dh zmdMlFaa)klC_C;7YR3ucj2+J=JQZaKv%f6O0h1(NngiF$gcmkyEg`yLkSNB1Vdy z*6%eZ#tfojyo^HcNt3t6iO14>5d9;CRy&OpyfaR$6l7eC6I-Rn-vk$yxQs}i-i55n zm+4(_O8S(p$%VC&o-$TT*dp-_g`2&S8U+Oe8FjmG(IC-87cNVWm+iuJ>G85%NDEvn zW~zSKKBU}afyS~}HQ=cz4pyJzk)rC~Ravy>s0^_w+gRXMRZgz?)Rc9r2fLEWPgnbY zopt}tzCdD2RYdH_Rm%w2(&Y-BWfOhRouRMZ+G$af27n~JuQS#Budg|^^w#WU=Sv=M z`{%`j^ZND9HThC}>u)LYjTV$09P2q&7+!Ya;`2sYKK|+8^JKp*j_nA%-_^(bd0HTH R@3SD~Xi*^Qz(eBD{{UL+-EIH? diff --git a/Source/Restock/ModuleRestockHeatEffects.cs b/Source/Restock/ModuleRestockHeatEffects.cs index c07de0c2..94c23b3e 100644 --- a/Source/Restock/ModuleRestockHeatEffects.cs +++ b/Source/Restock/ModuleRestockHeatEffects.cs @@ -13,11 +13,11 @@ namespace Restock [KSPField] public string shaderProperty = "_EmissiveColor"; // animation curve for the red channel - [KSPField] public FloatCurve redCurve= new FloatCurve(); + [KSPField] public FloatCurve redCurve = new FloatCurve(); // animation curve for the green channel [KSPField] public FloatCurve greenCurve = new FloatCurve(); - + // animation curve for the blue channel [KSPField] public FloatCurve blueCurve = new FloatCurve(); @@ -26,41 +26,44 @@ namespace Restock // draper point, the temperature in Kelvin where materials start glowing [KSPField] public double draperPoint = 798.0; - + // temperature where the animation is at its maximum [KSPField] public double lerpMax = double.NaN; - + // temperature where the animation is at its minimum, added with draperPoint [KSPField] public double lerpMin = 0.0; // use the part's core temperature? (overrides useSkinTemp) [KSPField] public bool useCoreTemp = false; - + // use the part's skin temperature? [KSPField] public bool useSkinTemp = false; // should the module disable the stock blackbody glow effect on the included renderers? [KSPField] public bool disableBlackbody = false; - - [KSPField] public List renderers = new List(); + + public List renderers = new List(); private readonly string _shaderBlackbody = "_TemperatureColor"; private ModuleCoreHeat _coreHeatModule = null; - + private int _shaderPropertyID; private int _shaderBlackbodyID; private double _lerpRange; - private Color _emissiveColor = new Color(); - private MaterialPropertyBlock _propertyBlock = new MaterialPropertyBlock(); + private Color _emissiveColor; + private MaterialPropertyBlock _propertyBlock; public void Start() { if (base.vessel == null) return; - + + _emissiveColor = new Color(); + _propertyBlock = new MaterialPropertyBlock(); + if (enableHeatEmissive) { if (useCoreTemp) @@ -72,7 +75,7 @@ namespace Restock useCoreTemp = false; } } - + if (double.IsNaN(lerpMax)) { if (useCoreTemp) @@ -95,17 +98,17 @@ namespace Restock _shaderBlackbodyID = Shader.PropertyToID(_shaderBlackbody); } } - + public override void OnLoad(ConfigNode node) { if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return; - + renderers = base.part.FindModelComponents(); - + if (node.HasValue("excludedRenderer")) { var excludedRenderers = new List(); - + excludedRenderers.AddRange(node.GetValues("excludedRenderer")); for (int i = renderers.Count - 1; i >= 0; i--) @@ -121,7 +124,7 @@ namespace Restock public void LateUpdate() { if (!HighLogic.LoadedSceneIsFlight) return; - if (renderers == null) return; + if (renderers == null) return; //when switching to the flight scene LateUpdate gets called AFTER OnLoad for some reason // so renderers should hopefully only be null for one frame @@ -136,10 +139,10 @@ namespace Restock { temp = useSkinTemp ? base.part.skinTemperature : base.part.temperature; } - + var temp2 = (float) ((temp - draperPoint) / _lerpRange); temp2 = Mathf.Clamp01(temp2); - + _emissiveColor.r = redCurve.Evaluate(temp2); _emissiveColor.g = greenCurve.Evaluate(temp2); _emissiveColor.b = blueCurve.Evaluate(temp2);