private void CreateContactableDecoration(string texName,
            float x, float y, float z,
            float w, float h,
            float transX = 0.5f, float transY = 0.5f,
            string unitType = UnitType.Static,
            float scaleX = 1.0f, float scaleY = 1.0f)
        {
            var def = new DrawUnitDef();
            def.TexName = texName;
            def.X = x;
            def.Y = y;
            def.Z = z;
            def.UnitType = unitType;
            def.TransformOrigin = new Vector2(transX, transY);
            DrawUnit unit = _world.CreateRectangle(def, w, h);
            Texture2D tex = unit.Sprite.Texture;
            unit.Sprite.DrawRectangle = new Rectangle(0, 0, tex.Width, tex.Height);
            unit.Group = Group.Destructable;

            Root.Add(unit.Sprite);
        }
Exemplo n.º 2
0
        public DrawUnit CreateUnit(DrawUnitDef def)
        {
            var bodydef = new BodyDef();
            bodydef.type = def.BodyType;
            bodydef.angle = def.RotateZ;
            bodydef.fixedRotation = def.FixedRotation;
            bodydef.position.X = B2Value(def.X);
            bodydef.position.Y = B2Value(def.Y);
            Body body = _world.CreateBody(bodydef);

            var tex = XNADevicesManager.Instance.ContentManager.Load<Texture2D>(def.TexName);
            Sprite sprite;
            if (def.RepeatX != 0.0f || def.RepeatY != 0.0f)
            {
                var rSprite = new RepeatSprite(tex);
                if (def.RepeatX != 0.0f)
                {
                    rSprite.RepeatX = def.RepeatX;
                }
                if (def.RepeatY != 0.0f)
                {
                    rSprite.RepeatY = def.RepeatY;
                }
                sprite = rSprite;
            }
            else
            {
                sprite = new Sprite(tex);
                sprite.DrawRectangle = def.DrawRectangle;
            }
            sprite.Alpha = def.Alpha;
            sprite.ScaleX = def.ScaleX;
            sprite.ScaleY = def.ScaleY;
            sprite.RotateX = def.RotateX;
            sprite.RotateY = def.RotateY;
            sprite.RotateZ = def.RotateZ;
            sprite.R = def.R;
            sprite.G = def.G;
            sprite.B = def.B;
            sprite.X = def.X;
            sprite.Y = def.Y;
            sprite.Z = def.Z;
            sprite.TransformOrigin = def.TransformOrigin;
            sprite.ZWriteEnable = def.ZWriteEnable;
            var unit = new DrawUnit(sprite, body, this);
            unit.Group = def.Group;
            body.SetUserData(unit);
            return unit;
        }
Exemplo n.º 3
0
 public DrawUnit CreatePolygon(DrawUnitDef def, Vector2[] verteces)
 {
     DrawUnit unit = CreateUnit(def);
     unit.AttachPolygon(verteces, def.Density, def.Fraction, def.Restitution);
     return unit;
 }
Exemplo n.º 4
0
 public DrawUnit CreateRectangle(DrawUnitDef def, float width, float height)
 {
     DrawUnit unit = CreateUnit(def);
     unit.AttachRectangle(width, height, def.Density, def.Fraction, def.Restitution);
     return unit;
 }
Exemplo n.º 5
0
 public DrawUnit CreateCircle(DrawUnitDef def, float radius)
 {
     DrawUnit unit = CreateUnit(def);
     unit.AttachCircle(radius, def.Density, def.Fraction, def.Restitution);
     return unit;
 }