예제 #1
0
        public void OnBreakableHit(BreakableBody body)
        {
            // Body.Restitution = 0;
            // Body.LinearVelocity *= 0;// new Vector2(0, Body.LinearVelocity.Y);

            return;

            if (Body.LinearVelocity.Length() > 3.0f)
            {
                Vector2 vel = Body.LinearVelocity;
                vel.Normalize();
                vel *= 3.0f;
                Body.LinearVelocity = vel;
            }
        }
예제 #2
0
        public void AfterBreakableHit(BreakableBody body)
        {
            // Body.Restitution = 0;
            // Body.LinearVelocity *= 0;// new Vector2(0, Body.LinearVelocity.Y);

            if (Body == null)
            {
                return;
            }
            if (Body.LinearVelocity.Length() > 3.0f)
            {
                Vector2 vel = Body.LinearVelocity;
                vel.Normalize();
                vel *= 3.0f;
                Body.LinearVelocity = vel;
            }
        }
예제 #3
0
        public void LoadBreakableBody(XElement elements)
        {
            List <Sprite>   sprites = CreateSprites(elements);
            List <JabActor> bodies  = new List <JabActor>();

            for (int i = 0; i < sprites.Count; i++)
            {
                sprites[i].Width  = 20;
                sprites[i].Height = 100;

                JabActor act = World.CreateBox(sprites[i].Dimension * sprites[i].Scale, sprites[i].Position, JabActor.BodyType.DYNAMIC);
                act.Rot = sprites[i].Rot;
                bodies.Add(act);
            }
            // LoadBreakableBodies(elements);



            for (int i = 0; i < sprites.Count; i++)
            {
                string        name = (sprites[i]).CurrentFrame;
                BreakableBody s    = null;

                if (name == "wood")
                {
                    s = new BreakableBody(BreakableBody.BodyMaterial.WOOD, this);
                }
                else if (name == "cement")
                {
                    s = new BreakableBody(BreakableBody.BodyMaterial.CONCRETE, this);
                }
                else if (name == "glass")
                {
                    s = new BreakableBody(BreakableBody.BodyMaterial.GLASS, this);
                }



                s.World  = World;
                s.Body   = bodies[i];
                s.Sprite = sprites[i];
                s.Initialize(Content);

                AddNode(s);
            }
        }
예제 #4
0
 public void OnBreakableDestroyed(BreakableBody body)
 {/*
   * if (body.Material == BreakableBody.BodyMaterial.GLASS)
   * {
   *     Body.LinearVelocity *= 0.8f;
   * }
   * else
   *     Body.LinearVelocity *= 0.2f;*/
     if (Body == null)
     {
         return;
     }
     if (Body.LinearVelocity.Length() > 5.0f)
     {
         Vector2 vel   = Body.LinearVelocity;
         float   speed = Body.LinearVelocity.Length();
         speed *= 0.7f;
         vel.Normalize();
         Body.LinearVelocity = vel * speed;
     }
 }
예제 #5
0
        public void LoadBreakableBody(XElement elements)
        {
            List<Sprite> sprites = CreateSprites(elements);
            List<JabActor> bodies = new List<JabActor>();
            for (int i = 0; i < sprites.Count; i++)
            {
                sprites[i].Width = 20;
                sprites[i].Height = 100;

                JabActor act = World.CreateBox(sprites[i].Dimension * sprites[i].Scale, sprites[i].Position, JabActor.BodyType.DYNAMIC);
                act.Rot = sprites[i].Rot;
                bodies.Add(act);
            }
            // LoadBreakableBodies(elements);

            for (int i = 0; i < sprites.Count; i++)
            {
                string name = (sprites[i]).CurrentFrame;
                BreakableBody s = null;

                if (name == "wood")
                    s = new BreakableBody(BreakableBody.BodyMaterial.WOOD, this);
                else if (name == "cement")
                    s = new BreakableBody(BreakableBody.BodyMaterial.CONCRETE, this);
                else if (name == "glass")
                    s = new BreakableBody(BreakableBody.BodyMaterial.GLASS, this);

                s.World = World;
                s.Body = bodies[i];
                s.Sprite = sprites[i];
                s.Initialize(Content);

                AddNode(s);
            }
        }
예제 #6
0
        public void OnBreakableDestroyed(BreakableBody body)
        {
            /*
            if (body.Material == BreakableBody.BodyMaterial.GLASS)
            {
                Body.LinearVelocity *= 0.8f;
            }
            else
                Body.LinearVelocity *= 0.2f;*/

            if (Body == null)
            {
                return;
            }
            if (Body.LinearVelocity.Length() > 5.0f)
            {
                Vector2 vel = Body.LinearVelocity;
                float speed = Body.LinearVelocity.Length();
                speed *= 0.7f;
                vel.Normalize();
                Body.LinearVelocity = vel * speed;
            }
        }
예제 #7
0
 public Splinter(BreakableBody.BodyMaterial material)
     : base("break")
 {
     bodyMaterial = material;
 }
예제 #8
0
        bool HitSoundPlaying(BreakableBody.BodyMaterial material)
        {
            for (int i = 0; i < hitSounds.Count; i++)
            {
                if (hitSounds[i].material == material)
                {
                    return true;
                }
            }

            return false;
        }
예제 #9
0
 public BreakableHit(BreakableBody.BodyMaterial sender)
     : base(sender)
 {
 }
예제 #10
0
 public BreakableDestroyed(BreakableBody.BodyMaterial sender)
 {
     Broken = sender;
 }