public override void StartFrame(ref Microsoft.Xna.Framework.Matrix view, ref Microsoft.Xna.Framework.Matrix projection, Microsoft.Xna.Framework.BoundingFrustum frustrum) { rend = 0; MaterialSortedObjects.Clear(); Vector3[] corners = new Vector3[8]; frustrum.GetCorners(corners); List <I2DPhysicObject> objs = world.PhysicWorld.TestAABB(new Vector2(corners[0].X, corners[0].Y), new Vector2(corners[2].X, corners[2].Y)); foreach (var item in objs) { I2DObject obj = item.Owner; if (!MaterialSortedObjects.ContainsKey(obj.Material.GetType())) { MaterialSortedObjects[obj.Material.GetType()] = new List <I2DObject>(); } MaterialSortedObjects[obj.Material.GetType()].Add(obj); rend++; } foreach (var obj in ghosts) { if (!MaterialSortedObjects.ContainsKey(obj.Material.GetType())) { MaterialSortedObjects[obj.Material.GetType()] = new List <I2DObject>(); } MaterialSortedObjects[obj.Material.GetType()].Add(obj); } rend += ghosts.Count; }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(4)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.OnHasMoved += new PloobsEngine.SceneControl._2DScene.OnHasMoved(o_OnHasMoved); this.World.AddObject(o); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); ///Create the Particle System DPFSParticleSystem ps = new DPFSParticleSystem("TESTE", new SpriteParticleSystem(null)); this.World.ParticleManager.AddAndInitializeParticleSystem(ps); ///updateable JointUpdateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///Ground Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///animated sprite { ///loading the texture Texture2D tex = factory.GetTexture2D("Textures//DudeSheet"); ///scale the texture (this is not good specially with animated texture, cause the whole texture is being scalled) tex = factory.GetScaledTexture(tex, new Vector2(2)); ///Loading the Sprite and extracting the frames ///8 = Maximum number of frames in the horizontal ///2 = Number of animation ///See the texture DudeSheet to undertand SpriteAnimated sa = new SpriteAnimated(tex, 8, 2); ///Specify the first animation (First "line" of the texture) -- see the extra parameters in addAnimation sa.AddAnimation("ANIM1", 1, 8, 0); ///Specify the Second animation (Second "line" of the texture) sa.AddAnimation("ANIM2", 2, 4, 0); ///Create the Material Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); ///To create the physic object, we extract one frame from the image and use it to be our physic body =P Texture2D frame = factory.GetTexturePart(tex, sa.GetFrameRectangle("ANIM1", 0)); FarseerObject fs = new FarseerObject(fworld, frame); sheet = new I2DObject(fs, mat, sa); sheet.PhysicObject.Position = new Vector2(0, 0); this.World.AddObject(sheet); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); ///when double tap, perform the following action this.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.DoubleTap, (a) => { animationIndex = (animationIndex + 1) % 2; (sheet.Modelo as SpriteAnimated).ChangeAnimation(animations[animationIndex]); ///you can play, pause, change ..... using the SpriteAnimated object. } )); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture, scale usage sample { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(3)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); fs.Position = new Vector2(0, 50); partobj = new I2DObject(fs, mat, model); partobj.OnHasMoved += new PloobsEngine.SceneControl._2DScene.OnHasMoved(o_OnHasMoved); this.World.AddObject(partobj); } Vertices verts = PolygonTools.CreateRectangle(150, 150); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(100, 100); this.World.AddObject(o); } //circle verts = PolygonTools.CreateCircle(150, 150); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(-100, -100); this.World.AddObject(o); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); DPFSParticleSystem ps = new DPFSParticleSystem("TESTE", new SpriteParticleSystem(null)); this.World.ParticleManager.AddAndInitializeParticleSystem(ps); ///updateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); }
public override void onObjectAdded(I2DObject obj) { if (!MaterialSortedObjects.ContainsKey(obj.Material.GetType())) { MaterialSortedObjects[obj.Material.GetType()] = new List <I2DObject>(); } MaterialSortedObjects[obj.Material.GetType()].Add(obj); }
void o_OnHasMoved(I2DObject Reciever) { DPSFParticleManager DPSFParticleManager = this.World.ParticleManager as DPSFParticleManager; DPFSParticleSystem ParticleSystem = DPSFParticleManager.GetParticleSystem("TESTE") as DPFSParticleSystem; SpriteParticleSystem SpriteParticleSystem = ParticleSystem.IDPSFParticleSystem as SpriteParticleSystem; Vector2 v = Reciever.PhysicObject.Position; ///simulation position SpriteParticleSystem.AttractorPosition = new Vector3(v, 0); }
public override void onObjectAdded(I2DObject obj) { switch (obj.PhysicObject.Physic2DType) { case Physic2DType.Ghost: ghosts.Add(obj); break; default: break; } }
public override void onObjectRemoved(I2DObject obj) { switch (obj.PhysicObject.Physic2DType) { case Physic2DType.Ghost: ghosts.Remove(obj); break; default: break; } }
void ball_OnUpdate(I2DObject obj, GameTime gt) { if (fired) { if (((obj.PhysicObject.Position.Y > 500 || (obj.PhysicObject as FarseerObject).LinearVelocity.Length() < 0.5f) && (goo.PhysicObject as FarseerObject).LinearVelocity.Length() < 0.5f) || goo.PhysicObject.Position.Y > 150) { ///victory condition =P if (goo.PhysicObject.Position.Y > 150) { ///VC GANHOU EBA !!! result = "YOU HAVE WON !!!!!!!!!!!!!!!!"; fired = false; } else { ///you have lost playba =P result = "YOU HAVE LOST !!!!!!!!!!!!!!"; fired = false; } } } }
void ball_OnUpdate(I2DObject obj, GameTime gt) { if (fired) { if ((obj.PhysicObject.Position.Y > 500 || (obj.PhysicObject as FarseerObject).LinearVelocity.Length() < 0.5f) && (goo.PhysicObject as FarseerObject).LinearVelocity.Length() < 0.5f) { ///victory condition =P if (goo.PhysicObject.Position.Y > 150) { ///VC GANHOU EBA !!! System.Windows.Forms.MessageBox.Show("YOU HAVE WON !!!"); fired = false; } else { ///you have lost playba =P System.Windows.Forms.MessageBox.Show("YOU HAVE LOST !!!"); fired = false; } } } }
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///from vertices { ////creating objects from vertices Vertices Vertices = new Vertices(3); Vertices.Add(new Vector2(0, 0)); Vertices.Add(new Vector2(100, 0)); Vertices.Add(new Vector2(0, -100)); ///creating the IModelo (graphic representation) SpriteFarseer SpriteFarseer = new SpriteFarseer(factory, Vertices, Color.Green); ///The material (how to draw) Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); ///the physic object (physic representation) FarseerObject fs = new FarseerObject(fworld, SpriteFarseer, 1, BodyType.Static); ///the iobject (that comprises all) I2DObject o = new I2DObject(fs, mat, SpriteFarseer); ///adding to the world this.World.AddObject(o); } ///Creating from factory helper Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth, 450); this.World.AddObject(o); } ///creating a circle =P CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); Tracked = new I2DObject(fs, mat, model); Tracked.PhysicObject.Position = new Vector2(0, -250); /// a middle of the screen + 250 pixels up this.World.AddObject(Tracked); } ///when space is pressed, perform the following action this.BindInput(new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Space, (a) => { if (tracking == false) { ///enable camera tracking (this.World.Camera2D as Camera2D).TrackingBody = Tracked; (this.World.Camera2D as Camera2D).EnablePositionTracking = true; } else { ///reset the camera (recreating =P) this.World.Camera2D = new Camera2D(GraphicInfo); } tracking = !tracking; } )); ///the basic ortographic 2D camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture //{ // Texture2D tex = factory.GetTexture2D("Textures//goo"); // IModelo2D model = new SpriteFarseer(tex); // Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); // FarseerObject fs = new FarseerObject(fworld, tex); // I2DObject o = new I2DObject(fs, mat, model); // this.World.AddObject(o); //} ///from texture, scale usage sample //{ // Texture2D tex = factory.GetTexture2D("Textures//goo"); // tex = factory.GetScaledTexture(tex, new Vector2(2)); // IModelo2D model = new SpriteFarseer(tex); // Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); // FarseerObject fs = new FarseerObject(fworld, tex); // I2DObject o = new I2DObject(fs, mat, model); // this.World.AddObject(o); //} ///rectangle Vertices verts = PolygonTools.CreateRectangle(5, 5); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, verts); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(5, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, circle); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } { PointLight2D l = new PointLight2D(new Vector2(-GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Red, 1); this.World.AddLight(l); } { SpotLight2D l = new SpotLight2D(new Vector2(+GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Blue, new Vector2(0, 1), MathHelper.ToRadians(45)); this.World.AddLight(l); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); ///add a post effect =P //this.RenderTechnic.AddPostEffect(new WigglePostEffect()); ///updateable JointUpdateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); I2DObject o = new I2DObject(fs, mat, model); o.OnHasMoved += new PloobsEngine.SceneControl._2DScene.OnHasMoved(o_OnHasMoved); this.World.AddObject(o); } ///from texture, scale usage sample { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(2)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } ///rectangle Vertices verts = PolygonTools.CreateRectangle(5, 5); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, verts); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(5, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, circle); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); DPFSParticleSystem ps = new DPFSParticleSystem("TESTE", new SpriteParticleSystem(null)); this.World.ParticleManager.AddAndInitializeParticleSystem(ps); ///add a post effect =P //this.RenderTechnic.AddPostEffect(new WigglePostEffect()); ///updateable JointUpdateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(200, 0); this.World.AddObject(o); } ///from texture, scale usage sample { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(2)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.OnHasMoved += new PloobsEngine.SceneControl._2DScene.OnHasMoved(o_OnHasMoved); this.World.AddObject(o); } ///rectangle Vertices verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(-200, 0); this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(200, -100); this.World.AddObject(o); } ///animated sprite { Texture2D tex = factory.GetTexture2D("Textures//DudeSheet"); SpriteAnimated sa = new SpriteAnimated(tex, 8, 2); sa.AddAnimation("ANIM1", 1, 8, 0); sa.AddAnimation("ANIM2", 2, 4, MathHelper.PiOver2); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); Texture2D frame = factory.GetTexturePart(tex, sa.GetFrameRectangle("ANIM1", 0)); FarseerObject fs = new FarseerObject(fworld, frame); //GhostObject fs = new GhostObject(Vector2.Zero); sheet = new I2DObject(fs, mat, sa); sheet.PhysicObject.Position = new Vector2(500, 0); this.World.AddObject(sheet); } { PointLight2D l = new PointLight2D(new Vector2(-GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Red, 1); this.World.AddLight(l); } { SpotLight2D l = new SpotLight2D(new Vector2(+GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Blue, new Vector2(0, 1), MathHelper.ToRadians(45)); this.World.AddLight(l); } { SimpleConcreteKeyboardInputPlayable sc = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Space); sc.KeyStateChange += new KeyStateChange(sc_KeyStateChange); this.BindInput(sc); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); DPFSParticleSystem ps = new DPFSParticleSystem("TESTE", new SpriteParticleSystem(null)); this.World.ParticleManager.AddAndInitializeParticleSystem(ps); ///add a post effect =P //this.RenderTechnic.AddPostEffect(new WigglePostEffect()); ///updateable JointUpdateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); }
/// <summary> /// Called when an object is added to the world /// </summary> /// <param name="obj">The obj.</param> public abstract void onObjectAdded(I2DObject obj);
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///from vertices { ////creating objects from vertices Vertices Vertices = new Vertices(3); Vertices.Add(new Vector2(0, 0)); Vertices.Add(new Vector2(100, 0)); Vertices.Add(new Vector2(0, -100)); ///creating the IModelo (graphic representation) SpriteFarseer SpriteFarseer = new SpriteFarseer(factory, Vertices, Color.Green); ///The material (how to draw) Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); ///the physic object (physic representation) FarseerObject fs = new FarseerObject(fworld, SpriteFarseer, 1, BodyType.Static); ///the iobject (that comprises all) I2DObject o = new I2DObject(fs, mat, SpriteFarseer); ///adding to the world this.World.AddObject(o); } ///Creating from factory helper Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(100, 450); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///creating a circle =P CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); goo = new I2DObject(fs, mat, model); goo.PhysicObject.Position = new Vector2(0, -150); /// a middle of the screen + 150 pixels up this.World.AddObject(goo); } ///the basic ortographic 2D camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); }
public override void onObjectRemoved(I2DObject obj) { MaterialSortedObjects[obj.Material.GetType()].Remove(obj); }
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///from vertices { ////creating objects from vertices Vertices Vertices = new Vertices(3); Vertices.Add(new Vector2(0, 0)); Vertices.Add(new Vector2(100, 0)); Vertices.Add(new Vector2(0, -100)); ///creating the IModelo (graphic representation) SpriteFarseer SpriteFarseer = new SpriteFarseer(factory, Vertices, Color.Green); ///The material (how to draw) Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); ///the physic object (physic representation) FarseerObject fs = new FarseerObject(fworld, SpriteFarseer, 1, BodyType.Static); ///the iobject (that comprises all) I2DObject o = new I2DObject(fs, mat, SpriteFarseer); ///adding to the world this.World.AddObject(o); } ///Creating from factory helper Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth, 450); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(100, GraphicInfo.BackBufferHeight); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.5f, 450); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(100, GraphicInfo.BackBufferHeight); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(-GraphicInfo.BackBufferWidth / 2, 150); this.World.AddObject(o); } ///creating a circle =P CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); fs.Body.Restitution = 0.95f; Tracked = new I2DObject(fs, mat, model); Tracked.PhysicObject.Position = new Vector2(0, -250); /// a middle of the screen + 250 pixels up this.World.AddObject(Tracked); } ///when space is pressed, perform the following action this.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Hold, (a) => { if (tracking == false) { ///enable camera tracking (this.World.Camera2D as Camera2D).TrackingBody = Tracked; (this.World.Camera2D as Camera2D).EnablePositionTracking = true; } else { Vector2 pos = (this.World.Camera2D as Camera2D).Position; ///reset the camera (recreating =P) this.World.Camera2D = new Camera2D(GraphicInfo); this.World.Camera2D.Position = pos; } tracking = !tracking; } )); this.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.FreeDrag, (a) => { ///tune this, make proportinal to elapsed time ..... =P this.World.Camera2D.MoveCamera(0.1f * a.Delta); } )); this.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Pinch, (sample) => { // if (lastDistance != 0) { // get the current and previous locations of the two fingers Vector2 a = sample.Position; Vector2 aOld = sample.Position - sample.Delta; Vector2 b = sample.Position2; Vector2 bOld = sample.Position2 - sample.Delta2; // figure out the distance between the current and previous locations float d = Vector2.Distance(a, b); float dOld = Vector2.Distance(aOld, bOld); // calculate the difference between the two and use that to alter the scale float scaleChange = (d - dOld) * .5f; this.World.Camera2D.Zoom -= scaleChange; } } )); ///the basic ortographic 2D camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; //ground { Vertices Vertices = new Vertices(3); Vertices.Add(new Vector2(-200, 0)); Vertices.Add(new Vector2(0, 200)); Vertices.Add(new Vector2(200, 0)); SpriteFarseer SpriteFarseer = new SpriteFarseer(factory, Vertices, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, SpriteFarseer, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, SpriteFarseer); this.World.AddObject(o); } ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } ///rectangle Vertices verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); model.LayerDepth = 0; Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); this.World.AddObject(o); } //rectangle //cria em Display verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); model.LayerDepth = 1; Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(50, 50); this.World.AddObject(o); } ///rectangle verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); model.LayerDepth = 0; Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(-GraphicInfo.BackBufferWidth / 2, 0); this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(0, -GraphicInfo.BackBufferHeight / 2); this.World.AddObject(o); } ///animated sprite { Texture2D tex = factory.GetTexture2D("Textures//DudeSheet"); SpriteAnimated sa = new SpriteAnimated(tex, 8, 2); sa.AddAnimation("ANIM1", 1, 8, 0); sa.AddAnimation("ANIM2", 2, 4, MathHelper.PiOver2); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); Texture2D frame = factory.GetTexturePart(tex, sa.GetFrameRectangle("ANIM1", 0)); FarseerObject fs = new FarseerObject(fworld, frame); I2DObject sheet = new I2DObject(fs, mat, sa); sheet.PhysicObject.Position = new Vector2(100, 100); this.World.AddObject(sheet); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); }
/// <summary> /// Called once when lights are enabled /// Responsible for drawing the scene from the light perspective /// </summary> /// <param name="gt">The gt.</param> /// <param name="obj">The obj.</param> /// <param name="render">The render.</param> /// <param name="color">The color.</param> /// <param name="light">The light.</param> public abstract void LightDraw(GameTime gt, I2DObject obj, RenderHelper render, Color color, PloobsEngine.Light2D.Light2D light);
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///from vertices { ////creating objects from vertices Vertices Vertices = new Vertices(3); Vertices.Add(new Vector2(0, 0)); Vertices.Add(new Vector2(200, 0)); Vertices.Add(new Vector2(0, -200)); ///creating the IModelo (graphic representation) SpriteFarseer SpriteFarseer = new SpriteFarseer(factory, Vertices, Color.Green); ///The material (how to draw) Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); ///the physic object (physic representation) FarseerObject fs = new FarseerObject(fworld, SpriteFarseer, 1, BodyType.Static); ///the iobject (that comprises all) I2DObject o = new I2DObject(fs, mat, SpriteFarseer); ///adding to the world this.World.AddObject(o); } ///Creating from factory helper Vertices verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(100, 150); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(-100, -150); this.World.AddObject(o); } ///Creating from factory helper verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///when tap ... SimpleConcreteGestureInputPlayable SimpleConcreteMouseBottomInputPlayable = null; SimpleConcreteMouseBottomInputPlayable = new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Tap, (sample) => { Vector2 wpos = this.World.Camera2D.ConvertScreenToWorld(sample.Position); { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); I2DObject partobj = new I2DObject(fs, mat, model); partobj.PhysicObject.Position = wpos; fs.Body.Friction = StaticRandom.RandomBetween(0, 1); this.World.AddObject(partobj); } } ); this.BindInput(SimpleConcreteMouseBottomInputPlayable); ///the basic ortographic 2D camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); }
/// <summary> /// Called once each frame before the draw phase /// </summary> /// <param name="gt">The gt.</param> /// <param name="mundo">The mundo.</param> /// <param name="obj">The obj.</param> /// <param name="render">The render.</param> public virtual void PreDrawnPhase(GameTime gt, I2DWorld mundo, I2DObject obj, RenderHelper render) { }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, tex); I2DObject o = new I2DObject(fs, mat, model); o.Name = "Goo"; this.World.AddObject(o); } ///rectangle Vertices verts = PolygonTools.CreateRectangle(5, 5); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, verts); I2DObject o = new I2DObject(fs, mat, model); o.Name = "Rectangle"; this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(5, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, circle); I2DObject o = new I2DObject(fs, mat, model); o.Name = "Circle"; this.World.AddObject(o); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); this.BindInput(new SimpleConcreteGestureInputPlayable(Microsoft.Xna.Framework.Input.Touch.GestureType.Tap, (sample) => { I2DPhysicObject obj = this.World.PhysicWorld.Picking(this.World.Camera2D.ConvertScreenToWorld(sample.Position)); if (obj != null) { pickedName = obj.Owner.Name + " " + sample.Position; } else { pickedName = null; } } )); }
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); //add the 2d primitive draw component lines = new Lines(); Primitive2DDraw.Add2DPrimitive(lines); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///Ground 1 Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///Ground 2 verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth, 250); this.World.AddObject(o); } ///Ground 3 verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 2, 250); this.World.AddObject(o); } ///Support verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 100); this.World.AddObject(o); } ///plataform 1 verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.5f, 100); this.World.AddObject(o); } ///plataform 2 verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.6f, 100); this.World.AddObject(o); } ///plataform 3 verts = PolygonTools.CreateRectangle(200, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.55f, -100); this.World.AddObject(o); } ///objective { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(2)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); goo = new I2DObject(fs, mat, model); goo.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.55f, -175); this.World.AddObject(goo); } ///Ball CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); ball = new I2DObject(fs, mat, model); ball.PhysicObject.Position = new Vector2(0, -25); ball.OnUpdate += new PloobsEngine.SceneControl._2DScene.OnUpdate(ball_OnUpdate); this.World.AddObject(ball); } ///the basic ortographic 2D camera Camera2D Camera2D = new Camera2D(GraphicInfo); Camera2D.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.6f, 0); ///teleport to the given position Camera2D.Jump2Target(); this.World.Camera2D = Camera2D; ///go to the desired position but without teleport =P Camera2D.IntertiaController = 0.09f; Camera2D.Position = new Vector2(0, 0); Camera2D.EnablePositionTracking = true; Camera2D.ReachedTheTrackingPosition += new Action <PloobsEngine.SceneControl._2DScene.Camera2D>(Camera2D_ReachedTheTrackingPosition); base.LoadContent(GraphicInfo, factory, contentManager); }
/// <summary> /// Called when an object s removed from the world /// </summary> /// <param name="obj">The obj.</param> public abstract void onObjectRemoved(I2DObject obj);
/// <summary> /// Called when the material is initialized (added to the world) /// </summary> /// <param name="ginfo"></param> /// <param name="factory"></param> /// <param name="obj"></param> public virtual void Initialization(GraphicInfo ginfo, GraphicFactory factory, I2DObject obj) { }
/// <summary> /// Draws /// Called once each frame /// </summary> /// <param name="gt">The gt.</param> /// <param name="obj">The obj.</param> /// <param name="render">The render.</param> public abstract void Draw(GameTime gt, I2DObject obj, RenderHelper render);
/// <summary> /// Called once to load content /// </summary> /// <param name="GraphicInfo"></param> /// <param name="factory"></param> /// <param name="contentManager"></param> protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { ///load background texture tile = factory.GetTexture2D("Textures/tile"); ///recover the physic world reference FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///Ground 1 Vertices verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Red); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 250); this.World.AddObject(o); } ///Ground 2 verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth, 250); this.World.AddObject(o); } ///Ground 3 verts = PolygonTools.CreateRectangle(GraphicInfo.BackBufferWidth, 100); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 2, 250); this.World.AddObject(o); } ///Support verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Yellow); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Static); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(0, 100); this.World.AddObject(o); } ///target 1 verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.5f, 100); this.World.AddObject(o); } ///target 2 verts = PolygonTools.CreateRectangle(50, 200); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.6f, 100); this.World.AddObject(o); } ///target 3 verts = PolygonTools.CreateRectangle(200, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Green); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model, 1, BodyType.Dynamic); I2DObject o = new I2DObject(fs, mat, model); ///the origin of the created object will be in the center of it, this mean: if we draw it, the center of mass of it will be on the midle of the screen ///We need to translate it a bit down o.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.55f, -100); this.World.AddObject(o); } ///objective ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(2)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); goo = new I2DObject(fs, mat, model); goo.PhysicObject.Position = new Vector2(GraphicInfo.BackBufferWidth * 1.55f, -175); this.World.AddObject(goo); } ///Ball CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); ball = new I2DObject(fs, mat, model); ball.PhysicObject.Position = new Vector2(0, -25); ball.OnUpdate += new PloobsEngine.SceneControl._2DScene.OnUpdate(ball_OnUpdate); this.World.AddObject(ball); } SimpleConcreteMouseBottomInputPlayable SimpleConcreteMouseBottomInputPlayable1 = new SimpleConcreteMouseBottomInputPlayable(StateKey.PRESS, EntityType.TOOLS, PloobsEngine.Input.MouseButtons.LeftButton, (sample) => { mousepressed = true; } ); this.BindInput(SimpleConcreteMouseBottomInputPlayable1); SimpleConcreteMouseBottomInputPlayable SimpleConcreteMouseBottomInputPlayable = null; SimpleConcreteMouseBottomInputPlayable = new SimpleConcreteMouseBottomInputPlayable(StateKey.RELEASE, EntityType.TOOLS, PloobsEngine.Input.MouseButtons.LeftButton, (sample) => { mousepressed = false; lines.isEnabled = false; fired = true; Vector2 mpos = new Vector2(Mouse.GetState().X, Mouse.GetState().Y); Vector2 wpos = this.World.Camera2D.ConvertScreenToWorld(mpos); Vector2 force = (ball.PhysicObject.Position - wpos) * 30; ball.PhysicObject.ApplyForce(force); this.RemoveInputBinding(SimpleConcreteMouseBottomInputPlayable); this.RemoveInputBinding(SimpleConcreteMouseBottomInputPlayable1); (this.World.Camera2D as Camera2D).TrackingBody = ball; } ); this.BindInput(SimpleConcreteMouseBottomInputPlayable); ///the basic ortographic 2D camera this.World.Camera2D = new Camera2D(GraphicInfo); base.LoadContent(GraphicInfo, factory, contentManager); Primitive2DDraw.Add2DPrimitive(lines); }
/// <summary> /// Updates. /// Called once each frame /// </summary> /// <param name="gameTime">The game time.</param> /// <param name="obj">The obj.</param> public virtual void Update(GameTime gameTime, I2DObject obj) { }
protected override void LoadContent(PloobsEngine.Engine.GraphicInfo GraphicInfo, PloobsEngine.Engine.GraphicFactory factory, PloobsEngine.SceneControl.IContentManager contentManager) { tile = factory.GetTexture2D("Textures/tile"); FarseerWorld fworld = this.World.PhysicWorld as FarseerWorld; ///border border = new Border(fworld, factory, GraphicInfo, factory.CreateTexture2DColor(1, 1, Color.Red)); ///from texture { Texture2D tex = factory.GetTexture2D("Textures//goo"); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(200, 0); this.World.AddObject(o); } ///from texture, scale usage sample { Texture2D tex = factory.GetTexture2D("Textures//goo"); tex = factory.GetScaledTexture(tex, new Vector2(2)); IModelo2D model = new SpriteFarseer(tex); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.OnHasMoved += new PloobsEngine.SceneControl._2DScene.OnHasMoved(o_OnHasMoved); this.World.AddObject(o); } ///rectangle Vertices verts = PolygonTools.CreateRectangle(50, 50); { IModelo2D model = new SpriteFarseer(factory, verts, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(-200, 0); this.World.AddObject(o); } ///circle CircleShape circle = new CircleShape(50, 1); { IModelo2D model = new SpriteFarseer(factory, circle, Color.Orange); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); FarseerObject fs = new FarseerObject(fworld, model); I2DObject o = new I2DObject(fs, mat, model); o.PhysicObject.Position = new Vector2(200, -100); this.World.AddObject(o); } ///animated sprite { Texture2D tex = factory.GetTexture2D("Textures//DudeSheet"); SpriteAnimated sa = new SpriteAnimated(tex, 8, 2); sa.AddAnimation("ANIM1", 1, 8, 0); sa.AddAnimation("ANIM2", 2, 4, MathHelper.PiOver2); Basic2DTextureMaterial mat = new Basic2DTextureMaterial(); Texture2D frame = factory.GetTexturePart(tex, sa.GetFrameRectangle("ANIM1", 0)); FarseerObject fs = new FarseerObject(fworld, frame); //GhostObject fs = new GhostObject(Vector2.Zero); sheet = new I2DObject(fs, mat, sa); sheet.PhysicObject.Position = new Vector2(500, 0); this.World.AddObject(sheet); } { PointLight2D l = new PointLight2D(new Vector2(-GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Red, 1); this.World.AddLight(l); } { SpotLight2D l = new SpotLight2D(new Vector2(+GraphicInfo.BackBufferWidth / 4, -GraphicInfo.BackBufferWidth / 4), Color.Blue, new Vector2(0, 1), MathHelper.ToRadians(45)); this.World.AddLight(l); } { SimpleConcreteKeyboardInputPlayable sc = new SimpleConcreteKeyboardInputPlayable(StateKey.PRESS, Keys.Space); sc.KeyStateChange += new KeyStateChange(sc_KeyStateChange); this.BindInput(sc); } ///camera this.World.Camera2D = new Camera2D(GraphicInfo); DPFSParticleSystem ps = new DPFSParticleSystem("TESTE", new SpriteParticleSystem(null)); this.World.ParticleManager.AddAndInitializeParticleSystem(ps); ///add a post effect =P //this.RenderTechnic.AddPostEffect(new WigglePostEffect()); ///updateable JointUpdateable ju = new JointUpdateable(this, fworld, this.World.Camera2D); base.LoadContent(GraphicInfo, factory, contentManager); { NeoforceGui guiManager = this.Gui as NeoforceGui; System.Diagnostics.Debug.Assert(guiManager != null); // Create and setup Window control. Window window = new Window(guiManager.Manager); window.Init(); window.Text = "Getting Started"; window.Width = 480; window.Height = 200; window.Center(); window.Visible = true; // Create Button control and set the previous window as its parent. Button button = new Button(guiManager.Manager); button.Init(); button.Text = "OK"; button.Width = 72; button.Height = 24; button.Left = (window.ClientWidth / 2) - (button.Width / 2); button.Top = window.ClientHeight - button.Height - 8; button.Anchor = Anchors.Bottom; button.Parent = window; // Add the window control to the manager processing queue. guiManager.Manager.Add(window); } }