Fix merge

This commit is contained in:
ChrisAdderley 2019-10-24 13:48:44 -07:00
commit 099bb79f36
36 changed files with 54 additions and 121 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

View File

@ -5,8 +5,8 @@
// - Rockomax HubMax Multi-Point Connector (stationHub) // - Rockomax HubMax Multi-Point Connector (stationHub)
// - BZ-52 Radial Attachment Point (stackPoint1) // - BZ-52 Radial Attachment Point (stackPoint1)
// - TVR-200 Stack Bi-Coupler (stackBiCoupler_v2) // - TVR-200 Stack Bi-Coupler (stackBiCoupler_v2)
// - TVR-300 Stack Tri-Coupler (stackTriCoupler_v2) // - TVR-1180C Mk1 Stack Tri-Coupler (stackTriCoupler_v2)
// - TVR-400 Stack Quad-Coupler (stackQuadCoupler) // - TVR-2160C Mk2 Stack Quad-Coupler (stackQuadCoupler)
@PART[adapterSmallMiniTall] @PART[adapterSmallMiniTall]
{ {

View File

@ -81,6 +81,7 @@ This mod primarily uses vanilla-provided localization, but for additional string
- French (Challyss) - French (Challyss)
- Brazilian Portuguese (AluisioASG) - Brazilian Portuguese (AluisioASG)
- Spanish (Niako) - Spanish (Niako)
- Simplified Chinese (Duck1998)
========= =========
LICENSING LICENSING

View File

@ -36,6 +36,7 @@ LOCALIZATION
This mod primarily uses vanilla-provided localization, but for additional strings, it provides localization support for the following languages: This mod primarily uses vanilla-provided localization, but for additional strings, it provides localization support for the following languages:
- English - English
- Simplified Chinese (Duck1998)
========= =========
LICENSING LICENSING

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

View File

@ -1,6 +1,6 @@
v0.2.0 v1.0.0
------ ------
- KSP 1.8 support - KSP 1.8 compatability
- Phase 2 release - Phase 2 release
- Changes to existing parts (as a result of KSP 1.8) - Changes to existing parts (as a result of KSP 1.8)
- Redundant overlapping parts were removed - Redundant overlapping parts were removed

View File

@ -71,6 +71,7 @@ This mod provides localization support for the following languages:
- German (woeller) - German (woeller)
- Brazilian Portuguese (AluisioASG) - Brazilian Portuguese (AluisioASG)
- Spanish (Niako) - Spanish (Niako)
- Simplified Chinese (Duck1998)
========= =========
LICENSING LICENSING

View File

@ -1,6 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEngine; using UnityEngine;
namespace Restock namespace Restock
@ -9,156 +7,88 @@ namespace Restock
{ {
[KSPField] public string trf_towerGirder_name = ""; [KSPField] public string trf_towerGirder_name = "";
[KSPField] public string trf_towerYoke_name = ""; [KSPField] public string trf_towerYoke_name = "";
[KSPField] public Transform towerPivot; [KSPField] public Transform towerPivot;
[KSPField] public Transform towerYoke; [KSPField] public Transform towerYoke;
[KSPField] public Transform towerAnchor; [KSPField] public Transform towerAnchor;
[KSPField] public Transform towerGirder; [KSPField] public Transform towerGirder;
[KSPField] public Transform towerStretch; [KSPField] public Transform towerStretch;
[KSPField] public int maxSegments = 100;
[KSPField] public Mesh girderSegmentMesh;
[KSPField] public Mesh girderMesh;
private List<Vector3> _girderVerts;
private List<Vector2> _girderUVs;
private List<Vector3> _girderNormals;
private List<Vector4> _girderTangents;
private List<Color32> _girderColors;
private List<int> _girderTris;
private int _girderSegments;
private bool _girderHasTangents = false;
private bool _girderHasColors = false;
private int _girderVertCount;
private int _girderTriCount;
private bool _flightUpdate = false; private bool _flightUpdate = false;
private Material _girderMaterial;
private Mesh _girderMesh;
private int _girderSegments;
private Matrix4x4[] _girderMatrices;
public override void OnLoad(ConfigNode node) public override void OnLoad(ConfigNode node)
{ {
Debug.Log("OnLoad Called");
towerPivot = base.part.FindModelTransform(trf_towerPivot_name); towerPivot = base.part.FindModelTransform(trf_towerPivot_name);
towerYoke = base.part.FindModelTransform(trf_towerYoke_name); towerYoke = base.part.FindModelTransform(trf_towerYoke_name);
towerAnchor = base.part.FindModelTransform(trf_anchor_name); towerAnchor = base.part.FindModelTransform(trf_anchor_name);
towerGirder = base.part.FindModelTransform(trf_towerGirder_name); towerGirder = base.part.FindModelTransform(trf_towerGirder_name);
towerStretch = base.part.FindModelTransform(trf_towerStretch_name); towerStretch = base.part.FindModelTransform(trf_towerStretch_name);
girderMesh = towerGirder.GetComponent<MeshFilter>().mesh;
girderSegmentMesh = Instantiate<Mesh>(girderMesh);
base.OnLoad(node); base.OnLoad(node);
} }
public override void OnStart(StartState state) public override void OnStart(StartState state)
{ {
Debug.Log("OnStart Called");
Debug.Log(girderSegmentMesh == null);
girderMesh = towerGirder.GetComponent<MeshFilter>().mesh;
_girderVertCount = girderSegmentMesh.vertexCount;
_girderTriCount = girderSegmentMesh.triangles.Length;
_girderVerts = new List<Vector3>(girderSegmentMesh.vertices);
_girderUVs = new List<Vector2>(girderSegmentMesh.uv);
_girderNormals = new List<Vector3>(girderSegmentMesh.normals);
if (girderSegmentMesh.tangents.Length > 0)
{
_girderHasTangents = true;
_girderTangents = new List<Vector4>(girderSegmentMesh.tangents);
}
if (girderSegmentMesh.colors32.Length > 0)
{
_girderHasColors = true;
_girderColors = new List<Color32>(girderSegmentMesh.colors32);
}
_girderTris = new List<int>(girderSegmentMesh.triangles);
_girderSegments = 1;
base.OnStart(state); base.OnStart(state);
var girderRenderer = towerGirder.GetComponent<MeshRenderer>();
_girderMaterial = girderRenderer.material;
_girderMesh = towerGirder.GetComponent<MeshFilter>().mesh;
girderRenderer.enabled = false; // we'll render manually from now on
UpdateClamp(); _girderSegments = 0;
_girderMatrices = new Matrix4x4[maxSegments];
_girderMaterial.enableInstancing = true;
if (!_girderMaterial.enableInstancing)
{
this.LogError("Could not enable instancing! Aborting");
_girderSegments = -1;
return;
}
} }
public void LateUpdate() public void LateUpdate()
{ {
if (_girderSegments < 0) return;
if (!HighLogic.LoadedSceneIsEditor) if (!HighLogic.LoadedSceneIsEditor)
{ {
if (_flightUpdate) return; if (_flightUpdate) return;
else _flightUpdate = true; else _flightUpdate = true;
} }
UpdateClamp(); var height1 = HighLogic.LoadedSceneIsEditor ? towerStretch.position.y : base.height;
} var initialHeight1 = base.initialHeight;
public void UpdateClamp() towerAnchor.position = towerStretch.position - (towerStretch.up * height1);
{
var height = base.height;
var initialHeight = base.initialHeight;
towerAnchor.position = towerStretch.position - (towerStretch.up * height);
var vec1 = Vector3.down; var vec1 = Vector3.down;
var vec2 = towerAnchor.localPosition - towerYoke.localPosition ; var vec2 = towerAnchor.localPosition - towerYoke.localPosition;
towerYoke.localRotation = Quaternion.FromToRotation(vec1, vec2); towerYoke.localRotation = Quaternion.FromToRotation(vec1, vec2);
var segments = Mathf.CeilToInt(height / initialHeight);
if (segments != _girderSegments)
{
UpdateGirder(segments);
}
}
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);
}
}
}
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);
}
girderMesh.Clear(); _girderSegments = Mathf.CeilToInt(height1 / base.initialHeight);
_girderSegments = Math.Min(_girderSegments, maxSegments);
_girderSegments = Math.Max(_girderSegments, 0);
girderMesh.SetVertices(_girderVerts); var matrix = towerGirder.localToWorldMatrix;
girderMesh.SetNormals(_girderNormals); var offset = Matrix4x4.Translate(matrix.MultiplyVector(Vector3.down * base.initialHeight));
girderMesh.SetUVs(0, _girderUVs);
if (_girderHasTangents) girderMesh.SetTangents(_girderTangents);
if (_girderHasColors) girderMesh.SetColors(_girderColors);
girderMesh.SetTriangles(_girderTris, 0);
girderMesh.RecalculateBounds(); for (int i = 0; i < _girderSegments; i++)
_girderSegments = length; {
_girderMatrices[i] = matrix;
matrix *= offset;
}
Graphics.DrawMeshInstanced(_girderMesh, 0, _girderMaterial, _girderMatrices, _girderSegments, part.mpb);
} }
} }
} }