コード例 #1
0
 public static float GetWallHeight(BuildingsTypeEnum type, int level)
 {
     return(BuildingsConstants.wallHeight * Assets.Scripts.Constants.Constants.Scale * level);
 }
コード例 #2
0
        public static void CreateWalls(OsmWay buildingData, OsmBounds bounds, float width, float levels, float height, float minHeight, Transform parent)
        {
            BuildingsTypeEnum type = OSMtoSharp.Enums.Helpers.EnumExtensions.
                                     GetTagKeyEnum <BuildingsTypeEnum>
                                         (buildingData.Tags[TagKeyEnum.Building]);

            string   materiaName;
            Material material = null;

            if (ConfigManager.Instance.Textures)
            {
                if (!buildingData.Tags.ContainsKey(TagKeyEnum.BuildingColor))
                {
                    if (buildingData.Tags.ContainsKey(TagKeyEnum.Shop) || buildingData.Tags.ContainsKey(TagKeyEnum.Shop1) || buildingData.Tags.ContainsKey(TagKeyEnum.Shop2))
                    {
                        materiaName = string.Format("{0}/{1}_{2}",
                                                    Constants.Constants.MaterialsFolderName,
                                                    "shop", new System.Random().Next(BuildingsConstants.firstIndexRandomShop, BuildingsConstants.endIndexRandomShop));
                    }

                    else if (type == BuildingsTypeEnum.House ||
                             type == BuildingsTypeEnum.Apartments ||
                             type == BuildingsTypeEnum.Bungalow ||
                             type == BuildingsTypeEnum.Detached ||
                             type == BuildingsTypeEnum.Greenhouse ||
                             type == BuildingsTypeEnum.Residential
                             )
                    {
                        materiaName = string.Format("{0}/{1}_{2}",
                                                    Constants.Constants.MaterialsFolderName,
                                                    OSMtoSharp.Enums.Helpers.EnumExtensions.GetEnumAttributeValue(TagKeyEnum.Building),
                                                    OSMtoSharp.Enums.Helpers.EnumExtensions.GetEnumAttributeValue(BuildingsTypeEnum.House));
                    }

                    else if (type == BuildingsTypeEnum.Hotel ||
                             type == BuildingsTypeEnum.Commercial
                             )
                    {
                        materiaName = string.Format("{0}/{1}_{2}",
                                                    Constants.Constants.MaterialsFolderName,
                                                    OSMtoSharp.Enums.Helpers.EnumExtensions.GetEnumAttributeValue(TagKeyEnum.Building),
                                                    OSMtoSharp.Enums.Helpers.EnumExtensions.GetEnumAttributeValue(BuildingsTypeEnum.Hotel));
                    }
                    else
                    {
                        materiaName = string.Format("{0}/{1}_{2}",
                                                    Constants.Constants.MaterialsFolderName,
                                                    OSMtoSharp.Enums.Helpers.EnumExtensions.GetEnumAttributeValue(TagKeyEnum.Building),
                                                    new System.Random().Next(BuildingsConstants.firstIndexRandomBuilding, BuildingsConstants.endIndexRandomBuilding));
                    }
                    material = Resources.Load(materiaName, typeof(Material)) as Material;
                }
            }



            for (int i = 1; i < buildingData.Nodes.Count; i++)
            {
                Vector2 pointA = OsmToUnityConverter.GetPointFromUnityPointVec2(buildingData.Nodes[i].Point, bounds);
                Vector2 pointB = OsmToUnityConverter.GetPointFromUnityPointVec2(buildingData.Nodes[i - 1].Point, bounds);

                GameObject wall = CreateWall(new Vector3(pointA.x, minHeight, pointA.y),
                                             new Vector3(pointB.x, minHeight, pointB.y),
                                             width, height, minHeight);


                if (buildingData.Tags.ContainsKey(TagKeyEnum.BuildingColor))
                {
                    var color = buildingData.Tags[TagKeyEnum.BuildingColor].Replace("#", "");
                    SetColor(color, wall.GetComponent <Renderer>().material);
                }
                else
                {
                    if (material != null)
                    {
                        Material mat     = new Material(material);
                        int      tilingX = (int)wall.transform.localScale.z;
                        if (tilingX == 0)
                        {
                            tilingX = 1;
                        }
                        mat.mainTextureScale = new Vector2(tilingX, levels);

                        wall.GetComponent <Renderer>().material = mat;
                    }
                }
                wall.transform.SetParent(parent);
            }
        }