mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
added parent tracking, changed spiral placement ui, preparing for placing by pointOnParent
This commit is contained in:
parent
53437974eb
commit
6d62d2cebf
@ -332,7 +332,8 @@ namespace NewHorizons.Builder.Props
|
|||||||
|
|
||||||
var parent = parentID == -1 ? null : arcsByID[parentID];
|
var parent = parentID == -1 ? null : arcsByID[parentID];
|
||||||
|
|
||||||
GameObject arc = MakeArc(arcInfo, conversationZone, parent, textEntryID, i);
|
GameObject arc = MakeArc(arcInfo, conversationZone, parent, textEntryID);
|
||||||
|
arc.name = $"Arc {i} - Child of {parentID}";
|
||||||
|
|
||||||
arcsByID.Add(textEntryID, arc);
|
arcsByID.Add(textEntryID, arc);
|
||||||
|
|
||||||
@ -340,7 +341,7 @@ namespace NewHorizons.Builder.Props
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static GameObject MakeArc(PropModule.NomaiTextArcInfo arcInfo, GameObject conversationZone, GameObject parent, int textEntryID, int i)
|
internal static GameObject MakeArc(PropModule.NomaiTextArcInfo arcInfo, GameObject conversationZone, GameObject parent, int textEntryID)
|
||||||
{
|
{
|
||||||
GameObject arc;
|
GameObject arc;
|
||||||
var type = arcInfo != null ? arcInfo.type : PropModule.NomaiTextArcInfo.NomaiTextArcType.Adult;
|
var type = arcInfo != null ? arcInfo.type : PropModule.NomaiTextArcInfo.NomaiTextArcType.Adult;
|
||||||
@ -398,7 +399,6 @@ namespace NewHorizons.Builder.Props
|
|||||||
|
|
||||||
arc.GetComponent<NomaiTextLine>().SetEntryID(textEntryID);
|
arc.GetComponent<NomaiTextLine>().SetEntryID(textEntryID);
|
||||||
arc.GetComponent<MeshRenderer>().enabled = false;
|
arc.GetComponent<MeshRenderer>().enabled = false;
|
||||||
arc.name = $"Arc {i}";
|
|
||||||
|
|
||||||
arc.SetActive(true);
|
arc.SetActive(true);
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using static NewHorizons.External.Modules.PropModule;
|
using static NewHorizons.External.Modules.PropModule;
|
||||||
@ -45,6 +46,9 @@ namespace NewHorizons.Utility.DebugMenu
|
|||||||
|
|
||||||
public string planetName;
|
public string planetName;
|
||||||
public int id;
|
public int id;
|
||||||
|
public int parentID;
|
||||||
|
|
||||||
|
public int pointOnParent = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ConversationMetadata> conversations = new List<ConversationMetadata>();
|
List<ConversationMetadata> conversations = new List<ConversationMetadata>();
|
||||||
@ -117,6 +121,12 @@ namespace NewHorizons.Utility.DebugMenu
|
|||||||
id = id
|
id = id
|
||||||
};
|
};
|
||||||
|
|
||||||
|
string regex = @"Arc \d+ - Child of (\d*)"; // $"Arc {i} - Child of {parentID}";
|
||||||
|
var parentID = (new Regex(regex)).Matches(metadata.spiralGo.name)[0].Groups[1].Value;
|
||||||
|
metadata.parentID = parentID == "" ? -1 : int.Parse(parentID);
|
||||||
|
|
||||||
|
Logger.Log("Parent id for '" + metadata.spiralGo.name + "' : " + parentID);
|
||||||
|
|
||||||
conversationMetadata.spirals.Add(metadata);
|
conversationMetadata.spirals.Add(metadata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -253,41 +263,58 @@ namespace NewHorizons.Utility.DebugMenu
|
|||||||
GUI.enabled = true;
|
GUI.enabled = true;
|
||||||
GUILayout.EndHorizontal();
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
// x
|
var shouldBeInManual = spiralMeta.parentID < 0 || GUILayout.Toggle(spiralMeta.pointOnParent < 0, "Manual Positioning");
|
||||||
GUILayout.BeginHorizontal();
|
if ( shouldBeInManual && spiralMeta.pointOnParent >= 0) spiralMeta.pointOnParent = -1;
|
||||||
GUILayout.Label("x: " + (spiralMeta.spiral.position?.x ?? 0), GUILayout.Width(100));
|
if (!shouldBeInManual && spiralMeta.pointOnParent < 0 ) spiralMeta.pointOnParent = 0;
|
||||||
//var deltaX = GUILayout.HorizontalSlider(0, -1, 1);
|
|
||||||
float deltaX = 0;
|
|
||||||
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaX += dx;
|
|
||||||
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaX -= dx;
|
|
||||||
dx = float.Parse(GUILayout.TextField(dx+"", GUILayout.Width(100)));
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
// y
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("y: " + (spiralMeta.spiral.position?.y ?? 0), GUILayout.Width(100));
|
|
||||||
//var deltaY = GUILayout.HorizontalSlider(0, -1, 1);
|
|
||||||
float deltaY = 0;
|
|
||||||
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaY += dy;
|
|
||||||
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaY -= dy;
|
|
||||||
dy = float.Parse(GUILayout.TextField(dy+"", GUILayout.Width(100)));
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
// theta
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("theta: " + spiralMeta.spiral.zRotation, GUILayout.Width(100));
|
|
||||||
//var deltaTheta = GUILayout.HorizontalSlider(0, -1, 1);
|
|
||||||
float deltaTheta = 0;
|
|
||||||
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaTheta += dT;
|
|
||||||
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaTheta -= dT;
|
|
||||||
dT = float.Parse(GUILayout.TextField(dT+"", GUILayout.Width(100)));
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
if (deltaX != 0 || deltaY != 0 || deltaTheta != 0)
|
if (shouldBeInManual)
|
||||||
{
|
{
|
||||||
spiralMeta.spiral.position = (spiralMeta.spiral.position??Vector2.zero) + new Vector2(deltaX, deltaY);
|
// x
|
||||||
spiralMeta.spiral.zRotation += deltaTheta;
|
GUILayout.BeginHorizontal();
|
||||||
|
var positionX = (spiralMeta.spiral.position?.x ?? 0);
|
||||||
|
GUILayout.Label("x: ", GUILayout.Width(50));
|
||||||
|
float deltaX = float.Parse(GUILayout.TextField(positionX+"", GUILayout.Width(50))) - positionX;
|
||||||
|
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaX += dx;
|
||||||
|
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaX -= dx;
|
||||||
|
dx = float.Parse(GUILayout.TextField(dx+"", GUILayout.Width(100)));
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
// y
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
var positionY = (spiralMeta.spiral.position?.y ?? 0);
|
||||||
|
GUILayout.Label("y: ", GUILayout.Width(50));
|
||||||
|
float deltaY = float.Parse(GUILayout.TextField(positionY+"", GUILayout.Width(50))) - positionY;
|
||||||
|
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaY += dy;
|
||||||
|
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaY -= dy;
|
||||||
|
dy = float.Parse(GUILayout.TextField(dy+"", GUILayout.Width(100)));
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
// theta
|
||||||
|
GUILayout.BeginHorizontal();
|
||||||
|
var theta = spiralMeta.spiral.zRotation;
|
||||||
|
GUILayout.Label("theta: ", GUILayout.Width(50));
|
||||||
|
float deltaTheta = float.Parse(GUILayout.TextField(theta+"", GUILayout.Width(50))) - theta;
|
||||||
|
if (GUILayout.Button("+", GUILayout.ExpandWidth(false))) deltaTheta += dT;
|
||||||
|
if (GUILayout.Button("-", GUILayout.ExpandWidth(false))) deltaTheta -= dT;
|
||||||
|
dT = float.Parse(GUILayout.TextField(dT+"", GUILayout.Width(100)));
|
||||||
|
GUILayout.EndHorizontal();
|
||||||
|
|
||||||
spiralMeta.spiralGo.transform.localPosition = new Vector3(spiralMeta.spiral.position.x, spiralMeta.spiral.position.y, 0);
|
if (deltaX != 0 || deltaY != 0 || deltaTheta != 0)
|
||||||
spiralMeta.spiralGo.transform.localRotation = Quaternion.Euler(0, 0, spiralMeta.spiral.zRotation);
|
{
|
||||||
|
spiralMeta.spiral.position = (spiralMeta.spiral.position??Vector2.zero) + new Vector2(deltaX, deltaY);
|
||||||
|
spiralMeta.spiral.zRotation += deltaTheta;
|
||||||
|
|
||||||
|
spiralMeta.spiralGo.transform.localPosition = new Vector3(spiralMeta.spiral.position.x, spiralMeta.spiral.position.y, 0);
|
||||||
|
spiralMeta.spiralGo.transform.localRotation = Quaternion.Euler(0, 0, spiralMeta.spiral.zRotation);
|
||||||
|
|
||||||
|
spiralMeta.pointOnParent = -1; // since tweaks have been made, we're setting this to manual mode
|
||||||
|
|
||||||
|
UpdateChildrenLocations(spiralMeta);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// var newPointOnParent = GUI.HorizontalSlider(); // stepped horizontal slider
|
||||||
|
// if new value, set spiral GO positioning (and spiral's x/y/theta)
|
||||||
|
// UpdateChildPositions()
|
||||||
}
|
}
|
||||||
GUILayout.EndVertical();
|
GUILayout.EndVertical();
|
||||||
GUILayout.Space(5);
|
GUILayout.Space(5);
|
||||||
@ -300,7 +327,7 @@ namespace NewHorizons.Utility.DebugMenu
|
|||||||
var conversationZone = spiralMeta.spiralGo.transform.parent.gameObject;
|
var conversationZone = spiralMeta.spiralGo.transform.parent.gameObject;
|
||||||
var textEntryId = spiralMeta.spiralGo.GetComponent<NomaiTextLine>()._entryID;
|
var textEntryId = spiralMeta.spiralGo.GetComponent<NomaiTextLine>()._entryID;
|
||||||
GameObject.Destroy(spiralMeta.spiralGo);
|
GameObject.Destroy(spiralMeta.spiralGo);
|
||||||
spiralMeta.spiralGo = NomaiTextBuilder.MakeArc(spiralMeta.spiral, conversationZone, null, textEntryId, 0);
|
spiralMeta.spiralGo = NomaiTextBuilder.MakeArc(spiralMeta.spiral, conversationZone, null, textEntryId);
|
||||||
}
|
}
|
||||||
|
|
||||||
GUILayout.Space(10);
|
GUILayout.Space(10);
|
||||||
@ -318,6 +345,20 @@ namespace NewHorizons.Utility.DebugMenu
|
|||||||
GUILayout.EndScrollView();
|
GUILayout.EndScrollView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateChildrenLocations(SpiralMetadata parentSprialMetadata)
|
||||||
|
{
|
||||||
|
ConversationMetadata convoMeta = conversations.Where(m => m.conversation == parentSprialMetadata.conversation).First();
|
||||||
|
convoMeta.spirals
|
||||||
|
.Where(spiralMeta => spiralMeta.parentID == parentSprialMetadata.id)
|
||||||
|
.ToList()
|
||||||
|
.ForEach(spiralMeta => {
|
||||||
|
if (spiralMeta.pointOnParent == -1) return; // this spiral is positioned manually
|
||||||
|
|
||||||
|
// TODO: set x, y, and theta of spiralMeta based on spiralMeta.pointOnParent and parentSprialMetadata's x,y,theta
|
||||||
|
UpdateChildrenLocations(spiralMeta);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private int GetVarietyCountForType(NomaiTextArcInfo.NomaiTextArcType type)
|
private int GetVarietyCountForType(NomaiTextArcInfo.NomaiTextArcType type)
|
||||||
{
|
{
|
||||||
switch(type)
|
switch(type)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user