/// <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"; }
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); }
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(); }
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; }