/////////////////////////////////////////////////////////////////////// // CParser::ParseAndCopyRenderState bool ParseAndCopyRenderState(ERenderPass blockid, BinaryReader br) { bool bSuccess = false; var startpos = m_stream.Position; if (GetRemainingLength() >= /*Marshal.SizeOf<SRenderState>()*/ 720) { switch (blockid) { case ERenderPass.RENDER_PASS_MAIN: var temp_renderstatem = new SRenderState(); temp_renderstatem.Read(br, StringTable.ToList()); Geometry.ABillboardRenderStateMain = temp_renderstatem; break; case ERenderPass.RENDER_PASS_DEPTH_PREPASS: var temp_renderstated = new SRenderState(); temp_renderstated.Read(br, StringTable.ToList()); Geometry.ABillboardRenderStateDepth = temp_renderstated; break; case ERenderPass.RENDER_PASS_SHADOW_CAST: var temp_renderstates = new SRenderState(); temp_renderstates.Read(br, StringTable.ToList()); Geometry.ABillboardRenderStateShadow = temp_renderstates; break; default: break; } if (m_stream.Position - startpos != /*Marshal.SizeOf<SRenderState>()*/ 720) { throw new NotImplementedException(); } bSuccess = true; } //else // CCore::SetError("CParser::ParseAndCopyRenderState, premature end-of-file\n"); return(bSuccess); }
/////////////////////////////////////////////////////////////////////// // CParser::ParseRenderStateBlock bool ParseRenderStateBlock(ERenderPass blockid, int nNumStates, BinaryReader br) { bool bSuccess = false; var startpos = m_stream.Position; var t = Marshal.SizeOf <SRenderState>(); if (GetRemainingLength() >= 720 * nNumStates) { for (int i = 0; i < nNumStates; i++) { switch (blockid) { case ERenderPass.RENDER_PASS_MAIN: Geometry.P3dRenderStateMain[i].Read(br, StringTable.ToList()); break; case ERenderPass.RENDER_PASS_DEPTH_PREPASS: Geometry.P3dRenderStateDepth[i].Read(br, StringTable.ToList()); break; case ERenderPass.RENDER_PASS_SHADOW_CAST: Geometry.P3dRenderStateShadow[i].Read(br, StringTable.ToList()); break; default: break; } } if (m_stream.Position - startpos != 720 * nNumStates) { throw new NotImplementedException(); } bSuccess = true; } //else // CCore::SetError("CParser::ParseRenderStateBlock, premature end-of-file\n"); return(bSuccess); }