コード例 #1
0
        public IResourceProvider Add(string FilePath)
        {
            //FilePath = PathUtils.GetFullPath(FilePath);

            MountedResources.Add(FilePath, new ValvePackage(FilePath));
            Res.AddResourceProvider(MountedResources[FilePath]);

            return(this);
        }
コード例 #2
0
    public GameObject Generate()
    {
        _rootObject     = new GameObject(_bsp.Name);
        _resourceLoader = new ResourceLoader();
        _resourceLoader.AddResourceProvider(_bsp.PakFile);

        foreach (var appid in _options.GamesToMount)
        {
            if (SourceMounter.Mount(appid))
            {
                foreach (var vpk in SourceMounter.MountedContent[appid])
                {
                    _resourceLoader.AddResourceProvider(vpk);
                }
            }
        }

        if (_options.WithModels)
        {
            GenerateModels(0, _bsp.Models.Count());
        }

        if (_options.WithDisplacements)
        {
            GenerateDisplacements();
        }

        if (_options.WithLightmaps)
        {
            GenerateLightmapPixels();
        }

        if (_options.WithConvexColliders)
        {
            GeneratePhysModels();
        }
        else
        {
            // add mesh colliders
        }

        if (_options.WithEntities)
        {
            GenerateEntities();
        }

        return(_rootObject);
    }
コード例 #3
0
        static void SetBaseOptions(BaseOptions args)
        {
            BaseOptions = args;

            var vpkNames = args.Packages.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)
                           .Select(x => Path.IsPathRooted(x) ? x.Trim() : Path.Combine(args.GameDir, x.Trim()))
                           .ToArray();

            var loader = new ResourceLoader();

            if (!string.IsNullOrEmpty(args.LooseDir))
            {
                loader.AddResourceProvider(new FSLoader(args.LooseDir));
            }

            foreach (var path in vpkNames)
            {
                loader.AddResourceProvider(new ValvePackage(path));
            }

            Resources = loader;

            if (string.IsNullOrEmpty(args.ResourcesDir))
            {
                args.ResourcesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..", "..", "Resources");
            }

            if (!Directory.Exists(args.ResourcesDir))
            {
                args.ResourcesDir = null;
            }

            if (string.IsNullOrEmpty(args.MapsDir))
            {
                args.MapsDir = "maps";
            }

            if (!Path.IsPathRooted(args.MapsDir))
            {
                args.MapsDir = Path.Combine(args.GameDir, args.MapsDir);
            }

            ValveBspFile.PakFileLump.DebugContents = args.DebugPakFile;
        }
コード例 #4
0
        private static void LoadGameArchive()
        {
            if (_sLoadedGameArchive)
            {
                return;
            }
            _sLoadedGameArchive = true;

            var vpkDirPath = Path.Combine(Config.CsgoPath, "pak01_dir.vpk");

            using (Profiler.Begin("OpenVpkArchive"))
            {
                Resources.AddResourceProvider(new VpkArchve(vpkDirPath));
            }
        }
コード例 #5
0
        static int Main(string[] args)
        {
            if (args.Length > 0)
            {
                CsgoDirectory = args[0];
            }

            var assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            ResourcesDirectory = new DirectoryInfo(Path.Combine(assemblyDir, "..", "..", "Resources")).FullName;
            ScriptsDirectory   = new DirectoryInfo(Path.Combine(assemblyDir, "..", "..", "Scripts")).FullName;
            CacheDirectory     = Path.Combine(assemblyDir, "Cache");

            BuildTimeUtc = new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTimeUtc;

            Loader = new ResourceLoader();
            Loader.AddResourceProvider(new ValvePackage(Path.Combine(CsgoDirectory, "pak01_dir.vpk")));

            var server = new Server(8080);

            server.Controllers.Add("/", () => new StaticFileController(ResourcesDirectory));
            server.Controllers.Add("/", () => new StaticFileController(ScriptsDirectory));
            server.Controllers.Add(Assembly.GetExecutingAssembly());

            server.Start();

            var threads = new Thread[Math.Max(1, Environment.ProcessorCount - 1)];

            for (var i = 0; i < threads.Length; ++i)
            {
                threads[i] = new Thread(() => server.Run());
                threads[i].Start();
            }

            server.Run();

            return(0);
        }
コード例 #6
0
ファイル: BspToUnity.cs プロジェクト: pdm1996/Fragsurf-2
        public GameObject Generate()
        {
            _rootObject     = new GameObject(_bsp.Name);
            _resourceLoader = new ResourceLoader();
            _resourceLoader.AddResourceProvider(_bsp.PakFile);

            try
            {
                foreach (var appid in Options.GamesToMount)
                {
                    if (SourceMounter.Mount(appid))
                    {
                        foreach (var vpk in SourceMounter.MountedContent[appid])
                        {
                            _resourceLoader.AddResourceProvider(vpk);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debug.LogError(e);
            }


            if (Options.WithModels)
            {
                try
                {
                    GenerateModels(0, _bsp.Models.Count());
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            if (Options.WithDisplacements)
            {
                try
                {
                    GenerateDisplacements();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            if (Options.WithLightmaps)
            {
                try
                {
                    GenerateLightmapPixels();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            if (Options.WithConvexColliders)
            {
                try
                {
                    GeneratePhysModels();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }
            else
            {
                // add mesh colliders
            }

            if (Options.WithEntities)
            {
                try
                {
                    GenerateEntities();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            if (Options.WithSkybox)
            {
                try
                {
                    GenerateSkybox();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            if (Options.WithProps)
            {
                try
                {
                    GeneratePropModels();
                    GenerateStaticProps();
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            }

            return(_rootObject);
        }
コード例 #7
0
        static void SetBaseOptions(BaseOptions args)
        {
            BaseOptions = args;

            var vpkNames = args.Packages.Split(new [] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries)
                           .Select(x => Path.IsPathRooted(x) ? x.Trim() : Path.Combine(args.GameDir, x.Trim()))
                           .ToArray();

            var loader = new ResourceLoader();

            if (!string.IsNullOrEmpty(args.LooseDir))
            {
                loader.AddResourceProvider(new FSLoader(args.LooseDir));
            }

            foreach (var path in vpkNames)
            {
                if (path.Contains("*"))
                {
                    var wildcardPath = path.Replace('/', '\\');
                    var parts        = wildcardPath.Split('\\');

                    var file   = parts.Last();
                    var folder = @"";
                    for (int i = 0; i < parts.Length - 1; i++)
                    {
                        folder += parts[i] + "\\";
                    }

                    var paths = Directory.GetFiles(folder, file);
                    foreach (var p in paths)
                    {
                        loader.AddResourceProvider(new ValvePackage(p));
                    }

                    continue;
                }
                loader.AddResourceProvider(new ValvePackage(path));
            }

            Resources = loader;

            if (string.IsNullOrEmpty(args.ResourcesDir))
            {
                args.ResourcesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "..", "..", "Resources");
            }

            if (!Directory.Exists(args.ResourcesDir))
            {
                args.ResourcesDir = null;
            }

            if (string.IsNullOrEmpty(args.MapsDir))
            {
                args.MapsDir = "maps";
            }

            if (!Path.IsPathRooted(args.MapsDir))
            {
                args.MapsDir = Path.Combine(args.GameDir, args.MapsDir);
            }

            ValveBspFile.PakFileLump.DebugContents = args.DebugPakFile;
        }