public void OnFrame() { if (mAsyncLoaded == false) return; if (WorldFrame.Instance.ActiveCamera.Contains(ref mBoudingBox) == false) return; if(mSyncLoaded == false) { mVertexBuffer = new VertexBuffer(WorldFrame.Instance.GraphicsContext); mVertexBuffer.UpdateData(mVertexData); mSyncLoaded = true; } Mesh.UpdateVertexBuffer(mVertexBuffer); Mesh.Draw(); }
public void OnFrame() { if (mAsyncLoaded == false) return; if (AreaFile.IsValid == false) return; if(mSyncLoaded == false) { mVertexBuffer = new VertexBuffer(WorldFrame.Instance.GraphicsContext); mVertexBuffer.UpdateData(AreaFile.FullVertices); mSyncLoaded = true; } if(WorldFrame.Instance.MapManager.IsInitialLoad == false) { if (WorldFrame.Instance.ActiveCamera.Contains(ref mBoundingBox) == false) { if (!M2Manager.IsViewDirty) return; if (!WorldFrame.Instance.ActiveCamera.Contains(ref mModelBox)) return; foreach (var chunk in mChunks) chunk.PushDoodadReferences(); return; } } if (mIsDirty) { AreaFile.UpdateNormals(); mVertexBuffer.UpdateData(AreaFile.FullVertices); mIsDirty = false; } MapChunkRender.ChunkMesh.UpdateVertexBuffer(mVertexBuffer); foreach (var chunk in mChunks) chunk.OnFrame(); }
private void SyncLoad() { if (mVertices == null || mIndices == null || Groups == null) return; mVertexBuffer = new VertexBuffer(WorldFrame.Instance.GraphicsContext); mIndexBuffer = new IndexBuffer(WorldFrame.Instance.GraphicsContext) { IndexFormat = SharpDX.DXGI.Format.R32_UInt }; if (mVertices.Length != 0 && mIndices.Length != 0) { mVertexBuffer.UpdateData(mVertices); mIndexBuffer.UpdateData(mIndices); } foreach (var group in Groups) group.SyncLoad(); mSyncLoaded = true; }
private void SyncLoad() { mIsSyncLoaded = true; if (mModel.Vertices.Length == 0 || mModel.Indices.Length == 0 || mModel.Passes.Count == 0) { mSkipRendering = true; return; } var ctx = WorldFrame.Instance.GraphicsContext; mVertexBuffer = new VertexBuffer(ctx); mIndexBuffer = new IndexBuffer(ctx); mVertexBuffer.UpdateData(mModel.Vertices); mIndexBuffer.UpdateData(mModel.Indices); mAnimBuffer = new ConstantBuffer(ctx); mAnimBuffer.UpdateData(mAnimationMatrices); mPerPassBuffer = new ConstantBuffer(ctx); mPerPassBuffer.UpdateData(new PerModelPassBuffer() { uvAnimMatrix = Matrix.Identity, modelPassParams = Vector4.Zero }); }