Ejemplo n.º 1
0
        public int Render(ILua lua)
        {
            //render.PushRenderTarget(textureRT)
            //cam.Start2D()
            // render.Clear(0, 0, 0, 0)

            lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
            lua.GetField(-1, "CurTime");
            lua.MCall(0, 1);
            int CurTime = (int)lua.GetNumber(-1);

            lua.Pop();

            // PushRenderTarget
            {
                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "render");
                lua.GetField(-1, "PushRenderTarget");
                lua.PushUserType(rt, (int)TYPES.TEXTURE);
                lua.MCall(1, 0);
                lua.Pop();
            }

            // Start 2D
            {
                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "cam");
                lua.GetField(-1, "Start2D");
                lua.MCall(0, 0);
                lua.Pop();
            }

            // Clear
            {
                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "render");
                lua.GetField(-1, "Clear");
                lua.PushNumber(0);
                lua.PushNumber(0);
                lua.PushNumber(0);
                lua.PushNumber(0);
                lua.MCall(4, 0);
                lua.Pop();
            }
            // Draw Rects
            {
                if (surface is not null)
                {
                    surface.DrawSetColor(255, 255, 255, 255);
                    surface.DrawFilledRect(20, (100 + (((int)Math.Sin(CurTime)) * 50)), 50, 50);
                    surface.DrawSetColor(255, 0, 0, 100);
                    surface.DrawFilledRect(120, (100 + (((int)Math.Sin(CurTime)) * 50)), 50, 50);
                }
                else
                {
                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "SetDrawColor");
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.MCall(4, 0);
                    lua.Pop(2);

                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "DrawRect");
                    lua.PushNumber(20);
                    lua.PushNumber((100 + (((int)Math.Sin(CurTime)) * 50)));
                    lua.PushNumber(50);
                    lua.PushNumber(50);
                    lua.MCall(4, 0);
                    lua.Pop(2);

                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "SetDrawColor");
                    lua.PushNumber(255);
                    lua.PushNumber(0);
                    lua.PushNumber(0);
                    lua.PushNumber(100);
                    lua.MCall(4, 0);
                    lua.Pop(2);

                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "DrawRect");
                    lua.PushNumber(120);
                    lua.PushNumber((100 + (((int)Math.Sin(CurTime)) * 50)));
                    lua.PushNumber(50);
                    lua.PushNumber(50);
                    lua.MCall(4, 0);
                    lua.Pop(2);
                }
            }

            // End2D
            {
                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "cam");
                lua.GetField(-1, "End2D");
                lua.MCall(0, 0);
                lua.Pop();
            }

            // Pop
            {
                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "render");
                lua.GetField(-1, "PopRenderTarget");
                lua.MCall(0, 0);
                lua.Pop();
            }

            // Draw it on screen
            {
                if (surface is not null)
                {
                    surface.DrawSetColor(255, 255, 255, 255);
                }
                else
                {
                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "SetDrawColor");
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.PushNumber(255);
                    lua.MCall(4, 0);
                    lua.Pop();
                }

                lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                lua.GetField(-1, "surface");
                lua.GetField(-1, "SetMaterial");
                lua.PushUserType(mat, (int)TYPES.MATERIAL);
                lua.MCall(1, 0);
                lua.Pop();

                if (surface is not null)
                {
                    surface.DrawTexturedRect(50, 50, 512, 512);
                }
                else
                {
                    lua.PushSpecial(SPECIAL_TABLES.SPECIAL_GLOB);
                    lua.GetField(-1, "surface");
                    lua.GetField(-1, "DrawTexturedRect");
                    lua.PushNumber(50);
                    lua.PushNumber(50);
                    lua.PushNumber(512);
                    lua.PushNumber(512);
                    lua.MCall(4, 0);
                    lua.Pop();
                }
            }

            return(0);
        }