/// <summary> /// Create a Tiled Map loading the XML from a StreamingAssetPath or a HTTP path (in the pc or web) /// </summary> /// <param name="wwwPath">Map's path with http for web files or without streaming assets path for local files</param> /// <param name="parent">This map's gameobject parent</param> /// <param name="baseTileMaterial">Base material to be used for the Tiles</param> /// <param name="sortingOrder">Base sorting order for the tile layers</param> /// <param name="makeUnique">Make unique tiles for all tile layers.</param> /// <param name="onMapFinishedLoading">Callback for when map finishes loading</param> /// <param name="simpleTileObjectCalculation">true to generate simplified tile collisions</param> /// <param name="tileObjectEllipsePrecision">Tile collisions ellipsoide approximation precision</param> /// <param name="clipperArcTolerance">Clipper arc angle tolerance</param> /// <param name="clipperDeltaOffset">Clipper delta offset</param> /// <param name="clipperEndType">Clipper Polygon end type</param> /// <param name="clipperJoinType">Clipper join type</param> /// <param name="clipperMiterLimit">Clipper limit for Miter join type</param> public Map(string wwwPath, GameObject parent, Material baseTileMaterial, int sortingOrder, bool makeUnique, Action<Map> onMapFinishedLoading = null, int tileObjectEllipsePrecision = 16, bool simpleTileObjectCalculation = true, double clipperArcTolerance = 0.25, double clipperMiterLimit = 2.0, ClipperLib.JoinType clipperJoinType = ClipperLib.JoinType.jtRound, ClipperLib.EndType clipperEndType = ClipperLib.EndType.etClosedPolygon, float clipperDeltaOffset = 0) { _tileObjectEllipsePrecision = tileObjectEllipsePrecision; _simpleTileObjectCalculation = simpleTileObjectCalculation; _clipperArcTolerance = clipperArcTolerance; _clipperDeltaOffset = clipperDeltaOffset; _clipperEndType = clipperEndType; _clipperJoinType = clipperJoinType; _clipperMiterLimit = clipperMiterLimit; _mapName = Path.GetFileNameWithoutExtension(wwwPath); _mapExtension = Path.GetExtension(wwwPath); if (string.IsNullOrEmpty(_mapExtension)) _mapExtension = ".tmx"; Parent = parent; DefaultSortingOrder = sortingOrder; GlobalMakeUniqueTiles = makeUnique; BaseTileMaterial = baseTileMaterial; if (!wwwPath.Contains("://")) _mapPath = string.Concat(Application.streamingAssetsPath, Path.AltDirectorySeparatorChar); else { // remove _mapName from wwwPath _mapPath = wwwPath.Replace(string.Concat(_mapName, _mapExtension), ""); } OnMapFinishedLoading = onMapFinishedLoading; new Task(LoadFromPath(wwwPath), true); }
/// <summary> /// Create a Tiled Map using TextAsset as parameter /// </summary> /// <param name="mapText">Map's TextAsset</param> /// <param name="mapPath">Path to XML folder, so we can read relative paths for tilesets</param> /// <param name="parent">This map's gameobject parent</param> /// <param name="baseTileMaterial">Base material to be used for the Tiles</param> /// <param name="sortingOrder">Base sorting order for the tile layers</param> /// <param name="mapPath">Path to XML folder, so we can read relative paths for tilesets</param> /// <param name="makeUnique">array with bools to make unique tiles for each tile layer</param> /// <param name="onMapFinishedLoading">Callback for when map finishes loading</param> /// <param name="simpleTileObjectCalculation">true to generate simplified tile collisions</param> /// <param name="tileObjectEllipsePrecision">Tile collisions ellipsoide approximation precision</param> /// <param name="clipperArcTolerance">Clipper arc angle tolerance</param> /// <param name="clipperDeltaOffset">Clipper delta offset</param> /// <param name="clipperEndType">Clipper Polygon end type</param> /// <param name="clipperJoinType">Clipper join type</param> /// <param name="clipperMiterLimit">Clipper limit for Miter join type</param> public Map(TextAsset mapText, string mapPath, GameObject parent, Material baseTileMaterial, int sortingOrder, bool makeUnique, Action<Map> onMapFinishedLoading = null, int tileObjectEllipsePrecision = 16, bool simpleTileObjectCalculation = true, double clipperArcTolerance = 0.25, double clipperMiterLimit = 2.0, ClipperLib.JoinType clipperJoinType = ClipperLib.JoinType.jtRound, ClipperLib.EndType clipperEndType = ClipperLib.EndType.etClosedPolygon, float clipperDeltaOffset = 0) { _tileObjectEllipsePrecision = tileObjectEllipsePrecision; _simpleTileObjectCalculation = simpleTileObjectCalculation; _clipperArcTolerance = clipperArcTolerance; _clipperDeltaOffset = clipperDeltaOffset; _clipperEndType = clipperEndType; _clipperJoinType = clipperJoinType; _clipperMiterLimit = clipperMiterLimit; NanoXMLDocument document = new NanoXMLDocument(mapText.text); _mapName = mapText.name; Parent = parent; DefaultSortingOrder = sortingOrder; GlobalMakeUniqueTiles = makeUnique; BaseTileMaterial = baseTileMaterial; _mapPath = mapPath; OnMapFinishedLoading = onMapFinishedLoading; Initialize(document); }