示例#1
0
        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();
            }
        }