protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, IContentManager contentManager) { base.LoadContent(GraphicInfo, factory, contentManager); #region Models ///Cria uma textura 1x1 com a cor branca Texture2D white = factory.CreateTexture2DColor(1,1, Color.White); { SimpleModel sm = new SimpleModel(factory, "..\\Content\\Model\\cubo"); sm.SetTexture(white, TextureType.DIFFUSE); BoxObject pi = new BoxObject(new Vector3(100, 20, 0), 1,1,1, 5,new Vector3(100, 5, 100),Matrix.Identity,MaterialDescription.DefaultBepuMaterial()); DeferredNormalShader shader = new DeferredNormalShader(); ///Setando alguns parametros do material shader.SpecularIntensity = 0.01f; shader.SpecularPower = 50; IMaterial mat = new DeferredMaterial(shader); IObject obj3 = new IObject(mat, sm, pi); this.World.AddObject(obj3); } { SimpleModel sm = new SimpleModel(factory,"..\\Content\\Model\\cubo"); sm.SetTexture(white, TextureType.DIFFUSE); BoxObject pi = new BoxObject(new Vector3(90, 30, 0), 1,1,1, 10,new Vector3(1),Matrix.Identity,MaterialDescription.DefaultBepuMaterial()); DeferredNormalShader shader = new DeferredNormalShader(); IMaterial mat = new DeferredMaterial(shader); IObject obj3 = new IObject(mat, sm, pi); this.World.AddObject(obj3); } { SimpleModel sm = new SimpleModel(factory,"..\\Content\\Model\\cenario"); IPhysicObject pi = new TriangleMeshObject(sm,Vector3.Zero,Matrix.Identity,Vector3.One,MaterialDescription.DefaultBepuMaterial()); DeferredNormalShader shader = new DeferredNormalShader(); IMaterial mat = new DeferredMaterial(shader); IObject obj3 = new IObject(mat, sm, pi); this.World.AddObject(obj3); } #endregion #region NormalLight ///Conjunto de luzes direcionais DirectionalLightPE ld1 = new DirectionalLightPE(Vector3.Left, Color.White); DirectionalLightPE ld2 = new DirectionalLightPE(Vector3.Right, Color.White); DirectionalLightPE ld3 = new DirectionalLightPE(Vector3.Backward, Color.White); DirectionalLightPE ld4 = new DirectionalLightPE(Vector3.Forward, Color.White); DirectionalLightPE ld5 = new DirectionalLightPE(Vector3.Down, Color.White); float li = 0.4f; ld1.LightIntensity = li; ld2.LightIntensity = li; ld3.LightIntensity = li; ld4.LightIntensity = li; ld5.LightIntensity = li; this.World.AddLight(ld1); this.World.AddLight(ld2); this.World.AddLight(ld3); this.World.AddLight(ld4); this.World.AddLight(ld5); #endregion ///Criando uma camera estatica CameraStatic camx = new CameraStatic(new Vector3(130, 100, 700), Vector3.Zero); ///Dando um nome a ela (para poder recupera-la depois) camx.Name = "default"; camx.FarPlane = 3000; ///Adiciona ao Manager (NAO ESTA SENDO ATIVADA, APENAS ADICIONADA) this.World.CameraManager.AddCamera(camx, camx.Name); ///Ativa a camera atual (AO ADICIONAR UMA CAMERA AO WORLD USANDO mundo.AddCamera(cam) A CAMERA EH AUTOMATICAMENTE ATIVADA ) this.World.CameraManager.SetActiveCamera(camx.Name); ///Adiciona na lista circular camerasNames.Value = camx.Name; camerasNames.Next(); ///Idem para uma segunda camera (Porem esta nao eh ativada) CameraStatic cam2 = new CameraStatic(new Vector3(100, 100, 100), Vector3.Zero); cam2.Name = "StaticCamera"; cam2.FarPlane = 3000; this.World.CameraManager.AddCamera(cam2, cam2.Name); camerasNames.Value = cam2.Name; camerasNames.Next(); ///Idem para a terceira CameraStatic cam3 = new CameraStatic(new Vector3(500, 300, 300), Vector3.Zero); cam3.Name = "StaticCamera3"; cam3.FarPlane = 3000; this.World.CameraManager.AddCamera(cam3, cam3.Name); camerasNames.Value = cam3.Name; camerasNames.Next(); SimpleConcreteKeyboardInputPlayable ikp = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Space, KeyStateChange); bk = new BindKeyCommand(ikp, BindAction.ADD); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(bk); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, IContentManager contentManager) { ///Must be called before everything in the LoadContent base.LoadContent(GraphicInfo, factory, contentManager); ///Create a Simple Model IModelo sm = new SimpleModel(factory,"..\\Content\\Model\\cenario"); ///Create a Physic Object IPhysicObject pi = new TriangleMeshObject(sm, Vector3.Zero,Matrix.Identity,Vector3.One,MaterialDescription.DefaultBepuMaterial()); pi.isMotionLess = true; ///Create a shader IShader shader = new DeferredNormalShader(); ///Create a Material IMaterial mat = new DeferredMaterial(shader); ///Create a an Object that englobs everything and add it to the world IObject obj4 = new IObject(mat, sm,pi); this.World.AddObject(obj4); ///Create the Physic Objects { for (int i = 0; i < 15; i++) { CreateThrash(new Vector3(-70 + i * 5, 50, 10)); } for (int i = 0; i < 15; i++) { CreateBox(new Vector3(-70 + i * 7, 100, 50)); } for (int i = 0; i < 15; i++) { CreateThrash(new Vector3(-70 + i * 5, 80, 50)); } for (int i = 0; i < 15; i++) { CreateBall(new Vector3(-70 + i * 5, 50, 30)); } for (int i = 0; i < 15; i++) { CreateBox(new Vector3(-70 + i * 7, 130, -20)); } for (int i = 0; i < 15; i++) { CreateBox(new Vector3(-70 + i * 7, 60, -50)); } ///Create A Ghost Object (Do Not Collide) { ///Create a Simple Model SimpleModel model = new SimpleModel(factory, "..\\Content\\Model\\ball"); model.SetTexture(factory.CreateTexture2DColor(1,1,Color.Purple), TextureType.DIFFUSE); ///Create a Physic Object IPhysicObject pobj = new GhostObject(new Vector3(50, 13f, 50), Matrix.Identity, Vector3.One * 5); pobj.isMotionLess = true; ///Create a shader IShader nd = new DeferredNormalShader(); ///Create a Material IMaterial material = new DeferredMaterial(shader); ///Create a an Object that englobs everything and add it to the world IObject obj = new IObject(material, model, pobj); this.World.AddObject(obj); } } ///Call the function releaseObjects when Space key is pressed InputPlayableKeyBoard ip1 = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Microsoft.Xna.Framework.Input.Keys.Space, releaseObjects); ///Using the Global Method, need to release when screen is cleaned ///Check the KeyboardInputScreen for how to use it locally mm = new BindKeyCommand(ip1, BindAction.ADD); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(mm); ///Create a FirstPerson Camera ///This is a special camera, used in the development ///You can move around using wasd / qz / and the mouse CameraFirstPerson cam = new CameraFirstPerson(GraphicInfo); this.World.CameraManager.AddCamera(cam); ///Create some directionals lights and add to the world DirectionalLightPE ld = new DirectionalLightPE(Vector3.Forward, Color.White); DirectionalLightPE ld2 = new DirectionalLightPE(Vector3.Left, Color.White); DirectionalLightPE ld3 = new DirectionalLightPE(Vector3.Down, Color.White); ld.LightIntensity = 0.5f; ld2.LightIntensity = 0.5f; ld3.LightIntensity = 0.5f; this.World.AddLight(ld); this.World.AddLight(ld2); this.World.AddLight(ld3); lightThrow = new LightThrowBepu(this.World,factory); this.RenderTechnic.AddPostEffect(new AntiAliasingPostEffect()); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, IContentManager contentManager) { base.LoadContent(GraphicInfo, factory, contentManager); for (int i = 0; i < totalDemos; i++) { screenList.SetValue(i, i); } { SimpleConcreteKeyboardInputPlayable ik = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.F1, ChangeDemo); BindKeyCommand bk = new BindKeyCommand(ik, BindAction.ADD); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(bk); } { SimpleConcreteKeyboardInputPlayable ik = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Escape, LeaveGame); BindKeyCommand bk = new BindKeyCommand(ik, BindAction.ADD); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(bk); } }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, IContentManager contentManager) { base.LoadContent(GraphicInfo, factory, contentManager); #region Models ///Cria um modelo Controlavel pelo teclado { SimpleModel sm = new SimpleModel(factory,"..\\Content\\Model\\cubo"); sm.SetTexture(factory.CreateTexture2DColor(1,1,Color.Blue),TextureType.DIFFUSE); DeferredNormalShader shader = new DeferredNormalShader(); IMaterial mat = new DeferredMaterial(shader); CharacterControllerInput character = new CharacterControllerInput(this, new Vector3(100, 150, 1), 1, 1, 50, Vector3.One * 10, 0.5f); character.AheadKey = Keys.G; character.BackKey = Keys.T; character.LeftKey = Keys.F; character.RightKey = Keys.H; character.JumpKey = Keys.R; character.Characterobj.CharacterController.MaxSpeed = 35f; character.Characterobj.CharacterController.JumpSpeed = 15f; player = new IObject(mat, sm, character.Characterobj); this.World.AddObject(player); } ///Cria o cenario padrao de sempre ;) { SimpleModel sm = new SimpleModel(factory,"..\\Content\\Model\\cenario"); IPhysicObject pi = new TriangleMeshObject(sm,Vector3.Zero, Matrix.Identity,Vector3.One,MaterialDescription.DefaultBepuMaterial()); DeferredNormalShader shader = new DeferredNormalShader(); IMaterial mat = new DeferredMaterial(shader); IObject obj3 = new IObject(mat, sm, pi); this.World.AddObject(obj3); } #endregion #region Cameras cam0 = new CameraFollowObject(player); ///Dando um nome a ela (para poder recupera-la depois) cam0.Name = "follow"; cam0.FarPlane = 3000; ///Adiciona ao Manager (NAO ESTA SENDO ATIVADA, APENAS ADICIONADA) this.World.CameraManager.AddCamera(cam0, cam0.Name); ///Ativa a camera atual (AO ADICIONAR UMA CAMERA AO WORLD USANDO mundo.AddCamera(cam) A CAMERA EH AUTOMATICAMENTE ATIVADA ) this.World.CameraManager.SetActiveCamera(cam0.Name); ///Adiciona na lista circular camerasNames.Value = cam0.Name; camerasNames.Next(); cam1 = new CameraFirstPerson(GraphicInfo); ///Dando um nome a ela (para poder recupera-la depois) cam1.Name = "first person"; cam1.FarPlane = 3000; ///Adiciona ao Manager (NAO ESTA SENDO ATIVADA, APENAS ADICIONADA) this.World.CameraManager.AddCamera(cam1, cam1.Name); ///Ativa a camera atual (AO ADICIONAR UMA CAMERA AO WORLD USANDO mundo.AddCamera(cam) A CAMERA EH AUTOMATICAMENTE ATIVADA ) this.World.CameraManager.SetActiveCamera(cam1.Name); ///Adiciona na lista circular camerasNames.Value = cam1.Name; //camerasNames.Next(); #endregion ///Objeto que permite atirar bolas de luzes na cena lt = new LightThrowBepu(this.World, factory); #region NormalLight ///Conjunto de luzes direcionais DirectionalLightPE ld1 = new DirectionalLightPE(Vector3.Left, Color.White); DirectionalLightPE ld2 = new DirectionalLightPE(Vector3.Right, Color.White); DirectionalLightPE ld3 = new DirectionalLightPE(Vector3.Backward, Color.White); DirectionalLightPE ld4 = new DirectionalLightPE(Vector3.Forward, Color.White); DirectionalLightPE ld5 = new DirectionalLightPE(Vector3.Down, Color.White); float li = 0.4f; ld1.LightIntensity = li; ld2.LightIntensity = li; ld3.LightIntensity = li; ld4.LightIntensity = li; ld5.LightIntensity = li; this.World.AddLight(ld1); this.World.AddLight(ld2); this.World.AddLight(ld3); this.World.AddLight(ld4); this.World.AddLight(ld5); #endregion { SimpleConcreteKeyboardInputPlayable ik = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Space, ChangeCamera); BindKeyCommand bk = new BindKeyCommand(ik, BindAction.ADD); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(bk); } }
/// <summary> /// Binds the KeyBoard input. /// </summary> /// <param name="ipk">The InputPlayableKeyBoard.</param> public void BindInput(InputPlayableKeyBoard ipk) { System.Diagnostics.Debug.Assert(ipk != null); BindKeyCommand bkc = new BindKeyCommand(ipk, BindAction.ADD); KeyBinds.Add(ipk,bkc); CommandProcessor.getCommandProcessor().SendCommandAssyncronous(bkc); }