public static float GetWallHeight(BuildingsTypeEnum type, int level) { return(BuildingsConstants.wallHeight * Assets.Scripts.Constants.Constants.Scale * level); }
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); } }