void ModoTerreno(ModoEdicion modoEdicion, int capa) { bool mouseClickIzq = Input.GetMouseButtonDown(0); bool mouseClickIzqConst = Input.GetMouseButton(0); bool mouseClickDer = Input.GetMouseButtonDown(1); bool mouseClickDerConst = Input.GetMouseButton(1); if (modoEdicion == ModoEdicion.Crear) { Vector3Int pos = AdministradorMundos.MundoActual().ObtenerPosicionIsometrica(capa); if (mouseClickIzqConst) { /// AdministradorRecursos.Instanciar().CrearRecurso(1, new Unity.Mathematics.float3(pos.x, 1.8f, pos.z)); AdministradorMundos.MundoActual().AgregarVoxelTerreno(2, pos); } } if (modoEdicion == ModoEdicion.Eliminar) { //Debug.Log("Modo Eliminar"); } if (modoEdicion == ModoEdicion.Seleccion) { // Debug.Log("Modo Seleccion"); } }
void ModoRecursos(ModoEdicion modoEdicion, int capa, int idActual, int posicionValida, Vector3Int posicionTile) { bool mouseClickIzq = Input.GetMouseButtonDown(0); bool mouseClickIzqConst = Input.GetMouseButton(0); bool mouseClickDer = Input.GetMouseButtonDown(1); bool mouseClickDerConst = Input.GetMouseButton(1); if (modoEdicion == ModoEdicion.Crear) { if (HasSingleton <AzulejoPreviewComponent>()) { AzulejoPreviewComponent pre = GetSingleton <AzulejoPreviewComponent>(); if (mouseClickIzqConst && posicionValida == 1) { AdministradorMundos.MundoActual().AgregarRecurso(idActual, pre.posicionAzulejo, pre.posicionInicial, pre.posicionFinal); // AdministradorRecursos.Instanciar().CrearRecurso(1, new Unity.Mathematics.float3(pos.x-1, pos.y+1.0f, pos.z-1)); } } } if (modoEdicion == ModoEdicion.Eliminar) { if (mouseClickIzqConst && posicionValida == 1) { AdministradorMundos.MundoActual().removerRecurso(posicionTile); } } if (modoEdicion == ModoEdicion.Seleccion) { // Debug.Log("Modo Seleccion"); } }
public static AdministradorMundos Instanciar() { if (instancia == null) { instancia = new AdministradorMundos(); } return(instancia); }
protected override void OnStartRunning() { AdministradorMundos admin; admin = AdministradorMundos.Instanciar(); admin.CrearNuevoMundo("Mundo1", 250, 10, 250, 1); admin.SetearMundoActual("Mundo1"); Object prefab = AssetDatabase.LoadAssetAtPath("Assets/JoinCatCode/Core/Prefabs/GridLimite.prefab", typeof(GameObject)); gridPrevioGameObject = GameObject.Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject; }
protected override void OnDestroy() { AdministradorMundos.MundoActual().Liberar(); }
protected override void OnUpdate() { // Assign values to local variables captured in your job here, so that it has // everything it needs to do its work when it runs later. // For example, // float deltaTime = Time.DeltaTime; // This declares a new kind of job, which is a unit of work to do. // The job is declared as an Entities.ForEach with the target components as parameters, // meaning it will process all entities in the world that have both // Translation and Rotation components. Change it to process the component // types you want. Entities.ForEach((ref EdicionModoActualData modo) => { ModoEdicion modoEdicion = modo.modoEdicion; TipoEdicion tipoEdicion = modo.tipoEdicion; int idAnterior = modo.idAnterior; capa = modo.capaActual; int idAzulejo = modo.idActual; modo.posicionValida = 0; Vector3Int pos = AdministradorMundos.MundoActual().ObtenerPosicionIsometrica(capa); if (pos.x > 0 && pos.z > 0) { Vector3 posPreview = new Vector3(0, capa - 0.48f, 0); if (modoEdicion == ModoEdicion.Crear) { if (tipoEdicion == TipoEdicion.Recursos && idAnterior != idAzulejo) { modo.idAnterior = idAzulejo; Entity entidadPreview = AdministradorRecursos.Instanciar().CrearRecurso(idAzulejo, new Unity.Mathematics.float3(0, 0, 0)); EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager; entityManager.SetName(entidadPreview, "AzulejoPreview"); Rotation rotation = new Rotation { Value = quaternion.Euler(0, 45, 0) }; Translation translation = new Translation { Value = new float3(0, 0, 0) }; entityManager.AddComponent <AzulejoPreviewComponent>(entidadPreview); //entityManager.AddComponent<EdicionModoActualData>(entidad); entityManager.AddComponentData(entidadPreview, rotation); entityManager.AddComponentData(entidadPreview, translation); RecursosPlantilla recurso = AdministradorRecursos.Instanciar().ObtenerRecurso(idAzulejo); xAzul = recurso.xMax; zAzul = recurso.zMax; gridPrevioGameObject.transform.localScale = new Vector3(0.1f * recurso.xMax, 1, 0.1f * recurso.zMax); gridPrevioGameObject.GetComponent <Renderer>().material.SetVector("Vector2_642EB6F1", new Vector4(recurso.xMax, recurso.zMax, 0, 0)); } } if (modoEdicion == ModoEdicion.Seleccion || modoEdicion == ModoEdicion.Eliminar) { if (HasSingleton <AzulejoPreviewComponent>()) { modo.idActual = modo.idAnterior; modo.idAnterior = -1; Entity ent = GetSingletonEntity <AzulejoPreviewComponent>(); EntityManager entityManager = World.DefaultGameObjectInjectionWorld.EntityManager; entityManager.DestroyEntity(ent); Debug.Log("entre seleccion"); } xAzul = 1; zAzul = 1; } modo.posicionTileActual = pos; modo.posicionValida = 1; actualizarPosicionGrid(posPreview, pos); } }); Entities.ForEach((ref AzulejoPreviewComponent azulejoPreview, ref Translation translation, ref Rotation rotation, ref LocalToWorld localToWorld) => { Vector3Int pos = AdministradorMundos.MundoActual().ObtenerPosicionIsometrica(capa); if (pos.x > 0 && pos.z > 0) { azulejoPreview.posicionInicial = new Vector2(pos.x - xInferiorAzul, pos.z - zInferiorAzul); azulejoPreview.posicionFinal = new Vector2(pos.x + xMedioAzul, pos.z + zMedioAzul); azulejoPreview.posicionAzulejo = pos; pos.x = pos.x - 1; pos.z = pos.z - 1; Vector3 medio = puntoMedio(pos, new Vector3(pos.x + xAzul, 0, pos.z + zAzul)); localToWorld.Value = float4x4.TRS(new float3(medio.x - (0.5f * xAzul), pos.y + 1, medio.z - (0.5f * zAzul)), Quaternion.Euler(0, 45, 0), new float3(1, 1, 1)); /* translation = new Translation { Value = new float3(pos.x-1, pos.y+1, pos.z-1) }; * rotation = new Rotation { Value = quaternion.Euler(0, 45, 0) };*/ } }); }
protected override void OnUpdate() { Entities.ForEach((ref EntradaEdicionTeclasData entrada, ref EdicionModoActualData modo) => { bool teclaPresionadaTerreno = Input.GetKeyDown(entrada.teclaTerreno); bool teclaPresionadaRecursos = Input.GetKeyDown(entrada.teclaRecursos); bool teclaPresionadaCrear = Input.GetKeyDown(entrada.teclaCrear); bool teclaPresionadaEliminar = Input.GetKeyDown(entrada.teclaEliminar); bool teclaPresionadaModificar = Input.GetKeyDown(entrada.teclaModificar); bool teclaPresionadaSeleccion = Input.GetKeyDown(entrada.teclaSeleccion); bool teclaPresionadaSubirGrid = Input.GetKeyDown(entrada.teclaSubirGrid); bool teclaPresionadaBajarGrid = Input.GetKeyDown(entrada.teclaBajarGrid); bool teclaPresionadaActivarGrid = Input.GetKeyDown(entrada.teclaActivarGrid); bool teclaPresionadaAvanzar = Input.GetKeyDown(entrada.teclaAvanzar); bool teclaPresionadaRetroceder = Input.GetKeyDown(entrada.teclaRetroceder); bool teclaPresionadaGuardar = Input.GetKeyDown(entrada.teclaGuardar); bool teclaPresionadaCargar = Input.GetKeyDown(entrada.teclaCargar); if (teclaPresionadaGuardar) { AdministradorMundos.MundoActual().Guardar(); } if (teclaPresionadaCargar) { AdministradorMundos.MundoActual().Cargar(); } if (teclaPresionadaTerreno) { modo.tipoEdicion = TipoEdicion.Terreno; } if (teclaPresionadaRecursos) { modo.tipoEdicion = TipoEdicion.Recursos; } if (teclaPresionadaCrear) { modo.modoEdicion = ModoEdicion.Crear; } if (teclaPresionadaEliminar) { modo.modoEdicion = ModoEdicion.Eliminar; } if (teclaPresionadaSeleccion) { modo.modoEdicion = ModoEdicion.Seleccion; } if (teclaPresionadaSubirGrid) { if (modo.capaActual < 10) { modo.capaActual += 1; } } if (teclaPresionadaBajarGrid) { if (modo.capaActual > 1) { modo.capaActual -= 1; } } if (teclaPresionadaAvanzar) { } if (teclaPresionadaActivarGrid) { CamaraGrid.instanciar().ActivarDesactivarGrid(); } }); }