/// <summary>
        /// Sets up Local Server Dialog. It also sends out the subnet broadcast here searching for any available servers on this subnet.
        /// </summary>
        public override void LoadContent()
        {
            base.LoadContent();

            //The Okay Button here Acts  as the "Ready" button for the Server Lobby
            Btn_Ok.Clicked += new EventHandler<vxGuiItemClickEventArgs>(Btn_Ok_Clicked);

            //The Cancel Button is Naturally the 'Back' button
            Btn_Cancel.Clicked += new EventHandler<vxGuiItemClickEventArgs>(Btn_Cancel_Clicked);

            ScrollPanel = new vxScrollPanel(
                new Vector2(
                    this.ArtProvider.BoundingGUIRectangle.X + this.ArtProvider.Padding.X,
                    this.ArtProvider.BoundingGUIRectangle.Y + this.ArtProvider.Padding.Y),
                (int)(this.ArtProvider.BoundingGUIRectangle.Width - this.ArtProvider.Padding.X * 2),
                (int)(this.ArtProvider.BoundingGUIRectangle.Height - Btn_Ok.BoundingRectangle.Height - this.ArtProvider.Padding.Y * 3));

            ScrollPanel.ScrollBarWidth = 15;

            //Setup Client Events
            vxEngine.ClientManager.OtherPlayerConnected += ClientManager_OtherPlayerConnected;
            vxEngine.ClientManager.OtherPlayerDisconnected += ClientManager_OtherPlayerDisconnected;
            InternalvxGUIManager.Add(ScrollPanel);

            //Set up the Server Code
            if (vxEngine.NetworkedGameRoll == vxEnumNetworkPlayerRole.Server)
            {
                Vector2 viewportSize = new Vector2(vxEngine.GraphicsDevice.Viewport.Width, vxEngine.GraphicsDevice.Viewport.Height);

                //Create The New Server Button
                Btn_LaunchServer = new vxButton(vxEngine, "Launch Game", new Vector2(viewportSize.X / 2 - 115, viewportSize.Y / 2 + 20));

                //Set the Button's Position relative too the background rectangle.
                Btn_LaunchServer.Position = new Vector2(
                    this.ArtProvider.BoundingGUIRectangle.X, this.ArtProvider.BoundingGUIRectangle.Y) +
                    new Vector2(
                        vxEngine.vxGUITheme.Padding.X * 2,
                        this.ArtProvider.BoundingGUIRectangle.Height - vxEngine.vxGUITheme.ArtProviderForButtons.DefaultHeight - vxEngine.vxGUITheme.Padding.Y * 2);

                Btn_LaunchServer.Clicked += Btn_LaunchServer_Clicked; ;
                InternalvxGUIManager.Add(Btn_LaunchServer);

                //Now Start The Server
                vxEngine.ServerManager.Start();

                //Now Connect to it's self if it's the Server
                NetOutgoingMessage approval = vxEngine.ClientManager.CreateMessage();
                approval.Write("secret");
                vxEngine.ClientManager.Connect(NetUtility.Resolve("localhost").ToString(), vxEngine.ServerManager.Server.Configuration.Port, approval);

            }
            //vxEngine.NetworkedGameRoll == vxEnumNetworkPlayerRole.Client
            //The Server acts as a Client as well, so no need for an 'else if' block here.

            Btn_Ok.Text = "Not Ready";
        }
예제 #2
0
        public virtual void GetProperties(vxScrollPanel owningItem)
        {
            owningItem.Clear();

            nameBox = new vxTextbox(vxEngine, this.name, Vector2.Zero);
            owningItem.AddItem(nameBox);

            indexProp = new vxTextbox(vxEngine, this.Index.ToString(), new Vector2(0, 20));
            owningItem.AddItem(indexProp);
        }
        /// <summary>
        /// Sets up Local Server Dialog. It also sends out the subnet broadcast here searching for any available servers on this subnet.
        /// </summary>
        public override void LoadContent()
        {
            base.LoadContent();


            Vector2 viewportSize = new Vector2(vxEngine.GraphicsDevice.Viewport.Width, vxEngine.GraphicsDevice.Viewport.Height);

            //Create The New Server Button
            Btn_CreateNewLocalServer = new vxButton(vxEngine, "Create New Local Server", new Vector2(viewportSize.X / 2 - 115, viewportSize.Y / 2 + 20));

            //Set the Button's Position relative too the background rectangle.
            Btn_CreateNewLocalServer.Position = new Vector2(
                this.ArtProvider.BoundingGUIRectangle.X,
                this.ArtProvider.BoundingGUIRectangle.Y) + new Vector2(
                vxEngine.vxGUITheme.Padding.X * 2,
                this.ArtProvider.BoundingGUIRectangle.Height - vxEngine.vxGUITheme.ArtProviderForButtons.DefaultHeight - vxEngine.vxGUITheme.Padding.Y * 2);

            Btn_CreateNewLocalServer.Clicked += Btn_CreateNewLocalServer_Clicked;
            InternalvxGUIManager.Add(Btn_CreateNewLocalServer);

            //The Okay Button here Selects the Selected Server in the List
            Btn_Ok.Clicked += new EventHandler <vxGuiItemClickEventArgs>(Btn_Ok_Clicked);

            //The Cancel Button is Naturally the 'Back' button
            Btn_Cancel.Clicked += new EventHandler <vxGuiItemClickEventArgs>(Btn_Cancel_Clicked);

            //The Apply Button here is used to start a New Server
            Btn_Apply.Clicked += Btn_Refresh_Clicked;// new EventHandler<vxGuiItemClickEventArgs>(Btn_Refresh_Clicked);
            Btn_Apply.Text     = "Refresh";

            ScrollPanel = new vxScrollPanel(
                new Vector2(
                    this.ArtProvider.BoundingGUIRectangle.X + this.ArtProvider.Padding.X,
                    this.ArtProvider.BoundingGUIRectangle.Y + this.ArtProvider.Padding.Y),
                (int)(this.ArtProvider.BoundingGUIRectangle.Width - this.ArtProvider.Padding.X * 2),
                (int)(this.ArtProvider.BoundingGUIRectangle.Height - Btn_Ok.BoundingRectangle.Height - this.ArtProvider.Padding.Y * 3));

            ScrollPanel.ScrollBarWidth = 15;

            InternalvxGUIManager.Add(ScrollPanel);

            //Initialise the network client
            vxEngine.ClientManager.Init();

            //Now setup the Event Handlers
            vxEngine.ClientManager.DiscoverySignalResponseRecieved += ClientManager_DiscoverySignalResponseRecieved;

            //By Default, The Game will start looking for other networked games as a client.
            vxEngine.NetworkedGameRoll = vxEnumNetworkPlayerRole.Client;

            //Finally at the end, send out a pulse of discovery signals
            vxConsole.WriteLine("Sending Discovery Signal...");
            SendDiscoverySignal();
        }
        /// <summary>
        /// Loads graphics content for this screen. This uses the shared ContentManager
        /// provided by the Game class, so the content will remain loaded forever.
        /// Whenever a subsequent MessageBoxScreen tries to load this same content,
        /// it will just get back another reference to the already loaded data.
        /// </summary>
        public override void LoadContent()
        {
            base.LoadContent();

            Btn_Ok.Clicked     += new EventHandler <vxGuiItemClickEventArgs>(Btn_Ok_Clicked);
            Btn_Cancel.Clicked += new EventHandler <vxGuiItemClickEventArgs>(Btn_Cancel_Clicked);


            ScrollPanel = new vxScrollPanel(
                new Vector2(
                    this.ArtProvider.BoundingGUIRectangle.X + this.ArtProvider.Padding.X,
                    this.ArtProvider.BoundingGUIRectangle.Y + this.ArtProvider.Padding.Y) + this.ArtProvider.PosOffset,
                this.ArtProvider.BoundingGUIRectangle.Width - (int)this.ArtProvider.Padding.X * 2,
                this.ArtProvider.BoundingGUIRectangle.Height - Btn_Ok.BoundingRectangle.Height - (int)this.ArtProvider.Padding.Y * 4);


            InternalvxGUIManager.Add(ScrollPanel);
        }
예제 #5
0
        public override void LoadContent()
        {
            InitialiseLevel();

            vxScaleCube center = new vxScaleCube(vxEngine, Vector3.One * 1000);

            base.LoadContent();

            InitialiseCamera();

            Cursor = new vxCursor3D(vxEngine);

            //
            //Grabbers
            //
            grabber = new MotorizedGrabSpring();
            BEPUPhyicsSpace.Add(grabber);
            rayCastFilter = RayCastFilter;

            workingPlane = new vxWorkingPlane(vxEngine, vxEngine.Model_Sandbox_WorkingPlane, new Vector3(0, WrkngPln_HeightDelta, 0));

            for (int i = 0; i < Items.Count; i++)
            {
                Items[i].Index = i;
            }
            ConnectedMatrix      = Matrix.Identity;
            CurrentlySelectedKey = "";

            if (this.SandboxGameState == vxEnumSandboxGameState.EditMode)
            {
                this.vxEngine.InputManager.ShowCursor = true;
            }

            vxTabPage tabPage_EngineItems = new vxTabPage(vxEngine, tabControl, "General Items");

            tabControl.AddItem(tabPage_EngineItems);

            ScrollPanel_EngineItems = new vxScrollPanel(new Vector2(0, 0),
                                                        vxEngine.GraphicsDevice.Viewport.Width - 150, vxEngine.GraphicsDevice.Viewport.Height - 75);
            tabPage_EngineItems.AddItem(ScrollPanel_EngineItems);

            RegisterSandboxEntities();
        }
예제 #6
0
        public override void InitialiseLevel()
        {
            IncrementalItemCount = 0;

            base.InitialiseLevel();

            //Set up the GUI For the Sandbox

            //Add Tab Pages
            tabControl = new vxTabControl(vxEngine,
                                          vxEngine.GraphicsDevice.Viewport.Width - 100,
                                          vxEngine.GraphicsDevice.Viewport.Height - 50,
                                          new Vector2(50, 48),
                                          vxGUIItemOrientation.Left);
            GUIManager.Add(tabControl);

            propertiesTabControl = new vxTabControl(vxEngine,
                                                    300,
                                                    vxEngine.GraphicsDevice.Viewport.Height - 50,
                                                    new Vector2(-50, 48),
                                                    vxGUIItemOrientation.Right);
            GUIManager.Add(propertiesTabControl);

            vxTabPage properties = new vxTabPage(vxEngine, propertiesTabControl, "Properties");

            propertiesTabControl.AddItem(properties);


            //Set up The Scroll Panel which will hold all Properties
            PropertiesControl = new vxScrollPanel(new Vector2(0, 0),
                                                  properties.Width - 50, properties.Height - 10);
            properties.AddItem(PropertiesControl);


            //Sets The Outof sifht Position
            OutofSight = Vector3.One * 100000;


            #region Setup Top Toolbar

            toolbar = new vxToolbar(new Vector2(0, 0))
            {
                Height   = 48,
                PaddingX = 0,
                PaddingY = 0,
            };

            //Texture2D Texture_Splitter = vxEngine.EngineContentManager.Load<Texture2D>("Textures/sandbox/toolbar_icons/Toolbar_Seperator");

            GUIManager.Add(toolbar);

            //Test Buttons
            vxToolbarButton RunGameToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/test/test_run");
            //vxToolbarButton StopGameToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/test/test_stop");

            //Create Toolbar Items
            vxToolbarButton NewFileToolbarItem    = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/file/file_new");
            vxToolbarButton OpenFileToolbarItem   = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/file/file_open");
            vxToolbarButton SaveFileToolbarItem   = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/file/file_save");
            vxToolbarButton SaveAsFileToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/file/file_saveas");

            vxToolbarButton ImportToolbarItem     = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/io/io_import");
            vxToolbarButton ExportFileToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/io/io_export");


            AddItemModeToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/sel/sel_addItem")
            {
                IsTogglable = true,
            };
            SelectItemModeToolbarItem = new vxToolbarButton(vxEngine, vxEngine.EngineContentManager, "Textures/sandbox/tlbr/sel/sel_selItem")
            {
                IsTogglable = true,
            };

            //Setup Events
            NewFileToolbarItem.Clicked    += new EventHandler <vxGuiItemClickEventArgs>(Event_NewFileToolbarItem_Clicked);
            OpenFileToolbarItem.Clicked   += new EventHandler <vxGuiItemClickEventArgs>(Event_OpenFileToolbarItem_Clicked);
            SaveFileToolbarItem.Clicked   += new EventHandler <vxGuiItemClickEventArgs>(Event_SaveFileToolbarItem_Clicked);
            SaveAsFileToolbarItem.Clicked += new EventHandler <vxGuiItemClickEventArgs>(Event_SaveAsFileToolbarItem_Clicked);

            ExportFileToolbarItem.Clicked += new EventHandler <vxGuiItemClickEventArgs>(ExportFileToolbarItem_Clicked);

            RunGameToolbarItem.Clicked += new EventHandler <vxGuiItemClickEventArgs>(RunGameToolbarItem_Clicked);
            //StopGameToolbarItem.Clicked += new EventHandler<vxGuiItemClickEventArgs>(StopGameToolbarItem_Clicked);

            AddItemModeToolbarItem.Clicked    += AddItemModeToolbarItem_Clicked;
            SelectItemModeToolbarItem.Clicked += SelectItemModeToolbarItem_Clicked;
            //Add Toolbar Items
            toolbar.AddItem(NewFileToolbarItem);
            toolbar.AddItem(OpenFileToolbarItem);
            toolbar.AddItem(SaveFileToolbarItem);
            toolbar.AddItem(SaveAsFileToolbarItem);

            toolbar.AddItem(new vxToolbarSpliter(vxEngine, 5));

            toolbar.AddItem(ImportToolbarItem);
            toolbar.AddItem(ExportFileToolbarItem);

            toolbar.AddItem(new vxToolbarSpliter(vxEngine, 5));

            toolbar.AddItem(RunGameToolbarItem);
            //toolbar.AddItem(StopGameToolbarItem);

            toolbar.AddItem(new vxToolbarSpliter(vxEngine, 5));

            toolbar.AddItem(AddItemModeToolbarItem);
            toolbar.AddItem(SelectItemModeToolbarItem);
            #endregion

            //Set Initial State
            SelectItemModeToolbarItem.ToggleState = true;
            MouseClickState = vxEnumSanboxMouseClickState.SelectItem;
        }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        public override void LoadContent()
        {
            InitialiseLevel();


            ///////////////////////////////////////////////////////////////////////
            //Initialise Camera Code
            ///////////////////////////////////////////////////////////////////////
            #region Set Up Camera

            base.LoadContent();
            Camera.CameraType = CameraType.CharacterFPS;

            character = new CharacterControllerInput(BEPUPhyicsSpace, Camera, vxEngine);

            //Since this is the character playground, turn on the character by default.
            character.Activate();

            //Having the character body visible would be a bit distracting.
            character.CharacterController.Body.Tag = "noDisplayObject";

            SimulationStart();
            SimulationStop();

            //
            //Grabbers
            //
            grabber = new MotorizedGrabSpring();
            BEPUPhyicsSpace.Add(grabber);
            rayCastFilter = RayCastFilter;


            #endregion

            DoFog   = true;
            FogNear = 20;
            FogFar  = Camera.FarPlane / 4;

            Envrio envr = new Envrio(vxEngine, vxEngine.vxContentManager.LoadModel("Models/courtyard/td_courtyard"), Vector3.Zero);

            //Envrio envr = new Envrio(vxEngine, vxEngine.vxContentManager.LoadModel("Models/castle/mdl_castle"), new Vector3(0, 1, 0));

            //waterItems.Add(new vxWaterEntity(vxEngine, Vector3.Up, new Vector3(50, 0.25f, 50)));


            envr.SpecularIntensity = 1;
            //envr.SpecularIntensity = 100;
            //envr.SpecularPower = 5f;
            //envr.DoFog = false;

            light = new vxLightEntity(vxEngine, new Vector3(0, 2, 0), LightType.Point, Color.Orange, 10, 1);

            //This is a little convenience method used to extract vertices and indices from a model.
            //It doesn't do anything special; any approach that gets valid vertices and indices will work.

                        #if !TECHDEMO_PLTFRM_GL
            ModelDataExtractor.GetVerticesAndIndicesFromModel(envr.vxModel.ModelMain, out staticTriangleVertices, out staticTriangleIndices);

            //var staticMesh = new StaticMesh(staticTriangleVertices, staticTriangleIndices, new AffineTransform(Matrix3X3.CreateFromAxisAngle(Vector3.Up, MathHelper.Pi), new Vector3(0, -10, 0)));
            var staticMesh = new StaticMesh(staticTriangleVertices, staticTriangleIndices,
                                            new AffineTransform(new Vector3(1),
                                                                Quaternion.CreateFromRotationMatrix(Matrix.CreateRotationX(-MathHelper.PiOver2) * Matrix.CreateRotationY(0)),
                                                                new Vector3(0)));
            staticMesh.Sidedness = TriangleSidedness.Counterclockwise;

            BEPUPhyicsSpace.Add(staticMesh);
            BEPUDebugDrawer.Add(staticMesh);
                        #endif

            int size = 100;
            BEPUPhyicsSpace.Add(new Box(new Vector3(0, -5, 0), size, 10, size));

            vxTabPage Straights = new vxTabPage(vxEngine, tabControl, "Items");
            tabControl.AddItem(Straights);

            vxScrollPanel ScrollPanel_GeneralItemsPage = new vxScrollPanel(new Vector2(0, 0),
                                                                           vxEngine.GraphicsDevice.Viewport.Width - 150, vxEngine.GraphicsDevice.Viewport.Height - 75);

            //Cubes
            ScrollPanel_GeneralItemsPage.AddItem(new vxScrollPanelSpliter(vxEngine, "Items"));
            ScrollPanel_GeneralItemsPage.AddItem(RegisterNewSandboxItem(WoodenCrate.EntityDescription));

            //Add the scrollpanel to the slider tab page.
            Straights.AddItem(ScrollPanel_GeneralItemsPage);

            //IndexedCubeTest cube = new IndexedCubeTest(vxEngine, new Vector3(4, 4, 0));


            Teapot t = new Teapot((GameEngine)vxEngine, new Vector3(4, 4, 0));
            t.SetMesh(Matrix.CreateTranslation(new Vector3(4, 2, 0)), true, true);

            ConcreteCube cc = new ConcreteCube((GameEngine)vxEngine, new Vector3(0, 5, 0));
            cc.SetMesh(Matrix.CreateTranslation(new Vector3(0, 2, 0)), true, true);


            ModelObjs mo = new ModelObjs((GameEngine)vxEngine, new Vector3(-4, 4, 0));
            mo.SetMesh(Matrix.CreateTranslation(new Vector3(0, 2, 8)), true, true);

            vxEngine.InputManager.ShowCursor = true;
        }