public static GOFeatureKind MapzenToKind(string kind)
 {
     try {
         GOFeatureKind parsed_enum = (GOFeatureKind)System.Enum.Parse(typeof(GOFeatureKind), kind);
         return(parsed_enum);
     } catch {
         return(GOFeatureKind.baseKind);
     }
 }
 public void GrowTrees(Mesh mesh, GOLayer layer, GOFeatureKind kind, Vector3 center)
 {
     if (kind == GOFeatureKind.park || kind == GOFeatureKind.garden)
     {
         var randomRotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
         int n = Random.Range(0, treePrefab.Length);
         center.y = treePrefab [n].transform.position.y;
         GameObject obj = (GameObject)Instantiate(treePrefab[n], center, randomRotation);
         obj.transform.parent = transform;
     }
 }
        public void AddBoats(Mesh mesh, GOLayer layer, GOFeatureKind kind, Vector3 center)
        {
            bool spawn = Random.value > 0.5f;

            if (kind != GOFeatureKind.riverbank && kind != GOFeatureKind.water && spawn)
            {
                var randomRotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
                center.y = 2;
                GameObject obj = (GameObject)Instantiate(boatPrefab, center, randomRotation);
                obj.transform.parent = transform;
            }
        }
예제 #4
0
        public static GOFeatureKind MapboxToKind(string kind)
        {
//			Debug.Log (kind);

            if (kind == null)
            {
                return(GOFeatureKind.baseKind);
            }

            //This is very empiric. looking forward to a more complete system

            if (kind.Contains("motorway"))
            {
                return(GOFeatureKind.highway);
            }
            else if (kind == "service" || kind == "secondary" || kind == "street" || kind == "tertiary" || kind == "transit" || kind == "minor")
            {
                return(GOFeatureKind.minor_road);
            }
            else if (kind == "rail" || kind.Contains("rail"))
            {
                return(GOFeatureKind.rail);
            }
            else if (kind == "primary")
            {
                return(GOFeatureKind.major_road);
            }
            else if (kind == "track")
            {
                return(GOFeatureKind.path);
            }
            else if (kind == "sand")
            {
                return(GOFeatureKind.beach);
            }
            else if (kind == "building:part")
            {
                return(GOFeatureKind.building_part);
            }


            try {
                GOFeatureKind parsed_enum = (GOFeatureKind)System.Enum.Parse(typeof(GOFeatureKind), kind);
                return(parsed_enum);
            } catch {
                //Debug.Log(kind);
                return(GOFeatureKind.baseKind);
            }
        }
        public GOFeature(GOFeature f)
        {
            name          = f.name;
            index         = f.index;
            goFeatureType = f.goFeatureType;
            properties    = f.properties;
            attributes    = f.attributes;
            layer         = f.layer;


            //After editing the feature in tile subclasses.

            //		public string kind;
            kind             = f.kind;
            renderingOptions = f.renderingOptions;
            detail           = f.detail;
            sort             = f.sort;
            y      = f.y;
            height = f.height;
            index  = f.index;
        }
        public void GrowTrees(Mesh mesh, GOLayer layer, GOFeatureKind kind, Vector3 center)
        {
            //return ;
            // || kind == GOFeatureKind.recreation_ground | kind == GOFeatureKind.attraction || kind == GOFeatureKind.grass
            if (kind == GOFeatureKind.parking || kind == GOFeatureKind.park || kind == GOFeatureKind.garden || kind == GOFeatureKind.recreation_ground | kind == GOFeatureKind.attraction)
            {
                List <Vector3> treePoslist = new List <Vector3>();
                Vector3[]      mv          = mesh.vertices;
                if (mv.Length > 0)
                {
                    for (int i = 0; i < mv.Length - 1; i++)
                    {
                        float d = Vector3.Distance(mv[i], mv[i + 1]);

                        if (d > treeDistance)
                        {
                            for (int j = 0; j < (int)(d / treeDistance); j++)
                            {
                                //Debug.Log(j/(d / treeDistance));
                                treePoslist.Add(Vector3.Lerp(mv[i], mv[i + 1], j / (d / treeDistance)));
                            }
                        }
                    }
                    for (int i = 0; i < treePoslist.Count; i++)
                    {
                        var item           = treePoslist[i];
                        var randomRotation = Quaternion.Euler(0, Random.Range(0, 360), 0);
                        int n = Random.Range(0, treePrefab.Length);
                        var p = new Vector3(item.x, treePrefab[n].transform.position.y * Global.tilesizeRank, item.z);
                        center.y = treePrefab[n].transform.position.y * Global.tilesizeRank;
                        p        = Vector3.Lerp(p, center, Random.Range(0.2f, 0.8f));
                        GameObject obj = (GameObject)Instantiate(treePrefab[n], p, randomRotation);
                        obj.transform.localScale = new Vector3(Global.tilesizeRank, Global.tilesizeRank, Global.tilesizeRank);
                        obj.transform.parent     = transform;
                        obj.name = "tree" + i;
                    }
                }
            }
        }