From 7ab6df3bd4cc219769c82a1cc55dfbc4c618dd99 Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Tue, 22 Oct 2019 12:48:39 -0700 Subject: [PATCH] Update launch clamp module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Use instancing instead of editing the mesh to extend the launch clamp girder • Calculate length from local position when in editor to avoid slight delay --- .../GameData/ReStock/Plugins/Restock.dll | Bin 37376 -> 36352 bytes Source/Restock/ModuleRestockLaunchClamp.cs | 158 +++++------------- 2 files changed, 44 insertions(+), 114 deletions(-) diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index 74a4d8233f157ceb38c2ae95365479930c97e01a..8f43cb39c41df3a35c3e1d72445c072f8f7b7428 100644 GIT binary patch literal 36352 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

)W8 zj@CZz5EclVQ|NLJ9N6cAaXC=ImpOKz|GbJR!6JKnpWS!ima6$juXW?wTKJL~1DyeX z9n8%{H_QgV#9t@WsNtVEb1~3#%!X`+dprgQPe7Q&Wz-;Ua`0mGcFzAkgXbJujT~Y0 zSIqM=r(R+3n#%}n%5%I9AwgU&ml1CBp(2@^fDGdD;YxVf@R*x*qZ()}t_zt@{2cN| zYe2!Do^XZ=Qnu+ha~4d(aDSM07$t&4Sehj_?=h$>=~Zm@SC7mhOw6rel2U#2E3J>HFqSe+Kq|bW(p69@Jbfp z57y4izua8=_`S6!W2>Dzrx`ytHA|!EbK-Lro_Xf{1&wnOb9Xe(?`dvsTr_`Pb7S}1 zp83s-ntOT{G~v*S;zL(s+aY*6-Q)nc4+t zYj9FNi{H=3<1+q6M3~Fe=5uPndxl2Mc9WaNzVTFl@-Ga^H{J+!%z4LRW8dCTUu&ba z_&FV?)RgH=(r}meNb(OO>kD6aJL%W?Xud|X|B=$_ol^C6 zIr3|SKPmRM(-Gfo-uWHU)^1?$>BsfOkKnpWbrD16!;kP_X9yR#8`srH6n!QZr8&8= zv#s;7mp}T%Mcw~??wuu`Wt%?#R)S^B-kiaUB(w1v>7MR5USH`MnvExc{O)W9ZNS@i z-IqA`M9=I_v4qpO+2)Rmk;bd3nS?`Y8tBtJK=R~GRRb>XFwHhv=r@3hL7?Gg!jWtYpmJp(evH+`(I|A+mH zEWp1Di#URLZLB~Jh=gTXEhx^LYzzzxgv=N)=A? z`JCH1x)KKZl>3ViszE1yE}%B^CraWU)Af882Q0N8NnVi*sf9 zoP%#}J9)hMPZysKgJT0qSvc(Aa~DV(P?x*5%Tcj4}c!c@q;2~f$F1~Yn7UFkAG_fF`9rAkse0H=BP|mc+$>&pX zJ|@9mamH^CXgKA?x5%UfTVw$3Wet0Apn#KavC>#tE!~SY|D$%OC4R2n3?2DzTCm*< z^{F1_V<0{#VXHd5K(t)iwBFW*dzjng^s#eFKHhePwkaEKKza2vna|V;78zd-f4@R( tK9+yH^1f<=~!}b4t{(onI{|hzoL5TnW literal 37376 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 VfJ0kUeuMNMr}qD8`u~Rq{tt*>RE+=t diff --git a/Source/Restock/ModuleRestockLaunchClamp.cs b/Source/Restock/ModuleRestockLaunchClamp.cs index cc0b0cef..38d9cc53 100644 --- a/Source/Restock/ModuleRestockLaunchClamp.cs +++ b/Source/Restock/ModuleRestockLaunchClamp.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Reflection; using UnityEngine; namespace Restock @@ -9,156 +7,88 @@ namespace Restock { [KSPField] public string trf_towerGirder_name = ""; [KSPField] public string trf_towerYoke_name = ""; - + [KSPField] public Transform towerPivot; [KSPField] public Transform towerYoke; [KSPField] public Transform towerAnchor; [KSPField] public Transform towerGirder; [KSPField] public Transform towerStretch; + [KSPField] public int maxSegments = 100; - [KSPField] public Mesh girderSegmentMesh; - [KSPField] public Mesh girderMesh; - - private List _girderVerts; - private List _girderUVs; - private List _girderNormals; - private List _girderTangents; - private List _girderColors; - private List _girderTris; - private int _girderSegments; - - private bool _girderHasTangents = false; - private bool _girderHasColors = false; - private int _girderVertCount; - private int _girderTriCount; - private bool _flightUpdate = false; + private Material _girderMaterial; + private Mesh _girderMesh; + + private int _girderSegments; + private Matrix4x4[] _girderMatrices; public override void OnLoad(ConfigNode node) { - Debug.Log("OnLoad Called"); - towerPivot = base.part.FindModelTransform(trf_towerPivot_name); towerYoke = base.part.FindModelTransform(trf_towerYoke_name); towerAnchor = base.part.FindModelTransform(trf_anchor_name); towerGirder = base.part.FindModelTransform(trf_towerGirder_name); towerStretch = base.part.FindModelTransform(trf_towerStretch_name); - - girderMesh = towerGirder.GetComponent().mesh; - girderSegmentMesh = Instantiate(girderMesh); - + base.OnLoad(node); } public override void OnStart(StartState state) { + base.OnStart(state); - Debug.Log("OnStart Called"); - Debug.Log(girderSegmentMesh == null); - girderMesh = towerGirder.GetComponent().mesh; - - _girderVertCount = girderSegmentMesh.vertexCount; - _girderTriCount = girderSegmentMesh.triangles.Length; + var girderRenderer = towerGirder.GetComponent(); + _girderMaterial = girderRenderer.material; + _girderMesh = towerGirder.GetComponent().mesh; + + girderRenderer.enabled = false; // we'll render manually from now on - _girderVerts = new List(girderSegmentMesh.vertices); - _girderUVs = new List(girderSegmentMesh.uv); - _girderNormals = new List(girderSegmentMesh.normals); - if (girderSegmentMesh.tangents.Length > 0) - { - _girderHasTangents = true; - _girderTangents = new List(girderSegmentMesh.tangents); - } - if (girderSegmentMesh.colors32.Length > 0) + _girderSegments = 0; + _girderMatrices = new Matrix4x4[maxSegments]; + + _girderMaterial.enableInstancing = true; + if (!_girderMaterial.enableInstancing) { - _girderHasColors = true; - _girderColors = new List(girderSegmentMesh.colors32); + this.LogError("Could not enable instancing! Aborting"); + _girderSegments = -1; + return; } - _girderTris = new List(girderSegmentMesh.triangles); - _girderSegments = 1; - - base.OnStart(state); - - UpdateClamp(); } - + public void LateUpdate() { + + if (_girderSegments < 0) return; + if (!HighLogic.LoadedSceneIsEditor) { if (_flightUpdate) return; else _flightUpdate = true; } - - UpdateClamp(); - } - - public void UpdateClamp() - { - var height = base.height; - var initialHeight = base.initialHeight; - - towerAnchor.position = towerStretch.position - (towerStretch.up * height); - - var vec1 = Vector3.down; - var vec2 = towerAnchor.localPosition - towerYoke.localPosition ; - towerYoke.localRotation = Quaternion.FromToRotation(vec1, vec2); - var segments = Mathf.CeilToInt(height / initialHeight); - if (segments != _girderSegments) - { - UpdateGirder(segments); - } - } + var height1 = HighLogic.LoadedSceneIsEditor ? towerStretch.position.y : base.height; + var initialHeight1 = base.initialHeight; - private void UpdateGirder(int length) - { - if (length > _girderSegments) - { - for (int i = _girderSegments; i < length; i++) - { - var offset = Vector3.down * base.initialHeight * i; - var indexOffset = _girderVertCount * i; - for (int v = 0; v < _girderVertCount; v++) - { - _girderVerts.Add(girderSegmentMesh.vertices[v] + offset); - } - _girderNormals.AddRange(girderSegmentMesh.normals); - _girderUVs.AddRange(girderSegmentMesh.uv); - - if (_girderHasTangents) _girderTangents.AddRange(girderSegmentMesh.tangents); - if (_girderHasColors) _girderColors.AddRange(girderSegmentMesh.colors32); - - for (int t = 0; t < _girderTriCount; t++) - { - _girderTris.Add(girderSegmentMesh.triangles[t] + indexOffset); - } - } + towerAnchor.position = towerStretch.position - (towerStretch.up * height1); - } - else - { - var startIndex = length * _girderVertCount; - var count = (_girderSegments - length) * _girderVertCount; - _girderVerts.RemoveRange(startIndex, count); - _girderNormals.RemoveRange(startIndex, count); - _girderUVs.RemoveRange(startIndex, count); - if (_girderHasTangents) _girderTangents.RemoveRange(startIndex, count); - if (_girderHasColors) _girderColors.RemoveRange(startIndex, count); - - _girderTris.RemoveRange(length * _girderTriCount, (_girderSegments - length) * _girderTriCount); - } + var vec1 = Vector3.down; + var vec2 = towerAnchor.localPosition - towerYoke.localPosition; + towerYoke.localRotation = Quaternion.FromToRotation(vec1, vec2); - girderMesh.Clear(); + _girderSegments = Mathf.CeilToInt(height1 / base.initialHeight); + _girderSegments = Math.Min(_girderSegments, maxSegments); + _girderSegments = Math.Max(_girderSegments, 0); - girderMesh.SetVertices(_girderVerts); - girderMesh.SetNormals(_girderNormals); - girderMesh.SetUVs(0, _girderUVs); - if (_girderHasTangents) girderMesh.SetTangents(_girderTangents); - if (_girderHasColors) girderMesh.SetColors(_girderColors); - girderMesh.SetTriangles(_girderTris, 0); + var matrix = towerGirder.localToWorldMatrix; + var offset = Matrix4x4.Translate(matrix.MultiplyVector(Vector3.down * base.initialHeight)); - girderMesh.RecalculateBounds(); - _girderSegments = length; + for (int i = 0; i < _girderSegments; i++) + { + _girderMatrices[i] = matrix; + matrix *= offset; + } + + Graphics.DrawMeshInstanced(_girderMesh, 0, _girderMaterial, _girderMatrices, _girderSegments, part.mpb); } } } \ No newline at end of file