/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> public override void LoadContent() { InitialiseLevel(); // xEnvrio g = new xEnvrio(vxEngine, vxEngine.LoadModel("Models/tech demo/vrtc_techDemo"), Vector3.Zero); // g.World *= Matrix.CreateRotationZ(-MathHelper.PiOver2); // g.name = "tech demo"; // g.NormalMap = vxEngine.Game.Content.Load<Texture2D>("Models/tech demo/grass_nm"); int size = 100; Box baseBox = new Box(new Vector3(0, -5, 0), size, 10, size); BEPUPhyicsSpace.Add(baseBox); /////////////////////////////////////////////////////////////////////// //Initialise Camera Code /////////////////////////////////////////////////////////////////////// #region Set Up Camera base.LoadContent(); Camera.CameraType = CameraType.CharacterFPS; Camera.Position = new Vector3(0, 20, 0); 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"; // //Grabbers // grabber = new MotorizedGrabSpring(); BEPUPhyicsSpace.Add(grabber); rayCastFilter = RayCastFilter; new IndexedPrimTest(vxEngine, new Vector3(0, 0, 0)); #endregion }
public StandardDemo(DemosGame game) : base(game) { //Creates the player character (C). character = new CharacterControllerInput(Space, game.Camera); //Creates the drivable vehicle (V). var wheelModel = game.Content.Load <Model>("carWheel"); var wheelTexture = game.Content.Load <Texture2D>("wheel"); whitePixel = game.Content.Load <Texture2D>("whitePixel"); vehicle = new VehicleInput(new Vector3(10000, 0, 0), Space, game.Camera, game.ModelDrawer, wheelModel, wheelTexture); Space.ForceUpdater.Gravity = new Vector3(0, -9.81f, 0f); //If left unset, the default value is (0,0,0). //Create the tossable ball. kapow = new Sphere(new Vector3(11000, 0, 0), .6f, 20); kapowMaker = new Explosion(Vector3.Zero, 400, 15, Space); //Create the right-click grab spring. grabber = new MotorizedGrabSpring();//30f, .8f, .6f); grabberGraphic = game.ConstraintDrawer.Add(grabber); grabberGraphic.IsDrawing = false; Space.Add(grabber); Space.Add(kapow); //IMPORTANT PERFORMANCE NOTE: // BEPUphysics uses an iterative system to solve constraints. You can tell it to do more or less iterations. // Less iterations is faster; more iterations makes the result more accurate. // // The amount of iterations needed for a simulation varies. The "Wall" and "Pyramid" simulations are each fairly // solver intensive, but as few as 4 iterations can be used with acceptable results. // The "Jenga" simulation usually needs a few more iterations for stability; 7-9 is a good minimum. // // The Dogbot demo shows how accuracy can smoothly increase with more iterations. // With very few iterations (1-3), it has slightly jaggier movement, as if the parts used to construct it were a little cheap. // As you give it a few more iterations, the motors and constraints get more and more robust. // // Many simulations can work perfectly fine with very few iterations, // and using a low number of iterations can substantially improve performance. // // To change the number of iterations used, uncomment and change the following line (10 iterations is the default): //Space.Solver.IterationLimit = 10; rayCastFilter = RayCastFilter; }
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 Player() : base(null, null, 100) { character = new CharacterControllerInput(GameManager.Space, RenderingDevice.Camera as CharacterCamera, new Vector3(-1, -16, 5)); character.CharacterController.Body.Tag = this; character.CharacterController.HorizontalMotionConstraint.Speed = 10; character.CharacterController.HorizontalMotionConstraint.CrouchingSpeed = 5; PhysicsObject = character.CharacterController.Body; // for posterity PhysicsObject.CollisionInformation.CollisionRules.Group = dynamicObjects; // also for posterity rayCastFilter = RayCastFilter; sword = new BaseModel(delegate { return(Program.Game.Loader.SwordModel); }, false, true, new Vector3(0.5f, -15, 4.2f)); CollisionRules.AddRule(sword.Ent, PhysicsObject, CollisionRule.NoBroadPhase); sword.Ent.CollisionInformation.LocalPosition = new Vector3(0, -1, 0); sword.Ent.Orientation = Quaternion.CreateFromAxisAngle(Vector3.UnitX, -MathHelper.PiOver2); swordgrabber = new MotorizedGrabSpring(); swordgrabber.Setup(sword.Ent, sword.ModelPosition - Vector3.UnitX * 0.5f); sword.Ent.CollisionInformation.Events.PairTouching += onCollision; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> public override void LoadContent() { //Load Global Content First if (vxEngine.HasContentBeenLoaded == false) { vxEngine.LoadGlobalContent(vxEngine.Game.Content); } InitialiseLevel(); d = new Envrio(vxEngine, vxEngine.vxContentManager.LoadModel("Models/courtyard/td_courtyard"), new Vector3(20, 0, 0)); //d = new Envrio(vxEngine, vxEngine.vxContentManager.LoadModel("Models/castle/mdl_castle"), new Vector3(20, 0, 0)); //d.NormalMap = vxEngine.Game.Content.Load<Texture2D>("Models/courtyard/crtyrd_bricks_nm"); //d.SpecularMap = vxEngine.Game.Content.Load<Texture2D>("Models/courtyard/crtyrd_bricks_sm"); d.SpecularIntensity = 1; waterItems.Add(new vxWaterEntity(vxEngine, Vector3.Up, new Vector3(500, 1, 500))); vxModel mod = vxEngine.vxContentManager.LoadModel("Models/cbe/cbe"); new Envrio(vxEngine, mod, new Vector3(-5, 5, 0)); //mod.SetTexturePackLevel(vxEnumQuality.Low); //mod.SetTexturePackLevel(vxEnumQuality.High); //mod.SetTexturePackLevel(vxEnumQuality.Ultra); //mod.SetTexturePackLevel(vxEnumQuality.Medium); //vxTexture2D newtexture = new vxTexture2D(vxEngine, "Models/cbe/Cube_dds"); int size = 100; Box baseBox = new Box(new Vector3(0, -5, 0), size, 10, size); BEPUPhyicsSpace.Add(baseBox); /////////////////////////////////////////////////////////////////////// //Initialise Camera Code /////////////////////////////////////////////////////////////////////// #region Set Up Camera base.LoadContent(); Camera.CameraType = CameraType.Orbit; Camera.OrbitTarget = new Vector3(0, 1.5f, 0); //Camera.OrbitZoom = -375; // //Grabbers // grabber = new MotorizedGrabSpring(); BEPUPhyicsSpace.Add(grabber); rayCastFilter = RayCastFilter; IsPausable = false; #endregion int height = 3; ConcreteCube cc = new ConcreteCube((GameEngine)vxEngine, new Vector3(0, 5, 0)); cc.SetMesh(Matrix.CreateTranslation(new Vector3(0, height, 0)), true, true); cc = new ConcreteCube((GameEngine)vxEngine, new Vector3(0, 5, 4f)); cc.SetMesh(Matrix.CreateTranslation(new Vector3(0, height, 5f)), true, true); cc = new ConcreteCube((GameEngine)vxEngine, new Vector3(0, 5, 4f)); cc.SetMesh(Matrix.CreateTranslation(new Vector3(0, height, -5f)), true, true); }
/// <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; }