using System; using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Text; using System.Threading.Tasks; namespace StgSharp.Geometries { public class PlainInstancingBuffer where T : IInstancing { private List coordList; private List scalingList; private List> instanceList; public PlainInstancingBuffer() { coordList = new List(); instanceList = new List>(); scalingList = new List(); } internal List CoordList { get => coordList; } internal List ScalingList { get => scalingList; } public int CreateInstanceID() { int ret = instanceList.Count; coordList.Add(new Vector4()); scalingList.Add(0); return ret; } public void Remove(T instance) { if (instance.GlobalBuffer != this) { throw new ArgumentException(); } int index = instance.BufferId; IInstancing temp = instanceList[instanceList.Count - 1]; instanceList[instance.BufferId] = temp; temp.BufferId = instance.BufferId; coordList[instance.BufferId] = coordList[coordList.Count - 1]; scalingList[instance.BufferId] = scalingList[scalingList.Count - 1]; instanceList.RemoveAt(instanceList.Count - 1); coordList.RemoveAt(coordList.Count - 1); scalingList.RemoveAt(scalingList.Count - 1); } } }