private static void setCollision(Entity obj, BoxCol collider) { BoxCollision col = obj.GetComponent <BoxCollision>(); //col.Position = new Vector(collider.Rectangle.X / (float)tilemap.TileWidth, collider.Rectangle.Y / (float)tilemap.TileHeight); //col.Scale = new Vector(collider.Rectangle.Width / (float)tilemap.TileWidth, collider.Rectangle.Height / (float)tilemap.TileHeight); //col.TriggerOnly = collider.TriggerOnly; }
public static bool CreateObjectFromTileSet(string name, string tileset, Vector position, Vector scale, float layer, out MapObject mapObject, out MapObjectCollision mapObjectCol) { Tileset tilesetContent = Content.Load <Tileset>("Tilesets\\" + tileset); mapObject = null; mapObjectCol = null; foreach (Tile tile in tilesetContent.tiles) { if (tile.Properties.ContainsKey("Name") && tile.Properties["Name"] == name) { // Add light if (tile.Properties.ContainsKey("IsLight") && tile.Properties["IsLight"] == "true") { MapLight maplight = SceneManager.GetCurrentScene().CreateEntity <MapLight>(); Light light = maplight.GetComponent <Light>(); light.Position = position + (scale / 2); } // Add collision object if (tile.BoxColliders.Count > 0) { mapObjectCol = SceneManager.GetCurrentScene().CreateEntity <MapObjectCollision>(); mapObjectCol.GetComponent <Componets.Transform>().Position = position; mapObjectCol.GetComponent <Componets.Transform>().Scale = scale; mapObjectCol.GetComponent <Sprite>().ContentName = tileset; mapObjectCol.GetComponent <Sprite>().SpriteLocation = tile.Source; mapObjectCol.GetComponent <Sprite>().Layer = layer; BoxCol collider = tile.BoxColliders.First().Value[0]; BoxCollision col = mapObjectCol.GetComponent <BoxCollision>(); BoxData box = new BoxData(); box.Position = new Vector(collider.Rectangle.X / (float)tile.Width, collider.Rectangle.Y / (float)tile.Height); box.Scale = new Vector(collider.Rectangle.Width / (float)tile.Width, collider.Rectangle.Height / (float)tile.Height); box.TriggerOnly = collider.TriggerOnly; IBox ibox = col.World.Create(position.X + box.Position.X * scale.X, position.Y + box.Position.Y * scale.Y, box.Scale.X * scale.X, box.Scale.Y * scale.Y); ibox.Data = box; col.Boxes.Add(ibox); return(true); } // Add object else { mapObject = SceneManager.GetCurrentScene().CreateEntity <MapObject>(); mapObject.GetComponent <Componets.Transform>().Position = position; mapObject.GetComponent <Componets.Transform>().Scale = scale; mapObject.GetComponent <Sprite>().ContentName = tileset; mapObject.GetComponent <Sprite>().SpriteLocation = tile.Source; mapObject.GetComponent <Sprite>().Layer = layer; return(true); } } } return(false); }