editor fully scaleable

This commit is contained in:
minenice55
2022-06-29 21:58:21 -04:00
parent af07c6957f
commit d1ee45fe7a
13 changed files with 2361 additions and 784 deletions

View File

@ -0,0 +1,27 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using TMPro;
using Starpelly;
namespace HeavenStudio.Editor.Track
{
public class LayerLabel : MonoBehaviour
{
[SerializeField] private RectTransform rect;
// Update is called once per frame
void Update()
{
//convert timeline layer scale to screen space
Camera cam = Editor.instance.EditorCamera;
float layerScaleDist = cam.WorldToScreenPoint(Timeline.instance.LayerCorners[1]).y - Camera.main.WorldToScreenPoint(Timeline.instance.LayerCorners[0]).y;
float modScale = Timeline.GetScaleModifier();
rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, layerScaleDist/4 * (1/modScale));
}
}
}

View File

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

View File

@ -68,6 +68,7 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private RectTransform TimelineSongPosLineRef;
[SerializeField] private RectTransform TimelineEventObjRef;
[SerializeField] private RectTransform LayersRect;
public TempoTimeline TempoInfo;
public VolumeTimeline VolumeInfo;
private RectTransform TimelineSongPosLine;
@ -83,6 +84,8 @@ namespace HeavenStudio.Editor.Track
public Button MusicVolumeBTN;
public Slider PlaybackSpeed;
public Vector3[] LayerCorners = new Vector3[4];
public static Timeline instance { get; private set; }
public bool userIsEditingInputField
@ -338,6 +341,22 @@ namespace HeavenStudio.Editor.Track
{
timelineState.SetState(false, false, true);
}
LayersRect.GetWorldCorners(LayerCorners);
}
public static float GetScaleModifier()
{
Camera cam = Editor.instance.EditorCamera;
Vector2 scalerReferenceResolution = new Vector2(1280, 720);
return Mathf.Pow(cam.pixelWidth/scalerReferenceResolution.x, 1f)*
Mathf.Pow(cam.pixelHeight/scalerReferenceResolution.y, 0f);
}
public Vector2 LayerCornersToDist()
{
Vector3[] v = LayerCorners;
return new Vector2(Mathf.Abs(v[1].x - v[2].x), Mathf.Abs(v[3].y - v[1].y));
}
private void SliderControl()

View File

@ -26,7 +26,7 @@ namespace HeavenStudio.Editor.Track
[SerializeField] private RectTransform resizeGraphic;
[SerializeField] private RectTransform leftDrag;
[SerializeField] private RectTransform rightDrag;
private GameObject moveTemp;
// private GameObject moveTemp;
[Header("Properties")]
public Beatmap.Entity entity;
@ -61,8 +61,9 @@ namespace HeavenStudio.Editor.Track
lastMovePos = transform.localPosition;
moveTemp = new GameObject();
moveTemp.transform.SetParent(this.transform.parent);
// what the fuck????
// moveTemp = new GameObject();
// moveTemp.transform.SetParent(this.transform.parent);
bool visible = rectTransform.IsVisibleFrom(Editor.instance.EditorCamera);
for (int i = 0; i < this.transform.childCount; i++)
@ -105,7 +106,7 @@ namespace HeavenStudio.Editor.Track
#endregion
SetColor(GetTrack());
SetColor(entity.track);
if (selected)
{
@ -132,6 +133,20 @@ namespace HeavenStudio.Editor.Track
if (Conductor.instance.NotStopped())
{
Cancel();
if (moving)
moving = false;
if (selected)
{
selected = false;
selectedImage.gameObject.SetActive(false);
for (int i = 0; i < outline.childCount; i++)
outline.GetChild(i).GetComponent<Image>().color = new Color32(0, 0, 0, 51);
}
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, Timeline.instance.LayerHeight());
this.transform.localPosition = new Vector3(this.transform.localPosition.x, -entity.track * Timeline.instance.LayerHeight());
return;
}
@ -157,14 +172,11 @@ namespace HeavenStudio.Editor.Track
lastPos_ = transform.localPosition;
this.transform.position = new Vector3(mousePos.x - startPosX, mousePos.y - startPosY - 0.40f, 0);
this.transform.localPosition = new Vector3(Mathf.Clamp(Mathp.Round2Nearest(this.transform.localPosition.x, Timeline.SnapInterval()), 0, Mathf.Infinity), Timeline.instance.SnapToLayer(this.transform.localPosition.y));
// moveTemp.transform.position = new Vector3(mousePos.x - startPosX, mousePos.y - startPosY - 0.40f, 0);
// moveTemp.transform.localPosition = new Vector3(Mathf.Clamp(Mathp.Round2Nearest(moveTemp.transform.localPosition.x, 0.25f), 0, Mathf.Infinity), Timeline.instance.SnapToLayer(moveTemp.transform.localPosition.y));
this.transform.localPosition = new Vector3(Mathf.Max(Mathp.Round2Nearest(this.transform.localPosition.x, Timeline.SnapInterval()), 0), Timeline.instance.SnapToLayer(this.transform.localPosition.y));
if (lastPos != transform.localPosition)
{
OnMove();
// this.transform.DOLocalMove(new Vector3(Mathf.Clamp(Mathp.Round2Nearest(moveTemp.transform.localPosition.x, 0.25f), 0, Mathf.Infinity), Timeline.instance.SnapToLayer(moveTemp.transform.localPosition.y)), 0.15f).SetEase(Ease.OutExpo);
}
lastPos = transform.localPosition;
@ -215,6 +227,9 @@ namespace HeavenStudio.Editor.Track
{
Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
}
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, Timeline.instance.LayerHeight());
this.transform.localPosition = new Vector3(this.transform.localPosition.x, -entity.track * Timeline.instance.LayerHeight());
}
#region ClickEvents