コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: MapAreaRender.cs プロジェクト: Linrasis/WoWEditor
        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();
        }
コード例 #3
0
ファイル: WmoRootRender.cs プロジェクト: Linrasis/WoWEditor
        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;
        }
コード例 #4
0
ファイル: M2ModelRenderer.cs プロジェクト: Linrasis/WoWEditor
        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
            });
        }