private static void UpdateEntityBuffer() { var entitiesDataArray = new RayMarchingEntity.RayMarchingEntityData[MaxEntityAmount]; for (int i = 0; i < RayMarchingEntityCount; i++) { entitiesDataArray[i] = _entities[i].data; } if (_entityBuffer == null) { _entityBuffer = new ComputeBuffer(MaxEntityAmount, RayMarchingEntityStride); Debug.Log("Remake entity buffer"); } if (_entityBuffer.count != MaxEntityAmount) { Debug.Log("Count different"); _entityBuffer.Release(); _entityBuffer = new ComputeBuffer(MaxEntityAmount, RayMarchingEntityStride); } //TODO: transform this to only update the necessary entities instead of copy the entire array _entityBuffer.SetData(entitiesDataArray, 0, 0, RayMarchingEntityCount); Dirty = false; }
public static void UpdateEntity(RayMarchingEntity.RayMarchingEntityData data, int id) { _entitiesData[id] = data; Dirty = true; }