mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
GUI update
This commit is contained in:
parent
2e50221118
commit
d9e6288e3a
172 changed files with 563 additions and 116 deletions
72
Assets/Scripts/GUI/LinearScale.cs
Normal file
72
Assets/Scripts/GUI/LinearScale.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/GUI/LinearScale.cs.meta
Normal file
11
Assets/Scripts/GUI/LinearScale.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 4264bb913f7501844bf60529d6b59b8a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Add table
Add a link
Reference in a new issue