public void LoadRoom(List <ObstructedLocation> obstructedLocation, float wealthLevel) { GameObject wall = GetWall(GetWalls(obstructedLocation), wealthLevel); GameObject door = GetDoor(wealthLevel); int indexRoom = GetRoom(wealthLevel); GameObject room = rooms[indexRoom]; SizeApartment sizeRoom = GetSizeByIndex(indexRoom); int nbDoors = wall.transform.childCount * 4; int choosenDoor = Random.Range(0, nbDoors); GameObject instantiatedWall; GameObject instantiatedDoor; int nbInstalledDoor = 0; for (int i = 0; i < 4; i++) { instantiatedWall = Instantiate(wall, ProceduralManager.ParentMap); instantiatedWall.transform.position = new Vector3(0f, (i + 1) * 7.5f, 0f); foreach (Transform child in instantiatedWall.transform) { instantiatedDoor = Instantiate(door, ProceduralManager.ParentMap); instantiatedDoor.transform.position = child.position; RotateDoorTowardCenter(instantiatedDoor.transform, child); if (nbInstalledDoor == choosenDoor) { LoadRoom(child, room); LoadApartment(wealthLevel, child.position, sizeRoom); instantiatedDoor.tag = "TargetRoomDoor"; instantiatedDoor.isStatic = false; GameManager.Instance().AppartmentTargetDoor(instantiatedDoor); } nbInstalledDoor++; Destroy(child.gameObject); } } }
private void LoadApartment(float wealthValue, Vector3 position, SizeApartment sizeApartment) { GameObject[] rooms; switch (sizeApartment) { case SizeApartment.Small: rooms = smallContent; break; case SizeApartment.Medium: rooms = mediumContent; break; case SizeApartment.Big: rooms = bigContent; break; default: rooms = tinyContent; break; } var roomDict = new Dictionary <GameObject, float>(); foreach (var room in rooms) { roomDict.Add(room, room.GetComponent <ProceduralEntity>().wealthValue); } GameObject temp = Instantiate(ProceduralCalculations.GetRandomTFromPool(roomDict, wealthValue), ProceduralManager.ParentMap); temp.transform.position = position; RotateRoom(temp.transform, position); }
public void OnGUI() { if (settings == null) { settings = AssetDatabase.LoadAssetAtPath <NestedPrefabCategorySettings>(pathToSetting); if (settings == null) { Debug.LogWarning("You need to create the NestedPrefabsCategories to be able to register your nested prefab"); settings = CreateInstance <NestedPrefabCategorySettings>(); AssetDatabase.CreateAsset(settings, pathToSetting); AssetDatabase.SaveAssets(); } } if (onFirstOnGUI) { GetModelType(); onFirstOnGUI = false; } EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); GUILayout.Label("Catégorie :"); EditorGUI.indentLevel++; if (EditorGUILayout.Toggle("Shop", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop)) { if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Shop) { selectedNestedPrefabCategory = settings.shopNestPrefab; GetModelType(); } } if (EditorGUILayout.Toggle("Mall", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Mall)) { if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Mall) { selectedNestedPrefabCategory = settings.mallNestPrefab; GetModelType(); } } if (EditorGUILayout.Toggle("Apartment", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment)) { if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Apartment) { selectedNestedPrefabCategory = settings.apartmentNestPrefab; GetModelType(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.EndVertical(); if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop) { GUILayout.Label("Wealth :"); EditorGUI.indentLevel++; if (EditorGUILayout.Toggle("Poor", selectedWealthLevelShop == WealthLevelShop.Poor)) { if (selectedWealthLevelShop != WealthLevelShop.Poor) { selectedWealthLevelShop = WealthLevelShop.Poor; GetModelType(); } } if (EditorGUILayout.Toggle("Normal", selectedWealthLevelShop == WealthLevelShop.Normal)) { if (selectedWealthLevelShop != WealthLevelShop.Normal) { selectedWealthLevelShop = WealthLevelShop.Normal; GetModelType(); } } if (EditorGUILayout.Toggle("Rich", selectedWealthLevelShop == WealthLevelShop.Rich)) { if (selectedWealthLevelShop != WealthLevelShop.Rich) { selectedWealthLevelShop = WealthLevelShop.Rich; GetModelType(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); GUILayout.Label("Size :"); EditorGUI.indentLevel++; if (EditorGUILayout.Toggle("Small", selectedSizeShop == SizeShop.Small)) { if (selectedSizeShop != SizeShop.Small) { selectedSizeShop = SizeShop.Small; GetModelType(); } } if (EditorGUILayout.Toggle("Big", selectedSizeShop == SizeShop.Big)) { if (selectedSizeShop != SizeShop.Big) { selectedSizeShop = SizeShop.Big; GetModelType(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); } else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment) { GUILayout.Label("Size :"); EditorGUI.indentLevel++; if (EditorGUILayout.Toggle("Tiny", seletectedSizeApartment == SizeApartment.Tiny)) { if (seletectedSizeApartment != SizeApartment.Tiny) { seletectedSizeApartment = SizeApartment.Tiny; GetModelType(); } } if (EditorGUILayout.Toggle("Small", seletectedSizeApartment == SizeApartment.Small)) { if (seletectedSizeApartment != SizeApartment.Small) { seletectedSizeApartment = SizeApartment.Small; GetModelType(); } } if (EditorGUILayout.Toggle("Normal", seletectedSizeApartment == SizeApartment.Medium)) { if (seletectedSizeApartment != SizeApartment.Medium) { seletectedSizeApartment = SizeApartment.Medium; GetModelType(); } } if (EditorGUILayout.Toggle("Big", seletectedSizeApartment == SizeApartment.Big)) { if (seletectedSizeApartment != SizeApartment.Big) { seletectedSizeApartment = SizeApartment.Big; GetModelType(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); } if (EditorGUILayout.Toggle("Center", centerNewObject)) { if (!centerNewObject) { centerNewObject = !centerNewObject; } } else { if (centerNewObject) { centerNewObject = !centerNewObject; } } if (settings.shopNestPrefab.categoryNameNested == settings.mallNestPrefab.categoryNameNested && settings.mallNestPrefab.categoryNameNested == settings.apartmentNestPrefab.categoryNameNested && settings.apartmentNestPrefab.categoryNameNested == settings.shopNestPrefab.categoryNameNested) { GUILayout.Label("Please fill correctly NestedPrefabCategorySettings in the Editor Folder"); } else { if (GUILayout.Button("Create prefab") && AskCreatePrefab()) { foreach (Transform child in prefabParent.transform) { RecursivelyRemoveProceduralEntitiesChildren(child.gameObject); } string localPath = selectedNestedPrefabCategory.pathFolder; if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop) { localPath += selectedWealthLevelShop + "/" + selectedSizeShop + "/"; } else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment) { localPath += seletectedSizeApartment + "/"; } else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Mall) { localPath += "Mall/"; } if (!Directory.Exists(localPath)) { Directory.CreateDirectory(localPath); } localPath += prefabParent.name + ".prefab"; localPath = AssetDatabase.GenerateUniqueAssetPath(localPath); PrefabUtility.SaveAsPrefabAssetAndConnect(prefabParent, localPath, InteractionMode.AutomatedAction); GetModelType(); Debug.Log("Nested prefab created"); } } }