public override void Update() { if (!NeedsInit) { lock (ListLock) { PrepareBuffer(); foreach (int index in ObjectsChanged) { if (index < 0) continue; SceneObjectArrayInstanceData[] data = new SceneObjectArrayInstanceData[] { SceneObjects[index].GetData() }; if (InstanceDataVertexBuffer != null) { InstanceDataVertexBuffer.UpdateSubBuffer<SceneObjectArrayInstanceData>(data, index * SceneObjectArrayInstanceData.SIZE, SceneObjectArrayInstanceData.SIZE); } //Logger.Log.AddLogEntry (LogLevel.Debug, "SceneObjectArray", "Object changed: " + data[0].ToString()); } ObjectsChanged.Clear(); } } }
public virtual SceneObjectArrayInstanceData GetData() { SceneObjectArrayInstanceData data = new SceneObjectArrayInstanceData(); data.World = WorldMatrix; return data; }