1
Fork 0
mirror of https://github.com/Steffo99/better-tee.git synced 2024-11-22 15:24:18 +00:00
better-tee/Assets/Drawing/Scripts/DrawableFrame.cs

74 lines
1.9 KiB
C#
Raw Normal View History

2019-09-10 15:01:29 +00:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DrawableFrame : MonoBehaviour
{
2019-09-11 13:13:31 +00:00
[Header("Configuration")]
2019-09-10 15:01:29 +00:00
public Vector2Int resolution;
2019-09-11 13:13:31 +00:00
public Color startingColor = Color.white;
2019-09-11 13:51:05 +00:00
[Header("State")]
public bool locked = false;
public bool hasChanged = false;
2019-09-11 13:13:31 +00:00
[Header("References")]
2019-09-11 13:51:05 +00:00
protected Texture2D texture = null;
protected Sprite sprite = null;
2019-09-11 13:13:31 +00:00
private SpriteRenderer spriteRenderer;
2019-09-10 15:01:29 +00:00
public Rect Bounds {
get {
return new Rect(transform.position.x - (transform.localScale.x / 2),
transform.position.y - (transform.localScale.y / 2),
transform.localScale.x,
transform.localScale.y);
}
}
protected void Start()
{
texture = new Texture2D(resolution.x, resolution.y);
if(resolution.x <= 128 || resolution.y <= 128) {
texture.filterMode = FilterMode.Point;
}
else {
texture.filterMode = FilterMode.Trilinear;
}
2019-09-11 13:13:31 +00:00
Color[] colors = texture.GetPixels();
for(int i = 0; i < colors.Length; i++) {
colors[i] = startingColor;
}
texture.SetPixels(colors);
texture.Apply();
spriteRenderer = GetComponent<SpriteRenderer>();
sprite = Sprite.Create(texture, new Rect(0, 0, resolution.x, resolution.y), new Vector2(0.5f, 0.5f), resolution.x);
spriteRenderer.sprite = sprite;
2019-09-10 15:01:29 +00:00
}
2019-09-11 13:51:05 +00:00
public Color[] GetPixels() {
return texture.GetPixels();
}
public void SetPixels(Color[] colors) {
if(!locked) {
texture.SetPixels(colors);
hasChanged = true;
}
}
protected void Update() {
if(hasChanged) {
texture.Apply();
}
}
2019-09-10 15:01:29 +00:00
protected void OnDrawGizmos()
{
Gizmos.DrawWireCube(transform.position, transform.localScale);
}
}