GUI update

This commit is contained in:
AbstractConcept 2022-10-20 21:35:10 -05:00
parent 2e50221118
commit d9e6288e3a
172 changed files with 563 additions and 116 deletions

View file

@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace RimWorldAnimationStudio
{
public class LinearScale : Singleton<LinearScale>
{
public int targetDivisions = 30;
public List<int> divisionBands = new List<int>() { 5, 10, 25, 50, 100, 250, 500, 1000 };
public GameObject linearScaleTickPrefab;
private List<int> divisions = new List<int>();
private float minDiff = -1f;
private RectTransform rect;
private int lastStageWindowSize = -1;
public void Start()
{
rect = GetComponent<RectTransform>();
}
public void Update()
{
if (lastStageWindowSize != Workspace.StageWindowSize)
{
UpdateLinearScale();
lastStageWindowSize = Workspace.StageWindowSize;
}
}
public void UpdateLinearScale()
{
if (Workspace.animationDef == null) return;
minDiff = -1f;
foreach (int division in divisionBands)
{
float numDivisions = (float)Workspace.StageWindowSize / division;
if (minDiff >= 0f && Mathf.Abs(targetDivisions - numDivisions) > minDiff) continue;
minDiff = Mathf.Abs(targetDivisions - numDivisions);
int i = 0;
divisions.Clear();
while (i + division <= Workspace.StageWindowSize)
{
i += division;
divisions.Add(i);
}
}
foreach (Transform child in transform)
{ Destroy(child.gameObject); }
foreach (int division in divisions)
{
GameObject obj = Instantiate(linearScaleTickPrefab, transform);
obj.GetComponentInChildren<Text>().text = division.ToString();
float xOffset = ((float)(division - 1) / (Workspace.StageWindowSize - 1)) * transform.parent.GetComponent<RectTransform>().rect.width;
obj.GetComponent<RectTransform>().localPosition = new Vector3(xOffset, 0, 0);
}
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4264bb913f7501844bf60529d6b59b8a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -15,7 +15,7 @@ namespace RimWorldAnimationStudio
public static int defaultAnimationClipLength = 600;
public static int minTick = 1;
public static int minAnimationClipLength = 2;
public static int minAnimationClipLength = 5;
public static int maxAnimationClipLength = 9999;
public static Color ColorWhite = new Color(1f, 1f, 1f);