/// <summary> /// Crear el mesh y cargarlo en la tabla /// </summary> private void meshCreate_Click(object sender, EventArgs e) { if (meshFilePath == null || meshFilePath.Equals("")) { return; } try { //Parsear XML de mesh var mediaPath = meshFilePath.Substring(0, meshFilePath.LastIndexOf('\\') + 1); var xmlString = File.ReadAllText(meshFilePath); var sceneData = parser.parseSceneFromString(xmlString); //Crear el mesh tantas veces como se haya pedido var cantidad = (int)amountToCreate.Value; var initialPos = getInitialPos(); for (var i = 0; i < cantidad; i++) { var scene = sceneLoader.loadScene(sceneData, mediaPath); var radius = scene.Meshes[0].BoundingBox.calculateBoxRadius(); var posOffsetX = radius * 2; //cargar meshes en dataGrid foreach (var mesh in scene.Meshes) { var mo = new SceneEditorMeshObject(); mo.mesh = mesh; mo.mesh.AutoTransformEnable = true; mo.name = mesh.Name + meshCounter++; mo.userInfo = ""; mo.index = MeshObjects.Count; mo.fileName = fileName.Text; mo.groupIndex = meshGroupCounter; mo.folderName = meshFolderName; //Mover mesh a la posicion correcta mesh.Position = new TGCVector3(initialPos.X + i * posOffsetX, initialPos.Y, initialPos.Z); MeshObjects.Add(mo); dataGridMeshList.Rows.Add(dataGridMeshList.Rows.Count + 1, meshGroupCounter, mo.name); } meshGroupCounter++; } //seleccionar el primer mesh en la grilla seleccionarPrimerElementoDataGrid(); //pasar a modo camara con edicion de mesh radioButtonCameraMode.Checked = true; tabControl.SelectedTab = tabControl.TabPages["tabPageModify"]; } catch (Exception ex) { MessageBox.Show("Hubo un error al cargar el archivo " + fileName.Text, "Error al cargar Mesh", MessageBoxButtons.OK, MessageBoxIcon.Error); Debug.Write("Error al cargar Mesh de TGC " + ex.Message); } }
/// <summary> /// Remover un mesh /// </summary> private void meshRemove_Click(object sender, EventArgs e) { //Ordenar seleccion en forma descendente segun Index en la dataGrid SelectedMeshList.Sort(new ComparadorMeshObjectEliminar()); //clonar lista de seleccion var clonedList = new List <SceneEditorMeshObject>(); foreach (var selectedMeshObj in SelectedMeshList) { clonedList.Add(selectedMeshObj); } //Eliminar en base a lista clonada foreach (var selectedMeshObj in clonedList) { dataGridMeshList.Rows.RemoveAt(selectedMeshObj.index); MeshObjects.RemoveAt(selectedMeshObj.index); selectedMeshObj.mesh.Dispose(); } SelectedMeshList.Clear(); seleccionarPrimerElementoDataGrid(); //arreglar indices de objetos var index = 0; foreach (var selectedMeshObj in MeshObjects) { selectedMeshObj.index = index++; } }
public Character(Vector4 initialPosition) : base(initialPosition) { Direction = new Vector3(0.0f, 0.0f, 0.0f); MovementAbility = MOVEMENT_ABILITY; TurnCount = TURN_COUNT; Health = HEALTH; MeshObjects = new MeshObjects(); IsAlive = true; IsActive = false; }