Newer
Older
IsoRenderTest / Assets / IsoTextureEditor.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;

public class IsoTextureEditor : EditorWindow
{
    private Texture texture;
    private Vector2 textureOffset;
    private IsoEditor editor;
    private float pixelsPerUnit;
    private void Awake()
    {

    }
    private void OnDestroy()
    {
    }
    public void Init(Texture texture, Vector2 textureOffset, float pixelsPerUnit)
    {
        this.texture = texture;
        titleContent = new GUIContent(texture.name + ": Iso Boxes");
        minSize = new Vector2(texture.width, texture.height + 30);
        editor = FindObjectOfType<IsoEditor>();
        this.textureOffset = textureOffset;
        this.pixelsPerUnit = pixelsPerUnit;
    }

    private static float ControlPointSize = 6f;
    private void DrawControlPoint(Color color, Vector2 pos)
    {
        EditorGUI.DrawRect(new Rect(pos.x - ControlPointSize * 0.5f, pos.y - ControlPointSize * 0.5f, ControlPointSize, ControlPointSize), color);
    }

    private void RenderCube(Color color, Vector2 origin, Vector3 size)
    {
        DrawControlPoint(color, origin);
        DrawControlPoint(color, origin + (editor.IsoProject(new Vector3(-size.x, 0,      0)) * pixelsPerUnit).OverY(y => -y));
        DrawControlPoint(color, origin + (editor.IsoProject(new Vector3(0,       0,      size.z)) * pixelsPerUnit).OverY(y => -y));

        DrawControlPoint(color, origin + (editor.IsoProject(new Vector3(0,       size.y, 0)) * pixelsPerUnit).OverY(y => -y));
        DrawControlPoint(color, origin + (editor.IsoProject(new Vector3(-size.x, size.y, 0)) * pixelsPerUnit).OverY(y => -y));
        DrawControlPoint(color, origin + (editor.IsoProject(new Vector3(0,       size.y, size.z)) * pixelsPerUnit).OverY(y => -y));
    }

    private void OnGUI()
    {
        if (texture != null)
        {
            GUI.DrawTexture(new Rect(0, 0, texture.width, texture.height), texture);
            if (GUI.Button(new Rect(5, texture.height + 5, 80, 25), "Save"))
            {
                
            }

            RenderCube(Color.red, -textureOffset, new Vector3(1f, 1.5f, 2.1f));
        }
    }
}