Heroes_of_Hiis/Assets/Polaris - Low Poly Ecosystem/Polaris - Low Poly Terrain .../Runtime/Scripts/TerrainData/GTreeInstance.cs

105 lines
2.4 KiB
C#

#if GRIFFIN
using UnityEngine;
namespace Pinwheel.Griffin
{
[System.Serializable]
public struct GTreeInstance
{
[SerializeField]
internal int prototypeIndex;
public int PrototypeIndex
{
get
{
return prototypeIndex;
}
set
{
prototypeIndex = value;
}
}
[SerializeField]
internal Vector3 position;
public Vector3 Position
{
get
{
return position;
}
set
{
position = value;
}
}
[SerializeField]
internal Quaternion rotation;
public Quaternion Rotation
{
get
{
return rotation;
}
set
{
rotation = value;
}
}
[SerializeField]
internal Vector3 scale;
public Vector3 Scale
{
get
{
return scale;
}
set
{
scale = value;
}
}
public static GTreeInstance Create(int prototypeIndex)
{
GTreeInstance tree = new GTreeInstance();
tree.PrototypeIndex = prototypeIndex;
tree.Position = Vector3.zero;
tree.Rotation = Quaternion.identity;
tree.Scale = Vector3.one;
return tree;
}
public static explicit operator GTreeInstance(TreeInstance t)
{
GTreeInstance tree = Create(t.prototypeIndex);
tree.Position = t.position;
tree.Rotation = Quaternion.Euler(0, t.rotation * Mathf.Rad2Deg, 0);
tree.Scale = new Vector3(t.widthScale, t.heightScale, t.widthScale);
return tree;
}
public static explicit operator TreeInstance(GTreeInstance t)
{
TreeInstance tree = new TreeInstance();
tree.prototypeIndex = t.PrototypeIndex;
tree.position = t.Position;
tree.widthScale = t.Scale.x;
tree.heightScale = t.Scale.y;
tree.color = Color.white;
return tree;
}
internal static int GetStructSize()
{
return sizeof(int) + sizeof(float) * 3 + sizeof(float) * 4 + sizeof(float) * 3;
}
}
}
#endif