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"); } }
protected override void OnUpdate() { TipoEdicion tipoEdicion = 0; ModoEdicion modoEdicion = 0; int capa = 0; int idActual = 0; int posicionValida = 0; Vector3Int posicionActualTile = new Vector3Int(0, 0, 0); Entities.ForEach((ref EdicionModoActualData modo) => { tipoEdicion = modo.tipoEdicion; modoEdicion = modo.modoEdicion; capa = modo.capaActual; idActual = modo.idActual; posicionValida = modo.posicionValida; posicionActualTile = modo.posicionTileActual; /*-----------------*/ if (tipoEdicion == TipoEdicion.Terreno) { ModoTerreno(modoEdicion, capa); } if (tipoEdicion == TipoEdicion.Recursos) { ModoRecursos(modoEdicion, capa, idActual, posicionValida, posicionActualTile); } }); }
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"); } }
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) };*/ } }); }