private void Render() { if (CheckMemberVariables()) { m_RenderWindow.Clear(new Color((byte)((int)m_GraphicsSettings.m_BackBufferClear.x), (byte)((int)m_GraphicsSettings.m_BackBufferClear.y), (byte)((int)m_GraphicsSettings.m_BackBufferClear.z))); m_PostOffice.SendMessage(Constant.enumMessage.GET_COMPONENTS, new string[] { Constant.enumComponent.SPRITE.ToString() }); SpriteComponent[] SpriteComponents = Methods.GetObjectArrayOf <IComponent>(m_PostOffice.GetMessageObjects(m_ModuleID, Constant.enumMessage.SEND_COMPONENTS)).OfType <SpriteComponent>().ToArray(); m_PostOffice.SendMessage(Constant.enumMessage.GET_COMPONENTS, new string[] { Constant.enumComponent.POSITIONCOMPONENT3D.ToString() }); PositionComponent3D[] PositionComponents = Methods.GetObjectArrayOf <IComponent>(m_PostOffice.GetMessageObjects(m_ModuleID, Constant.enumMessage.SEND_COMPONENTS)).OfType <PositionComponent3D>().ToArray(); if (SpriteComponents.Length > PositionComponents.Length) { PrintError("There are more Sprites than Positions received, check every GameObject with sprite has a Position", m_ErrorStatus.DEBUG); } else if (PositionComponents.Length >= SpriteComponents.Length) { int j = 0; for (int i = 0; i < PositionComponents.Length && j < SpriteComponents.Length; i++) { if (SpriteComponents[i].m_isDrawn) { Sprite currSprite = new Sprite(m_SpriteManager.GetTextureByID(SpriteComponents[i].m_SpriteID)); currSprite.Position = new Vector2f(PositionComponents[i].m_Position.x, PositionComponents[i].m_Position.y); m_RenderWindow.Draw(currSprite); } if (j <= SpriteComponents.Length) { j++; } } } m_RenderWindow.Display(); } }