public void Render( IGameContext gameContext, IRenderContext renderContext, RoomObject focused, bool renderFocusedTransparently, Matrix? matrix = null) { if (this.m_RefreshBuffers) { this.RefreshBuffers(renderContext); this.m_RefreshBuffers = false; } var oldWorld = renderContext.World; renderContext.World = matrix ?? Matrix.Identity; renderContext.EnableTextures(); renderContext.SetActiveTexture(this.m_TextureAsset.Texture); foreach (var pass in renderContext.Effect.CurrentTechnique.Passes) { pass.Apply(); this.RenderRoom(renderContext); foreach (var obj in this.m_RoomObjects) { if (renderFocusedTransparently && obj == focused) { continue; } obj.Render(gameContext, renderContext); } } if (renderFocusedTransparently && focused != null && this.m_RoomObjects.Contains(focused)) { renderContext.GraphicsDevice.BlendState = BlendState.AlphaBlend; renderContext.Effect.Parameters["Alpha"].SetValue(0.5f); foreach (var pass in renderContext.Effect.CurrentTechnique.Passes) { pass.Apply(); focused.Render(gameContext, renderContext); } renderContext.Effect.Parameters["Alpha"].SetValue(1f); } renderContext.GraphicsDevice.BlendState = BlendState.Opaque; renderContext.World = oldWorld; }