ArtiomCiumac / SharpDXTutorial

Tutorial series for SharpDX Toolkit
MIT License
2 stars 4 forks source link

change screen #1

Closed PedroAlvesq closed 10 years ago

PedroAlvesq commented 10 years ago

i use your example of toturial 2 to change my screen but my graphics is poor and have so lag what i doing wrong this is my code

using System;
using SharpDX;
using SharpDX.Toolkit;
using System.Collections.Generic;
using SharpDX.Toolkit.Input;
using TomShane.Neoforce.Controls;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.Toolkit.Content;

namespace TomShane.Neoforce.Central
{
    using SharpDX.Toolkit.Graphics;

    /// <summary>
    /// Simple MiniCube application using SharpDX.Toolkit.
    /// The purpose of this application is to show a rotating cube using <see cref="BasicEffect"/>.
    /// </summary>
    public class Gamer : Game
    {
        private Manager NeoManager;
       private GraphicsDeviceManager graphicsDeviceManager;

        private readonly Login _Login;

        public Gamer()
        {
            // Creates a graphics manager. This is mandatory.

            graphicsDeviceManager = new GraphicsDeviceManager(this);
            graphicsDeviceManager.PreferredBackBufferWidth = 1280;
            graphicsDeviceManager.PreferredBackBufferHeight = 800;
            NeoManager = new Manager(this, graphicsDeviceManager, "Default");
            IsMouseVisible = true;
            _Login = new World(this, NeoManager,graphicsDeviceManager);
            Content.RootDirectory = "Content";

        }

        protected override void LoadContent()
        {

            base.LoadContent();
        }

        protected override void Initialize()
        {

            base.Initialize();
            NeoManager.Initialize();

            Window.Title = "Firstgame";
        }

        protected override void Update(GameTime gameTime)
        { 
            base.Update(gameTime);
            NeoManager.Update(gameTime);

        }

        protected override void Draw(GameTime gameTime)
        {

            NeoManager.BeginDraw(gameTime);// the problem is where
            GraphicsDevice.Clear(SharpDX.Color.CornflowerBlue);
          NeoManager.EndDraw(); //the problem its where
            base.Draw(gameTime);

        }
    }
}
using SharpDX;
using SharpDX.Toolkit;
using SharpDX.Toolkit.Content;
using SharpDX.Toolkit.Graphics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using TomShane.Neoforce.Controls;
using SharpDX.XInput;

namespace TomShane.Neoforce.Central
{

    internal sealed class Login : GameSystem
    {
        private Manager NeoManager;
        private Window window;
        private LoginClient cliente;
        string user = null;
        string userPassword = null;
        private Button virtualkeyboard = null;
        public Button LoginButton { get { return btnApply; } }
        public Button ExitButton { get { return btnExit; } }
        public string Username { get { return txusername.Text; } }
        public string Password { get { return txpassword.Text; } }
        private Button options { get { return option; } }
        private SideBarPanel pnlRes = null;
        private Button btnApply = null;
        private Button btnExit = null;
        private Button option = null;
        private TextBox txusername = null;
        private TextBox txpassword = null;
        private Label lbusername = null;
        private Label lbpassword = null;
        private GraphicsDeviceManager graphic;
        public Login(Game game,Manager neo, GraphicsDeviceManager gra)
            : base(game)
        {
            Game _game = game;
            NeoManager = neo;
            graphic = gra;
            cliente = new LoginClient();

            // this game system has something to draw - enable drawing by default
            // this can be disabled to make objects drawn by this system disappear
            Visible = true;

            // this game system has logic that needs to be updated - enable update by default
            // this can be disabled to simulate a "pause" in logic update
            Enabled = true;

            // add the system itself to the systems list, so that it will get initialized and processed properly
            // this can be done after game initialization - the Game class supports adding and removing of game systems dynamically
            _game.GameSystems.Add(this);
        }

        /// <summary>
        /// Initialize here anything that depends on other services
        /// </summary>
        public override void Initialize()
        {

          //  NeoManager.Initialize();

            base.Initialize();

            // get the camera service from service registry

        }

        /// <summary>
        /// Load all graphics content here.
        /// </summary>
        protected override void LoadContent()
        {
            base.LoadContent();
            window = new Window(NeoManager);
            window.Init();
            window.Text = "Login";
            window.Width = 420;
            window.Height = 243;
            window.Center();
            window.Visible = true;
            window.CloseButtonVisible = false;
            window.Resizable = false;
            window.Movable = false;
            NeoManager.Add(window);
            window.IconVisible = false;
            InitRes();
            // initialize the basic effect (shader) to draw the geometry, the BasicEffect class is similar to one from XNA

        }

        /// <summary>
        /// Draw the scene content.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>

        /// <summary>
        /// Update the scene logic.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>
        public override void Update(GameTime gameTime)
        {
              NeoManager.Update(gameTime);
            base.Update(gameTime);

            // get the total elapsed seconds since the start of the game

        }
        public override void Draw(GameTime gameTime)
        {

          NeoManager.BeginDraw(gameTime);
         SharpDX.Toolkit.Graphics.BlendState graphics = GraphicsDevice.BlendStates.Opaque;
           SharpDX.Toolkit.Graphics.DepthStencilState graphics1 = GraphicsDevice.DepthStencilStates.Default;
         // GraphicsDevice.Clear(SharpDX.Color.CornflowerBlue);
           // GraphicsDevice.BlendStates = BlendStateCollection.;
            //GraphicsDevice.BlendStates = BlendingMode.Default;
           // GraphicsDevice.DepthStencilStates = DepthStencilState.Default;
           // device.Clear(Color.CornflowerBlue);
          //  GraphicsDevice.SamplerStates[0] = new(GraphicsDevice, SamplerState);
        NeoManager.EndDraw();
            base.Draw(gameTime);

            //NeoManager.EndDraw();
            // set the parameters for cube drawing and draw it using the basic effect

        }
        private void InitRes()
        {

            pnlRes = new SideBarPanel(NeoManager);
            pnlRes.Init();
            pnlRes.Passive = true;
            pnlRes.Parent = window;
            pnlRes.Left = 0;
            pnlRes.Top = 0;
            pnlRes.Width = 410;
            pnlRes.Height = 210;
            pnlRes.CanFocus = false;
        //    pnlRes.Color = new Color(12,12,13);

            //   Manager.Add(pnlRes);
            virtualkeyboard = new Button(NeoManager);
            virtualkeyboard.Init();
            virtualkeyboard.Width = 40;
            virtualkeyboard.Height = 30;
            virtualkeyboard.Parent = pnlRes;
            virtualkeyboard.Top = pnlRes.Left + 10;
            virtualkeyboard.Left = pnlRes.Top + 283;
         //   virtualkeyboard.Draw(new Vector2(12, 13));
            //virtualkeyboard.TextColor = new SharpDX.Color(20, 22, 23);
            //  virtualkeyboard.Text = "Teclado";

            //    virtualkeyboard.Glyph = new Glyph()
            virtualkeyboard.Glyph = new Glyph(NeoManager.Content.Load<SharpDX.Toolkit.Graphics.Texture2D>("Content\\Images\\teclado"));
            lbusername = new Label(NeoManager);
            lbusername.Init();

            lbusername.Width = 100;
            lbusername.Parent = pnlRes;
            lbusername.Top = pnlRes.Left + 10;
            lbusername.Left = pnlRes.Top + 8;

            lbusername.Text = "USERNAME";
            lbusername.TextColor = new SharpDX.Color(250, 250, 250);

            //  Manager.Graphics.ApplyChanges();
            //
            //  Manager.Add(lbusername);

            txusername = new TextBox(NeoManager);
            txusername.Init();
            txusername.Width = 200;
            txusername.Parent = pnlRes;
            txusername.Top = pnlRes.Left + 8;
            txusername.Left = pnlRes.Top + 80;
            txusername.Text.Trim();
            txusername.TextColor = new SharpDX.Color(250, 250, 250);
            lbpassword = new Label(NeoManager);
            lbpassword.Init();
            lbpassword.Width = 100;
            lbpassword.Parent = pnlRes;
            lbpassword.Top = pnlRes.Left + 30;
            lbpassword.Left = pnlRes.Top + 8;

            lbpassword.Text = "PASSWORD";
            lbpassword.TextColor = new SharpDX.Color(250, 250, 250);
            txpassword = new TextBox(NeoManager);
            txpassword.Init();
            txpassword.Width = 200;
            txpassword.Parent = pnlRes;
            txpassword.Top = pnlRes.Left + 30;
            txpassword.Left = pnlRes.Top + 80;
            txpassword.Mode = TextBoxMode.Password;

            txpassword.PasswordChar = '*';

            txpassword.Text.Trim();
            txpassword.TextColor = new SharpDX.Color(250, 250, 250);

            btnApply = new Button(NeoManager);
            btnApply.Init();
            btnApply.Width = 80;
            btnApply.Parent = pnlRes;
            btnApply.Left = pnlRes.Left + 50;
            btnApply.Top = pnlRes.Top + 80;
            btnApply.Text = "Login";
            btnApply.TextColor = new SharpDX.Color(250, 250, 250);
            btnApply.Click += new Controls.EventHandler(btnApply_Click);
            option = new Button(NeoManager);
            option.Init();
            option.Width = 80;
            option.Parent = pnlRes;
            option.Left = btnApply.Left + btnApply.Width + 8;
            option.Top = pnlRes.Top + 80;
            option.Text = "Options";
            option.TextColor = new SharpDX.Color(250, 250, 250);
            option.Click += new Controls.EventHandler(options_click);
            btnExit = new Button(NeoManager);
            btnExit.Init();
            btnExit.Width = 80;
            btnExit.Parent = pnlRes;
            btnExit.Left = option.Left + option.Width + 8;
            btnExit.Top = pnlRes.Top + 80;
            btnExit.Text = "Exit";
            btnExit.TextColor = new SharpDX.Color(250, 250, 250);
           // btnExit.Color = new SharpDX.Color(10, 10, 10);
          //  btnExit.ToolTip.Color = new SharpDX.Color(250, 250, 250);

            btnExit.Click += new Controls.EventHandler(btnExit_Click1);

        }
        ////////////////////////////////////////////////////////////////////////////

        ////////////////////////////////////////////////////////////////////////////    

        void btnExit_Click1(object sender, Controls.EventArgs e)
        {

            System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.MessageBox.Show("Do you really want to exit ", "", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question);
            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {

                System.Windows.Forms.Application.Exit();
            }

        }

        void options_click(object sender, Controls.EventArgs e)
        {

            Options ola = new Options(Game,NeoManager);
            ola.Visible = true;
          // ola.EndDraw();

             }

        public void ProcessComplete1(Headers header, Rank rank)
        {
            string msg = "";
            //  System.Diagnostics.Debug.Write(Erro);
            if (header != Headers.Rank)
            {

                return;
            }

            else if (rank == Rank.Administrador)
            {

                txusername.Text = "";
                txpassword.Text = "";
                msg = "Entrou como Admiministrador";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }

            else if (rank == Rank.player)
            {
                msg = "Entrou com Player";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }

            else if (rank == Rank.Moderador)
            {
                msg = "Entrou Como Moderador";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
            else if (rank == Rank.Vip)
            {

                msg = "Entrou Como VIP";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            }
            //else if (rank == Rank.Banned)
            //{
            //    // txusername.Text = "";
            //    //txpassword.Text = "";
            //    msg = "Jogador Banido";
            //    System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            //}

        }

        public void ProcessComplete(Headers header, ErrorCodes Erro)
        {
            string msg = "";
            System.Diagnostics.Debug.Write(Erro);
            if (header != Headers.Login)
            {

                return;
            }

            else if (Erro == ErrorCodes.Sucess)
            {

                txusername.Text = "";
                txpassword.Text = "";
                window.Hide();

                Server ser = new Server(Game, NeoManager,graphic,user);
                cliente.Nivel(user, ProcessComplete1);

            }

            else if (Erro == ErrorCodes.InvalidLogin)
            {
                msg = "Password ou username is incorret";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                txusername.Text = "";
                txpassword.Text = "";

            }

            else if (Erro == ErrorCodes.Error)
            {
                txusername.Text = "";
                txpassword.Text = "";
                msg = "Server Is Offline";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            }

        }

        public static String Create(String passwd)
        {
            var rnd = new Random();
            var saltBuf = new StringBuilder();
            const string seedList = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            for (int i = 0; i < 32; i++)
            {
                int rndIndex = rnd.Next(62);
                saltBuf.Append(seedList.Substring(rndIndex, 1));
            }

            String salt = saltBuf.ToString();

            return CreateMd5Hash(passwd);
        }

        private static String CreateMd5Hash(String data)
        {
            byte[] bdata = new byte[data.Length];
            byte[] hash;
            for (int i = 0; i < data.Length; i++)
            {
                bdata[i] = (byte)(data[i] & 0xff);
            }
            try
            {
                MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
                hash = md5Provider.ComputeHash(bdata);
            }
            catch (SecurityException e)
            {
                throw new ApplicationException("A security encryption error occured.", e);
            }
            var result = new StringBuilder(32);
            foreach (byte t in hash)
            {
                String x = (t & 0xff).ToString("X").ToLowerInvariant();
                if (x.Length < 2)
                {
                    result.Append("0");
                }
                result.Append(x);
            }
            System.Console.WriteLine(result);
            return result.ToString();
        }
        private static String CalculateHash(string password, string salt)
        {
            byte[] data = System.Text.Encoding.ASCII.GetBytes(salt + password);
            data = System.Security.Cryptography.MD5.Create().ComputeHash(data);

            return BitConverter.ToString(data).Replace("-", "") + ":" + salt;
        }

        void btnApply_Click(object sender, Controls.EventArgs e)
        {

            user = txusername.Text.Trim();
            userPassword = txpassword.Text.Trim();

            if ((user.Equals(String.Empty)) || (userPassword.Equals(String.Empty)))
            {
                System.Windows.Forms.MessageBox.Show("Username Ou Password is empty ", "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            }
            else
            {

                window.Hide();
               World ser = new World(Game,NeoManager,graphic,user);
             //  ser.Services.AddService(ser);
          //     ser.Visible = true;
          //     this.Visible = false;

                 //   cliente.Login(user, userPassword, ProcessComplete);

            }
            ////////////////////////////////////////////////////////////////////////////

            ////////////////////////////////////////////////////////////////////////////    

        }

    }
}
using System;
using SharpDX;
using SharpDX.Toolkit;
using System.Collections.Generic;
using SharpDX.Toolkit.Input;
using TomShane.Neoforce.Controls;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.Toolkit.Content;
using SharpDX.Toolkit.Graphics;

namespace TomShane.Neoforce.Central
{
    internal sealed class World : GameSystem
    {
        private Manager NeoManager;
    //    private Window window;
        string texto;
        private SpriteBatch spriteBatch;
        private SpriteFont arial16BMFont;
        private readonly Login _Login;
        //    private readonly Server _Server;

        // By preloading any assets used by UI rendering, we avoid framerate glitches
        // when they suddenly need to be loaded in the middle of a menu transition.
        private PointerManager pointer;

        private Model model;

        private List<Model> models;
        private Game _game;
        private BoundingSphere modelBounds;
        private Matrix world;
        private Matrix view;
        private Matrix projection;
        TomShane.Neoforce.Controls.TabControl tbc;
       private GraphicsDeviceManager graphicsDeviceManager;

        public World(Game game,Manager ola,string text,GraphicsDeviceManager gra)
            : base(game)
        {
            _game = game;
           graphicsDeviceManager = gra;
            texto = text;
            System.Console.Write(texto);
         graphicsDeviceManager.PreferredGraphicsProfile = new FeatureLevel[] { FeatureLevel.Level_9_1, };
            pointer = new PointerManager(_game);
            NeoManager = ola;

            // this game system has something to draw - enable drawing by default
            // this can be disabled to make objects drawn by this system disappear
            Visible = true;

            // this game system has logic that needs to be updated - enable update by default
            // this can be disabled to simulate a "pause" in logic update
            Enabled = true;

            // add the system itself to the systems list, so that it will get initialized and processed properly
            // this can be done after game initialization - the Game class supports adding and removing of game systems dynamically
            game.GameSystems.Add(this);
        }

        /// <summary>
        /// Initialize here anything that depends on other services
        /// </summary>
        public override void Initialize()
        {

          //  NeoManager.Initialize();

            base.Initialize();

            // get the camera service from service registry

        }

        /// <summary>
        /// Load all graphics content here.
        /// </summary>
        protected override void LoadContent()
        { 
            InitConsole(texto);
        arial16BMFont = Content.Load<SpriteFont>("Arial16");

        // Load the model (by default the model is loaded with a BasicEffect. Use ModelContentReaderOptions to change the behavior at loading time.
        models = new List<Model>();
        foreach (var modelName in new[] { "Dude", "Duck", "Car", "Happy", "Knot", "Skull", "Sphere", "Teapot", "helmet" })
        {
            model = Content.Load<Model>(modelName);

            // Enable default lighting  on model.
            BasicEffect.EnableDefaultLighting(model, true);

            models.Add(model);
        }
        model = models[0];

        // Instantiate a SpriteBatch
        spriteBatch = ToDisposeContent(new SpriteBatch(GraphicsDevice));
            base.LoadContent();

            // InitRes();
            // initialize the basic effect (shader) to draw the geometry, the BasicEffect class is similar to one from XNA

        }

        /// <summary>
        /// Draw the scene content.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>

        /// <summary>
        /// Update the scene logic.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>
        public override void Update(GameTime gameTime)
        {
            var pointerState = pointer.GetState();
            if (pointerState.Points.Count > 0 && pointerState.Points[0].EventType == PointerEventType.Released)
            {
                // Go to next model when pressing key space
                model = models[(models.IndexOf(model) + 1) % models.Count];
            }

            // Calculate the bounds of this model
            modelBounds = model.CalculateBounds();

            // Calculates the world and the view based on the model size
            const float MaxModelSize = 10.0f;
            var scaling = MaxModelSize / modelBounds.Radius;
            view = Matrix.LookAtRH(new Vector3(0, 0, MaxModelSize * 2.5f), new Vector3(0, 0, 0), Vector3.UnitY);
            projection = Matrix.PerspectiveFovRH(0.9f, (float)GraphicsDevice.BackBuffer.Width / GraphicsDevice.BackBuffer.Height, 0.1f, MaxModelSize * 10.0f);
            world = Matrix.Translation(-modelBounds.Center.X, -modelBounds.Center.Y, -modelBounds.Center.Z) * Matrix.Scaling(scaling) * Matrix.RotationY((float)gameTime.TotalGameTime.TotalSeconds);

            base.Update(gameTime);
        //  NeoManager.Update(gameTime);

            // get the total elapsed seconds since the start of the game

        }
        public override void Draw(GameTime gameTime)
        {
          //  NeoManager.BeginDraw(gameTime);

           // graphicsDeviceManager.GraphicsDevice.BlendStates = BlendStateCollection.StateAllocatorDelegate.RemoveAll();
              model.Draw(GraphicsDevice, world, view, projection);
            // Render the text

              spriteBatch.Begin();
            //correntscreen.Draw(gameTime);
              spriteBatch.DrawString(arial16BMFont, "Press the pointer to switch models...\r\nCurrent Model: " + model.Name, new Vector2(16, 16), Color.White);

            spriteBatch.End();
         //   NeoManager.EndDraw();

            base.Draw(gameTime);

            // set the parameters for cube drawing and draw it using the basic effect

        }
        private void InitConsole(string texto)
        {
            tbc = new TomShane.Neoforce.Controls.TabControl(NeoManager);
         //   tbc.BackColor = new Color(10, 12, 3);
            TomShane.Neoforce.Controls.Console con1 = new TomShane.Neoforce.Controls.Console(NeoManager);
            TomShane.Neoforce.Controls.Console con2 = new TomShane.Neoforce.Controls.Console(NeoManager);

            tbc.Visible = true;
          //  con2.BackColor
            // Setup of TabControl, which will be holding both consoles
            tbc.Init();
            tbc.AddPage("Global");
            tbc.AddPage("Guild");
            tbc.AddPage("PARTY");
            tbc.AddPage("TRADE");

            tbc.Alpha = 220;
            tbc.Left = 0;
            tbc.Height = 220;
            tbc.Width = 450;
            tbc.Top =NeoManager.TargetHeight - tbc.Height - 32;

            tbc.Movable = true;
            tbc.Resizable = true;
            tbc.MinimumHeight = 96;
            tbc.MinimumWidth = 160;

            tbc.TabPages[0].Add(con1);
            tbc.TabPages[1].Add(con2);

            con1.Init();
            con1.Sender = texto;
            tbc.BringToFront();
            con2.Init();
            con2.Sender = texto;

            con2.Width = con1.Width = tbc.TabPages[0].ClientWidth;
            con2.Height = con1.Height = tbc.TabPages[0].ClientHeight;
            con2.Anchor = con1.Anchor = Anchors.All;

            con1.Channels.Add(new ConsoleChannel(0, "General", SharpDX.Color.Orange));
            con1.Channels.Add(new ConsoleChannel(1, "Private", SharpDX.Color.White));
            con1.Channels.Add(new ConsoleChannel(2, "System", SharpDX.Color.Yellow));
            con1.Channels.Add(new ConsoleChannel(3, "Guild", SharpDX.Color.Green));
            con1.Channels.Add(new ConsoleChannel(4, "Trade", SharpDX.Color.Red));

            // We want to share channels and message buffer in both consoles
            con2.Channels = con1.Channels;
            con2.MessageBuffer = con1.MessageBuffer;

            // In the second console we display only "Private" messages
            con2.ChannelFilter.Add(3);

            // Select default channels for each tab
            con1.SelectedChannel = 0;
            con2.SelectedChannel = 3;

            // Do we want to add timestamp or channel name at the start of every message?
            con1.MessageFormat = ConsoleMessageFormats.All;
            con2.MessageFormat = ConsoleMessageFormats.All;

            // Handler for altering incoming message
            con1.MessageSent += new ConsoleMessageEventHandler(con1_MessageSent);

            // We send initial welcome message to System channel
            con1.MessageBuffer.Add(new ConsoleMessage("System", "WELCOME TO THE SERVER! " + texto, 2));

            NeoManager.Add(tbc);
        }
        ////////////////////////////////////////////////////////////////////////////

        ////////////////////////////////////////////////////////////////////////////
        void con1_MessageSent(object sender, ConsoleMessageEventArgs e)
        {
            if (e.Message.Channel == 0)
            {
                //e.Message.Text = "(!) " + e.Message.Text;
            }
        }
    }
}

r

ArtiomCiumac commented 10 years ago

I don't have experience with NeoForce controls framework and have no idea how it works. Try to start with an empty game and add just one single control to it - then check the performance. Then add another control and so on - this way you can find what you are doing wrong. I don't have time to dig into your code and please do not duplicate the same issue on all repositories as this is not a forum about game development.