PositionRegionRenderer GetRegionRenderer(int regionX, int regionY) { var rend = regionRenderers.Find(e => e.regionX == regionX && e.regionY == regionY); if (rend == null) { RegionMeshRenderer regionRenderer = CreateRegionRenderer(); regionRenderer.transform.SetParent(containerGO.transform); regionRenderer.transform.localPosition = new Vector2(regionX * Grid.REGION_SIZE, regionY * Grid.REGION_SIZE); rend = new PositionRegionRenderer { regionX = regionX, regionY = regionY, mesh = regionRenderer }; regionRenderers.Add(rend); return(rend); } else { return(rend); } }
public static RegionMeshRenderer Create(int tilePerSide) { GameObject obj = new GameObject("region mesh renderer"); RegionMeshRenderer renderer = obj.AddComponent <RegionMeshRenderer> (); renderer.SetupMesh(tilePerSide); return(renderer); }
RegionMeshRenderer CreateRegionRenderer() { RegionMeshRenderer rend; if (Application.isPlaying) { rend = GridlikePools.renderers.Get(); } else { rend = RegionMeshRenderer.Create(Grid.REGION_SIZE); } if (grid.atlas.material == null) { grid.atlas.RegenerateMaterial(); } rend.SetupRendering(grid.atlas.material, grid.atlas.tilePixelSize, grid.atlas.emptySprite); return(rend); }
void _Initialize() { GameObject rendererContainer = new GameObject("Mesh regions"); rendererContainer.transform.SetParent(gameObject.transform); rendererContainer.transform.localPosition = Vector2.zero; _renderers = new ComponentPool <RegionMeshRenderer> (rendererContainer, 16, () => RegionMeshRenderer.Create(Grid.REGION_SIZE)); }