public void Iniciar(LayoutCuarto inicial, GeneradorMapaArbol arbol) { this.arbol = arbol; categoria = inicial.categoria; cuartosPropios.Add(inicial); arbol.Add(inicial, this); if (inicial.categoria == LayoutCuarto.Categoria.Peque) { AddRecursivo(inicial.pegadosFiltrados, arbol); } transform.position = Centro + Vector3.forward * transform.position.z; }
void AddRecursivo(List <LayoutCuarto> grupoInput, GeneradorMapaArbol arbol) { foreach (var cuarto in grupoInput) { if (cuarto.categoria == LayoutCuarto.Categoria.Peque) { if (!cuartosPropios.Contains(cuarto)) { cuartosPropios.Add(cuarto); arbol.Add(cuarto, this); AddRecursivo(cuarto.pegadosFiltrados, arbol); } } } }
public static void SceneGUIPorGen(GeneradorMapaArbol gen) { if (!gen.origen) { return; } int controlId = GUIUtility.GetControlID(FocusType.Passive); if (Event.current.type != EventType.MouseDown || Event.current.button != 0) { return; } var mouse = Event.current.mousePosition; var layer = gen.origen ? gen.origen.layerGenerador : 31; foreach (var cuarto in gen.origen.generados) { cuarto.Simulated = true; } foreach (var hit in Physics2D.GetRayIntersectionAll(UnityEditor.HandleUtility.GUIPointToWorldRay(mouse), Mathf.Infinity, 1 << layer)) { if (hit) { var cuarto = hit.collider.GetComponent <LayoutCuarto>(); if (cuarto && gen.arbol.ContainsKey(cuarto)) { GUIUtility.hotControl = controlId; Event.current.Use(); Selection.activeGameObject = gen.arbol[cuarto].gameObject; // DrawNodoHandle(gen.arbol[cuarto],Color.cyan); // foreach(var vecino in gen.arbol[cuarto].vecinos){ // DrawNodoHandle(vecino,Color.yellow,0.99f); // Handles.DrawLine(gen.arbol[cuarto].Centro,vecino.Centro); // } // cuarto.OnDrawGizmosSelected(); break; } } } foreach (var cuarto in gen.origen.generados) { cuarto.Simulated = false; } }