コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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++;
            }
        }
コード例 #3
0
 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;
 }