private TilemapRenderer AddTilemapRendererComponent(GameObject go) { var renderer = go.AddComponent <TilemapRenderer>(); renderer.sortOrder = MapRenderConverter.Tiled2Unity(m_MapComponent.m_RenderOrder); // This is a hack so that Unity does not falsely detect prefab instance differences. // See the SuperMap.Start method where this is put to Auto to make up for this. renderer.detectChunkCullingBounds = TilemapRenderer.DetectChunkCullingBounds.Manual; AssignMaterial(renderer, m_CurrentTileLayer.m_TiledName); AssignTilemapSorting(renderer); #if UNITY_2018_3_OR_NEWER if (m_SortingMode == SortingMode.CustomSortAxis) { renderer.mode = TilemapRenderer.Mode.Individual; } else { renderer.mode = TilemapRenderer.Mode.Chunk; } #endif return(renderer); }
private TilemapRenderer AddTilemapRendererComponent(GameObject go) { var renderer = go.AddComponent <TilemapRenderer>(); renderer.sortOrder = MapRenderConverter.Tiled2Unity(m_MapComponent.m_RenderOrder); #if UNITY_2018_3_OR_NEWER if (m_ImportSorting == ImportSorting.CustomSortAxis) { renderer.mode = TilemapRenderer.Mode.Individual; } else { renderer.mode = TilemapRenderer.Mode.Chunk; } #endif return(renderer); }
private TilemapRenderer AddTilemapRendererComponent(GameObject go) { var renderer = go.AddComponent <TilemapRenderer>(); renderer.sortOrder = MapRenderConverter.Tiled2Unity(m_MapComponent.m_RenderOrder); AssignMaterial(renderer, m_CurrentTileLayer.m_TiledName); AssignTilemapSorting(renderer); #if UNITY_2018_3_OR_NEWER if (m_SortingMode == SortingMode.CustomSortAxis) { renderer.mode = TilemapRenderer.Mode.Individual; } else { renderer.mode = TilemapRenderer.Mode.Chunk; } #endif return(renderer); }
private void ProcessLayerData(GameObject goLayer, XElement xData) { Assert.IsNotNull(goLayer); Assert.IsNotNull(goLayer.GetComponent <SuperTileLayer>()); Assert.IsNotNull(xData); SuperTileLayer superComp = goLayer.GetComponent <SuperTileLayer>(); var chunk = new Chunk(); chunk.Encoding = xData.GetAttributeAs <DataEncoding>("encoding"); chunk.Compression = xData.GetAttributeAs <DataCompression>("compression"); bool tilesAsObjects = m_MapComponent.m_Orientation == MapOrientation.Isometric || m_TilesAsObjects; // Are we reading in data in smaller chunks (for infinite maps) or one big chunk (the full map) var xChunks = xData.Elements("chunk"); if (xChunks.Any()) { foreach (var xChunk in xChunks) { chunk.XmlChunk = xChunk; chunk.X = xChunk.GetAttributeAs <int>("x"); chunk.Y = xChunk.GetAttributeAs <int>("y"); chunk.Width = xChunk.GetAttributeAs <int>("width"); chunk.Height = xChunk.GetAttributeAs <int>("height"); // Each chunk is a separate game object on the super layer GameObject goChunk = new GameObject(string.Format("Chunk ({0},{1})", chunk.X, chunk.Y)); goLayer.AddChildWithUniqueName(goChunk); // Possition the chunk Vector3Int int3 = m_MapComponent.TilePositionToGridPosition(chunk.X, chunk.Y); Vector3 translate = SuperImportContext.MakePoint(int3.x, int3.y); translate.x *= m_MapComponent.CellSize.x; translate.y *= m_MapComponent.CellSize.y; goChunk.transform.localPosition = translate; // Create the tilemap for the layer if needed if (!tilesAsObjects) { var tilemap = goChunk.AddComponent <Tilemap>(); tilemap.tileAnchor = Vector3.zero; tilemap.animationFrameRate = AnimationFramerate; tilemap.color = new Color(1, 1, 1, superComp.CalculateOpacity()); // Create the renderer for the layer var renderer = goChunk.AddComponent <TilemapRenderer>(); renderer.sortOrder = MapRenderConverter.Tiled2Unity(m_MapComponent.m_RenderOrder); AssignSortingLayer(renderer, superComp.m_SortingLayerName, superComp.m_SortingOrder); } ProcessLayerDataChunk(goChunk, chunk); } } else { // Regular maps only have one chunk with the Tilemap and TileRenderer being on the layer object // Add the tilemap components if needed if (!tilesAsObjects) { var tilemap = goLayer.AddComponent <Tilemap>(); tilemap.tileAnchor = Vector3.zero; tilemap.animationFrameRate = AnimationFramerate; tilemap.color = new Color(1, 1, 1, superComp.CalculateOpacity()); // Create the renderer for the layer var renderer = goLayer.AddComponent <TilemapRenderer>(); renderer.sortOrder = MapRenderConverter.Tiled2Unity(m_MapComponent.m_RenderOrder); AssignSortingLayer(renderer, superComp.m_SortingLayerName, superComp.m_SortingOrder); } // For regular maps the 'chunk' is the same as the layer data chunk.XmlChunk = xData; chunk.X = 0; chunk.Y = 0; chunk.Width = m_MapComponent.m_Width; chunk.Height = m_MapComponent.m_Height; ProcessLayerDataChunk(goLayer, chunk); } }