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);
|
|
|
|
|
}
|
|
|
|
|
}
|