diff --git a/Assets/CineboxAndrew b/Assets/CineboxAndrew index 9bb51cac..864a8e82 160000 --- a/Assets/CineboxAndrew +++ b/Assets/CineboxAndrew @@ -1 +1 @@ -Subproject commit 9bb51cacb47afca6ecda55304bff0af55d18f821 +Subproject commit 864a8e82e28160d09be161af4af4c6a34cd46a4c diff --git a/Distribution/Restock/GameData/ReStock/Assets/Structural/restock-launchclamp-1.mu b/Distribution/Restock/GameData/ReStock/Assets/Structural/restock-launchclamp-1.mu index 1f0394d1..da6b4650 100644 Binary files a/Distribution/Restock/GameData/ReStock/Assets/Structural/restock-launchclamp-1.mu and b/Distribution/Restock/GameData/ReStock/Assets/Structural/restock-launchclamp-1.mu differ diff --git a/Distribution/Restock/GameData/ReStock/Patches/Structural/restock-structural-launchclamp.cfg b/Distribution/Restock/GameData/ReStock/Patches/Structural/restock-structural-launchclamp.cfg index 37fca7ea..e9703198 100644 --- a/Distribution/Restock/GameData/ReStock/Patches/Structural/restock-structural-launchclamp.cfg +++ b/Distribution/Restock/GameData/ReStock/Patches/Structural/restock-structural-launchclamp.cfg @@ -21,13 +21,13 @@ trf_towerYoke_name = obj_yoke trf_anchor_name = obj_ground trf_animationRoot_name = restock-clamp-1 - anim_decouple_name = deploy + anim_decouple_name = RestockLaunchClamp_Deploy } MODULE { name = ModuleAnimateGeneric - animationName = extend + animationName = RestockLaunchClamp_Extend startEventGUIName = #LOC_RestockPlus_light_rotate_on endEventGUIName = #LOC_RestockPlus_light_rotate_off actionGUIName = #LOC_RestockPlus_light_rotate_toggle diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index 074fb7ae..37560ede 100644 Binary files a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll and b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll differ diff --git a/Source/Restock/ModuleRestockLaunchClamp.cs b/Source/Restock/ModuleRestockLaunchClamp.cs index 9cfbc009..8644d74c 100644 --- a/Source/Restock/ModuleRestockLaunchClamp.cs +++ b/Source/Restock/ModuleRestockLaunchClamp.cs @@ -16,8 +16,8 @@ namespace Restock [KSPField] public Transform towerGirder; [KSPField] public Transform towerStretch; - [KSPField] private Mesh _girderSegmentMesh; - [KSPField] private Mesh _girderMesh; + [KSPField] public Mesh girderSegmentMesh; + [KSPField] public Mesh girderMesh; private List _girderVerts; private List _girderUVs; @@ -27,8 +27,6 @@ namespace Restock private List _girderTris; private int _girderSegments; - private float _girderHeight = -1f; - private bool _girderHasTangents = false; private bool _girderHasColors = false; private int _girderVertCount; @@ -38,45 +36,44 @@ namespace Restock public override void OnLoad(ConfigNode node) { - base.OnLoad(node); - - if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return; + Debug.Log("OnLoad Called"); - - } - - public override void OnStart(StartState state) - { - - Debug.Log("OnStart 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); + } - _girderMesh = towerGirder.GetComponent().mesh; - _girderSegmentMesh = Instantiate(_girderMesh); + public override void OnStart(StartState state) + { - _girderHeight = Vector3.Distance(towerStretch.position, towerAnchor.position); + Debug.Log("OnStart Called"); + Debug.Log(girderSegmentMesh == null); + girderMesh = towerGirder.GetComponent().mesh; - _girderVertCount = _girderSegmentMesh.vertexCount; - _girderTriCount = _girderSegmentMesh.triangles.Length; + _girderVertCount = girderSegmentMesh.vertexCount; + _girderTriCount = girderSegmentMesh.triangles.Length; - _girderVerts = new List(_girderSegmentMesh.vertices); - _girderUVs = new List(_girderSegmentMesh.uv); - _girderNormals = new List(_girderSegmentMesh.normals); - if (_girderSegmentMesh.tangents.Length > 0) + _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); + _girderTangents = new List(girderSegmentMesh.tangents); } - if (_girderSegmentMesh.colors32.Length > 0) + if (girderSegmentMesh.colors32.Length > 0) { _girderHasColors = true; - _girderColors = new List(_girderSegmentMesh.colors32); + _girderColors = new List(girderSegmentMesh.colors32); } - _girderTris = new List(_girderSegmentMesh.triangles); + _girderTris = new List(girderSegmentMesh.triangles); _girderSegments = 1; base.OnStart(state); @@ -97,45 +94,50 @@ namespace Restock 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 height = Vector3.Distance(towerStretch.position, towerAnchor.position); - var segments = Mathf.CeilToInt(height / _girderHeight); + var segments = Mathf.CeilToInt(height / initialHeight); if (segments != _girderSegments) { UpdateGirder(segments); } - - towerAnchor.position = towerStretch.position - (towerStretch.up * height); } private void UpdateGirder(int length) { if (length > _girderSegments) { + Debug.Log("lengthening to: " + length); for (int i = _girderSegments; i < length; i++) { - var offset = Vector3.down * _girderHeight * 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); + _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); + _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); + _girderTris.Add(girderSegmentMesh.triangles[t] + indexOffset); } } + } else { + Debug.Log("shortening to: " + length); var startIndex = length * _girderVertCount; var count = (_girderSegments - length) * _girderVertCount; Debug.Log("removing verts"); @@ -148,17 +150,18 @@ namespace Restock Debug.Log("removing tris"); _girderTris.RemoveRange(length * _girderTriCount, (_girderSegments - length) * _girderTriCount); } + Debug.Log("vertex count: "+ _girderVerts.Count); - _girderMesh.Clear(); + girderMesh.Clear(); - _girderMesh.SetVertices(_girderVerts); - _girderMesh.SetNormals(_girderNormals); - _girderMesh.SetUVs(0, _girderUVs); - if (_girderHasTangents) _girderMesh.SetTangents(_girderTangents); - if (_girderHasColors) _girderMesh.SetColors(_girderColors); - _girderMesh.SetTriangles(_girderTris, 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); - _girderMesh.RecalculateBounds(); + girderMesh.RecalculateBounds(); _girderSegments = length; } }