You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.5 KiB
56 lines
1.5 KiB
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[ExecuteInEditMode]
|
|
public class AutoScaler : MonoBehaviour {
|
|
|
|
[SerializeField]
|
|
[TooltipAttribute("Adjust the final scale by 2^scaleFactor.")]
|
|
[Range(-2, 2)]
|
|
float scaleFactor = 0;
|
|
|
|
[Header("Semi Auto Fields")]
|
|
[SerializeField]
|
|
Camera referenceCamera;
|
|
|
|
[SerializeField]
|
|
Canvas canvas;
|
|
|
|
[SerializeField]
|
|
AVProQuad avproQuad;
|
|
|
|
[SerializeField]
|
|
float pixelsPerUnit = 100;
|
|
|
|
void Start () {
|
|
if(referenceCamera == null)
|
|
referenceCamera = Camera.main;
|
|
if (canvas == null)
|
|
canvas = FindObjectOfType<Canvas>().GetComponent<Canvas>();
|
|
|
|
avproQuad = GetComponent<AVProQuad>();
|
|
|
|
SpriteRenderer spriteRenderer = GetComponent<SpriteRenderer>();
|
|
if (spriteRenderer != null)
|
|
pixelsPerUnit = spriteRenderer.sprite.pixelsPerUnit;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
//#if UNITY_EDITOR
|
|
if (canvas == null || referenceCamera == null)
|
|
return;
|
|
|
|
Vector3 heading = transform.position - referenceCamera.transform.position;
|
|
Vector3 d = Vector3.one * Vector3.Dot(heading, referenceCamera.transform.forward) * pixelsPerUnit;
|
|
if (avproQuad != null)
|
|
{
|
|
d.x = d.x * avproQuad.Size.x / pixelsPerUnit;
|
|
d.y = d.y * avproQuad.Size.y / pixelsPerUnit;
|
|
}
|
|
float scale = Mathf.Pow(2, scaleFactor);
|
|
transform.localScale = d / canvas.planeDistance * scale;
|
|
//#endif
|
|
}
|
|
}
|
|
|