Newer
Older
fall / FallUnity / Assets / IsoSorting / IsoItem.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IsoItem : MonoBehaviour
{
    public Vector3 CameraSpace;
    public float SetDepth;
    internal HashSet<IsoItem> Behind = new HashSet<IsoItem>();

    public GameObject LinkedImage;

    public Vector3 lastPos = new Vector3();

    public float IsoRadius = 0;

    public bool IsoPerspective = false;

    internal bool MarkTemp = false;
    internal bool MarkPerm = false;

    public bool AllowMovedFlag = false;

    public enum IsoTypes
    {
        Sprite,
        Object
    }
    public IsoTypes IsoType;
    

    void Start()
    {
        IsoHandler iso = GameObject.FindObjectOfType<IsoHandler>();
        iso.AddIsoItem(this);

        if (IsoPerspective)
        {
            GameObject world = GameObject.Find("IsoWorld");
            LinkedImage.transform.parent = world.transform;
            LinkedImage.transform.localRotation = Quaternion.identity;
        }

        if (IsoType == IsoTypes.Sprite && IsoRadius == 0)
        {
            MeshFilter mf = LinkedImage.GetComponent<MeshFilter>();
            if (mf != null)
            {
                mf.sharedMesh.RecalculateBounds();
                float maxX = Mathf.Abs(mf.sharedMesh.bounds.center.x) + Mathf.Abs(mf.sharedMesh.bounds.extents.x);
                float maxY = Mathf.Abs(mf.sharedMesh.bounds.center.y) + Mathf.Abs(mf.sharedMesh.bounds.extents.y);
                float maxZ = Mathf.Abs(mf.sharedMesh.bounds.center.z) + Mathf.Abs(mf.sharedMesh.bounds.extents.z);
                IsoRadius = Mathf.Max(maxX, Mathf.Max(maxY, maxZ));
            }
        }
    }

    void Destroy()
    {
        IsoHandler iso = GameObject.FindObjectOfType<IsoHandler>();
        iso.RemoveIsoItem(this);
    }

    // Update is called once per frame
    void Update () {

	}
}