Ejemplo n.º 1
0
        public override void OnRender(RenderControllers controllers, SSBBE.RenderSettings renderSettings)
        {
            var camera = controllers.GetCamera();

            foreach (var layerKv in m_layers)
            {
                foreach (var depthKv in layerKv.Value.Objects)
                {
                    foreach (var obj in depthKv.Value)
                    {
                        obj.OnRender(renderSettings, camera);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        void i_updateVertices(Vector2 position, float angleInRad, SSBBE.RenderSettings renderSettings, GameObjects.Cameras.Camera camera)
        {
            Vector2 cameraPos = new Vector2();

            if (camera != null)
            {
                cameraPos = camera.GetComponents().GetComponent <GameObjects.Components.ComponentTransform>().GetPosition();
            }

            var halfDim  = m_dimensions * 0.5f;
            var cosAngle = (float)Math.Cos(angleInRad);
            var sinAngle = (float)Math.Sin(angleInRad);
            var locX     = new Vector2(cosAngle, sinAngle);
            var locY     = new Vector2(-sinAngle, cosAngle);
            var topRight = locX * (halfDim.X - m_offset.X) + locY * (halfDim.Y - m_offset.Y);
            var botRight = locX * (halfDim.X - m_offset.X) + locY * (-halfDim.Y - m_offset.Y);
            var topLeft  = locX * (-halfDim.X - m_offset.X) + locY * (halfDim.Y - m_offset.Y);
            var botLeft  = locX * (-halfDim.X - m_offset.X) + locY * (-halfDim.Y - m_offset.Y);
            var zoomFac  = 1.0f;

            if (camera != null)
            {
                zoomFac = camera.GetZoomFactor();
            }
            m_vertices[i_getVertexStartId(0) + 0] = (position.X + topRight.X * m_scale.X - cameraPos.X) * (renderSettings.InvWidth * zoomFac);
            m_vertices[i_getVertexStartId(0) + 1] = (position.Y + topRight.Y * m_scale.Y - cameraPos.Y) * (renderSettings.InvHeight * zoomFac);
            m_vertices[i_getVertexStartId(0) + 3] = m_uvOffset.X + m_uvScale.X;
            m_vertices[i_getVertexStartId(0) + 4] = m_uvOffset.Y + m_uvScale.Y;

            m_vertices[i_getVertexStartId(1) + 0] = (position.X + botRight.X * m_scale.X - cameraPos.X) * (renderSettings.InvWidth * zoomFac);
            m_vertices[i_getVertexStartId(1) + 1] = (position.Y + botRight.Y * m_scale.Y - cameraPos.Y) * (renderSettings.InvHeight * zoomFac);
            m_vertices[i_getVertexStartId(1) + 3] = m_uvOffset.X + m_uvScale.X;
            m_vertices[i_getVertexStartId(1) + 4] = m_uvOffset.Y;

            m_vertices[i_getVertexStartId(2) + 0] = (position.X + botLeft.X * m_scale.X - cameraPos.X) * (renderSettings.InvWidth * zoomFac);
            m_vertices[i_getVertexStartId(2) + 1] = (position.Y + botLeft.Y * m_scale.Y - cameraPos.Y) * (renderSettings.InvHeight * zoomFac);
            m_vertices[i_getVertexStartId(2) + 3] = m_uvOffset.X;
            m_vertices[i_getVertexStartId(2) + 4] = m_uvOffset.Y;

            m_vertices[i_getVertexStartId(3) + 0] = (position.X + topLeft.X * m_scale.X - cameraPos.X) * (renderSettings.InvWidth * zoomFac);
            m_vertices[i_getVertexStartId(3) + 1] = (position.Y + topLeft.Y * m_scale.Y - cameraPos.Y) * (renderSettings.InvHeight * zoomFac);
            m_vertices[i_getVertexStartId(3) + 3] = m_uvOffset.X;
            m_vertices[i_getVertexStartId(3) + 4] = m_uvOffset.Y + m_uvScale.Y;
        }
Ejemplo n.º 3
0
        public override void OnRender(SSBBE.RenderSettings renderSettings, GameObjects.Cameras.Camera camera)
        {
            if (!m_visible)
            {
                return;
            }
            m_texture.Use();
            m_shader.Use();
            i_updateVertices(m_position, m_angleInRad, renderSettings, camera);

            GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
            GL.Enable(EnableCap.Blend);

            GL.BindVertexArray(m_vertexArrayObjectHandle);
            GL.BindBuffer(BufferTarget.ArrayBuffer, m_vertexBufferObjectHandle);
            GL.BufferData(BufferTarget.ArrayBuffer, m_vertices.Length * sizeof(float), m_vertices, BufferUsageHint.DynamicDraw);
            GL.DrawElements(BeginMode.Triangles, m_indices.Length, DrawElementsType.UnsignedInt, 0);

            GL.Disable(EnableCap.Blend);
        }
Ejemplo n.º 4
0
 public abstract void OnRender(RenderControllers controllers, SSBBE.RenderSettings renderSettings);
Ejemplo n.º 5
0
 public abstract void OnRender(SSBBE.RenderSettings renderSettings, GameObjects.Cameras.Camera camera);