Пример #1
0
        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();
                }
            }
        }
Пример #2
0
        public virtual SceneObjectArrayInstanceData GetData()
        {
            SceneObjectArrayInstanceData data = new SceneObjectArrayInstanceData();
            data.World = WorldMatrix;

            return data;
        }