using System.Collections.Generic; using UnityEngine; namespace com.zibra.liquid.Utilities { public static class PrimitiveHelper { private static readonly Dictionary PrimitiveMeshes = new Dictionary(); public static GameObject CreatePrimitive(PrimitiveType type, bool withCollider) { if (withCollider) { return GameObject.CreatePrimitive(type); } var gameObject = new GameObject(type.ToString()); var meshFilter = gameObject.AddComponent(); meshFilter.sharedMesh = GetPrimitiveMesh(type); gameObject.AddComponent(); return gameObject; } public static Mesh GetPrimitiveMesh(PrimitiveType type) { if (!PrimitiveMeshes.ContainsKey(type)) { CreatePrimitiveMesh(type); } return PrimitiveMeshes[type]; } private static Mesh CreatePrimitiveMesh(PrimitiveType type) { var gameObject = GameObject.CreatePrimitive(type); var mesh = gameObject.GetComponent().sharedMesh; Object.Destroy(gameObject); PrimitiveMeshes[type] = mesh; return mesh; } } }