////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Helpers private Transform GetParentTransform(eEditablePrefabs forType) { if (forType == eEditablePrefabs.Brawler || forType == eEditablePrefabs.Scurrier) { EnemyGroup found = currentRoom.gameObject.GetComponentInChildren <EnemyGroup>(); if (found == null) { Debug.Log("Could not find parent for new enemy"); return(null); } return(found.transform); } else { OreVein foundOre = currentRoom.gameObject.GetComponentInChildren <OreVein>(); if (foundOre) { return(foundOre.gameObject.transform.parent); } HealthFruit foundFruit = currentRoom.gameObject.GetComponent <HealthFruit>(); if (foundFruit) { return(foundFruit.gameObject.transform.parent); } Debug.Log("Could not find the parent for new pickup"); return(null); } }
/// ////////////////////////////////////////////////////////////////////////////////////////////////////////////// #region Public Setters public void SetTargetPrefab(eEditablePrefabs target) { if (!Console.IsInEditor || !Console.IsOpen) { return; } currentPrefab = target; }
private GameObject GetPrefabByType(eEditablePrefabs target) { foreach (PrefabType type in PrefabSets) { if (type.Type == target) { return(type.Prefab); } } return(null); }
private void RecordEdit(eEditablePrefabs removedType, Vector3 atPos) { Vector3 zeroedPos = atPos - currentRoom.transform.position; if (placeMode == 1) { RoomEdits[currentRoom].MakeAddition(currentPrefab, zeroedPos); } else { RoomEdits[currentRoom].MakeSubtraction(removedType, zeroedPos); } }
public void EditLevel() { if (!Console.IsInEditor || !Console.IsOpen || currentRoom == null || !isAcitve) { return; } RaycastHit hit; if (!GetRayHit(out hit)) { return; } Vector3 targetPos = -Vector3.zero;//= GetTargetPosition; eEditablePrefabs hitType = eEditablePrefabs.Noone; if (placeMode == 1)//placing an object { targetPos = hit.point; } else //Removing object { if (IsOfType <Scurrier>(hit) || IsOfType <Brawler>(hit)) { //Deactivate the enemy only. Not adde to data hit.transform.gameObject.SetActive(false); return; } else if (IsOfType <HealthFruit>(hit)) { hitType = eEditablePrefabs.HealthFruit; } else if (IsOfType <OreVein>(hit)) { hitType = eEditablePrefabs.OreVein; } else { return; } targetPos = hit.transform.position; } if (targetPos == -Vector3.one) { return; } //Is this the first time to edit this room? if (RoomEdits == null || !RoomEdits.ContainsKey(currentRoom)) { RoomEditData data = new RoomEditData(currentRoom.gameObject.name, basePath, AdditionReferecne, SubtractReference, PrefabSets); data.RootRoatation = currentRoom.transform.rotation; RoomEdits.Add(currentRoom, data); } RecordEdit(hitType, targetPos); if (placeMode == 1) { AddEditToScene(targetPos); } else { RemoveHitFromScene(hit); } }
public void MakeSubtraction(eEditablePrefabs obj, Vector3 atPos) { Subtractions[obj].Add(atPos); }
public void MakeAddition(eEditablePrefabs obj, Vector3 atPos) { Additions[obj].Add(atPos); }