예제 #1
0
        public override void Render()
        {
            PreRender();

            //Ver si se seleccionó alguno nivel a empaquetar
            var selectedFile = openFileModifier.Value;

            if (selectedFile != currentFile)
            {
                currentFile = selectedFile;

                //Cargar nivel
                var loader = new BspLoader();
                var bspMap = loader.loadBsp(currentFile, quake3MediaPath);

                //Empaquetar
                var info      = new FileInfo(currentFile);
                var fileName  = info.Name.Substring(0, info.Name.IndexOf('.'));
                var outputDir = info.DirectoryName + "\\" + fileName;

                loader.packLevel(bspMap, quake3MediaPath, outputDir);

                //Librer recursos
                bspMap.dispose();

                MessageBox.Show("Empaquetado almacenado en: " + outputDir, "Result", MessageBoxButtons.OK, MessageBoxIcon.Information);

                DrawText.drawText("Este ejemplo no posee salida gráfica. verificar código y sus comentarios.", 5, 50, Color.OrangeRed);
            }

            PostRender();
        }
예제 #2
0
        /// <summary>
        ///     Cargar un escenario de Quake 3
        /// </summary>
        private void loadLevel(string levelFile)
        {
            //Dispose del anterior
            if (bspMap != null)
            {
                bspMap.dispose();
                bspMap = null;
            }

            //Cargar escenario de Quake 3
            var mediaPath = new DirectoryInfo(levelFile).Parent.Parent.FullName + "\\";
            var loader    = new BspLoader();

            bspMap = loader.loadBsp(levelFile, mediaPath);

            //Iniciar visiblidad
            bspMap.initVisibility();

            //Cargar posición inicial del escenario
            bspMap.CollisionManager.initCamera();
            bspMap.CollisionManager.Camera.RotationSpeed = 2f;

            //Acceso a metadata del escenario, por si se quiere obtener alguna información customizada (hay que parsearla)
            var entdata = bspMap.Data.entdata;
        }
예제 #3
0
        public void LoadTextures(string mediaPath)
        {
            //string root = mediaPath;
            if (!Map.Equals("anim"))
            {
                var extension_pos = Map.LastIndexOf('.');
                if (extension_pos < 0)
                {
                    extension_pos = 0;
                }

                var texpath = BspLoader.FindTextureExtension(Map.Substring(0, extension_pos), mediaPath);

                if (!texpath.Equals(""))
                {
                    //solo hay un mapa de bits
                    var tex = TextureLoader.FromFile(D3DDevice.Instance.Device, texpath);
                    Textures.Add(new TgcTexture(Path.GetFileName(texpath), texpath, tex, false));
                    AnimFreq = 0;
                }
            }
            else
            {
                foreach (var tex in AnimMaps)
                {
                    var extension_pos = tex.LastIndexOf('.');
                    if (extension_pos < 0)
                    {
                        extension_pos = 0;
                    }

                    var texpath = BspLoader.FindTextureExtension(tex.Substring(0, extension_pos), mediaPath);

                    if (!texpath.Equals(""))
                    {
                        //solo hay un mapa de bits
                        var t = TextureLoader.FromFile(D3DDevice.Instance.Device, texpath);
                        Textures.Add(new TgcTexture(Path.GetFileName(texpath), texpath, t, false));
                    }
                }
            }
        }