Exemplo n.º 1
0
        public virtual IEnumerator CreateLine(GOTile tile, bool delayedLoad)
        {
            GORenderingOptions renderingOptions = GetRenderingOptions();

            if (renderingOptions.lineWidth == 0)
            {
                yield break;
            }

            GOFeatureMeshBuilder builder = new GOFeatureMeshBuilder(this);

            featureCenter = builder.center;
            GameObject line = null;

            if (preloadedMeshData != null)
            {
                line = builder.BuildLineFromPreloaded(this, tile.map, parent);
            }

            if (line == null)
            {
                yield break;
            }

            line.name = name != null? name:kind.ToString();

            //Layer mask
            if (layer.useLayerMask == true)
            {
                tile.AddObjectToLayerMask(layer, line);
            }

            if (goTile.addGoFeatureComponents)
            {
                GOFeatureBehaviour fb = line.AddComponent <GOFeatureBehaviour> ();
                fb.goFeature = this;
            }

            //Mapzen Streetnames
            if (goTile.mapType == GOMap.GOMapType.Mapzen_Legacy && layer.layerType == GOLayer.GOLayerType.Roads && name != null && name.Length > 0 && goTile.useStreetnames && !isLoop && !goTile.useElevation)
            {
                GOStreetName streetName = GameObject.Instantiate(goTile.streetnamePrototype, line.transform).GetComponent <GOStreetName>();
                streetName.gameObject.name = name + "_streetname";
                yield return(tile.StartCoroutine(streetName.Build(name, this)));
            }

            if (layer.OnFeatureLoad != null)
            {
                layer.OnFeatureLoad.Invoke(this, line);
            }

            if (delayedLoad)
            {
                yield return(null);
            }
        }
        public virtual IEnumerator CreateLine(GOTile tile, bool delayedLoad)
        {
            GORenderingOptions renderingOptions = GetRenderingOptions();

            if (renderingOptions.lineWidth == 0)
            {
                yield break;
            }

            GameObject line = new GameObject(name != null? name:kind.ToString());

            line.transform.parent = parent.transform;

            //Layer mask
            if (layer.useLayerMask == true)
            {
                tile.AddObjectToLayerMask(layer, line);
            }

            GOFeatureMeshBuilder builder = new GOFeatureMeshBuilder(this);

            if (preloadedMeshData != null)
            {
                builder.BuildLineFromPreloaded(line, this, tile.map);
            }
            else if (tile.map.mapType == GOMap.GOMapType.MapzenJson)
            {
                builder.BuildLine(line, layer, renderingOptions, tile.map);
            }

            GOFeatureBehaviour fb = line.AddComponent <GOFeatureBehaviour> ();

            fb.goFeature = this;

            if (layer.layerType == GOLayer.GOLayerType.Roads && name != null && name.Length > 0 && renderingOptions.useStreetNames)
            {
                GOStreetName streetName = new GameObject().AddComponent <GOStreetName> ();
                streetName.gameObject.name = "";
                streetName.transform.SetParent(line.transform);
                yield return(tile.StartCoroutine(streetName.Build(name, tile.map.textShader, tile.map.streetnameColor)));
            }

            if (layer.OnFeatureLoad != null)
            {
                layer.OnFeatureLoad.Invoke(builder.mesh, layer, kind, builder.center);
            }

            if (delayedLoad)
            {
                yield return(null);
            }
        }
Exemplo n.º 3
0
        IEnumerator CreateLabel(GOTile tile, bool delayedLoad)
        {
            GameObject label = GameObject.Instantiate(goTile.streetnamePrototype);

            //Mapzen Streetnames
            if (name != null && name.Length > 0 && !goTile.useElevation)
            {
                GOStreetName streetName = label.GetComponent <GOStreetName>();
                streetName.gameObject.name = name + "_streetname";
                yield return(tile.StartCoroutine(streetName.Build(name, this)));
            }

            if (label == null)
            {
                yield break;
            }

            Vector3 pos = label.transform.position;

            pos.y = y;
            label.transform.position = pos;
            label.transform.SetParent(parent.transform);

            //Layer mask
            if (labelsLayer.useLayerMask == true)
            {
                tile.AddObjectToLayerMask(layer, label);
            }

            if (goTile.addGoFeatureComponents)
            {
                GOFeatureBehaviour fb = label.AddComponent <GOFeatureBehaviour> ();
                fb.goFeature = this;
            }

            if (labelsLayer.OnLabelLoad != null)
            {
                labelsLayer.OnLabelLoad.Invoke(this, label);
            }

            if (delayedLoad)
            {
                yield return(null);
            }
        }
Exemplo n.º 4
0
        public IEnumerator createTileWithPreloadedData(Vector2 tileCoords, int Zoom, bool delayedLoad, object mapData)
        {
                        #if GOLINK
            switch (goTerrain.goTerrainOptions.vectorAPI)
            {
            case  GOTerrainOptions.VectorAPI.MapzenJSON:
                mapType = GOMapType.MapzenJson;
                break;

            case  GOTerrainOptions.VectorAPI.Mapzen:
                mapType = GOMapType.Mapzen;
                break;

            case  GOTerrainOptions.VectorAPI.Mapbox:
                mapType = GOMapType.Mapbox;
                break;
            }
                        #endif

            if (!isSmartTileAlreadyCreated(tileCoords, zoomLevel))
            {
                GOTile goTile = createSmartTileObject(tileCoords, zoomLevel);
                goTile.tileCoordinates = tileCoords;
                goTile.tileCenter      = new Coordinates(tileCoords, zoomLevel);
                goTile.diagonalLenght  = goTile.tileCenter.diagonalLenght(zoomLevel);
                goTile.gameObject.transform.position = goTile.tileCenter.convertCoordinateToVector();
                goTile.mapData = mapData;
                goTile.map     = this;

                if (tileBackground != null)
                {
                    CreateTileBackground(goTile);
                }

                if (OnTileLoad != null)
                {
                    OnTileLoad.Invoke(goTile);
                }

                yield return(goTile.StartCoroutine(goTile.ParseTileData(this, goTile.tileCenter, Zoom, layers, delayedLoad, layerNames())));
            }
            yield return(null);
        }
Exemplo n.º 5
0
        public virtual IEnumerator CreateLine(GOTile tile, bool delayedLoad)
        {
            //if ()
            //GORenderingOptions renderingOptions = GetRenderingOptions();
            float          lineWidth;
            int            unityLayer;
            GOFeatureEvent goFeatureEvent;

            if (layer != null)
            {
                lineWidth      = renderingOptions.lineWidth;
                unityLayer     = layer.unityLayer;
                goFeatureEvent = layer.OnFeatureLoad;
            }
            else
            {
                lineWidth      = tileSetLineRendering.witdh;
                unityLayer     = tilesetLayer.unityLayer;
                goFeatureEvent = tilesetLayer.OnFeatureLoad;
            }


            if (lineWidth == 0)
            {
                yield break;
            }

            GOFeatureMeshBuilder builder = new GOFeatureMeshBuilder(this);

            featureCenter = builder.center;
            GameObject line = null;

            if (preloadedMeshData != null)
            {
                line = builder.BuildLineFromPreloaded(this, tile.map, parent);
            }

            if (line == null)
            {
                yield break;
            }

            line.name = name != null ? name : kind.ToString();

            //Layer mask
            line.layer = unityLayer;

            if (goTile.addGoFeatureComponents)
            {
                GOFeatureBehaviour fb = line.AddComponent <GOFeatureBehaviour>();
                fb.goFeature = this;
            }

            //Mapzen Streetnames
            if ((goTile.mapType == GOMap.GOMapType.Nextzen || goTile.mapType == GOMap.GOMapType.Mapbox) && layer != null && layer.layerType == GOLayer.GOLayerType.Roads && name != null && name.Length > 0 && goTile.useStreetnames && !isLoop && !goTile.useElevation)
            {
                GOStreetName streetName = GameObject.Instantiate(goTile.streetnamePrototype, line.transform).GetComponent <GOStreetName>();
                streetName.gameObject.name = name + "_streetname";
                yield return(tile.StartCoroutine(streetName.Build(name, this)));
            }

            if (goFeatureEvent != null)
            {
                goFeatureEvent.Invoke(this, line);
            }

            if (delayedLoad)
            {
                yield return(null);
            }
        }