示例#1
0
        public static CatProject CreateEmptyProject(string _projectName,
                                                    string _projectUnderDirectory, Game _game)
        {
            // 1. create project directory structure
            string projectRoot = _projectUnderDirectory;

            projectRoot += _projectName + '/';
            // project root
            TestCreateDirectory(projectRoot);
            // sub directory
            // plugin
            string pluginDirectory = projectRoot + '/' + PLUGIN_DIR;

            TestCreateDirectory(pluginDirectory);
            if (File.Exists("plugin/" + BASIC_PLUGIN))
            {
                File.Copy("plugin/" + BASIC_PLUGIN, pluginDirectory + '/' + BASIC_PLUGIN, true);
            }
            // resource
            string resourceDirectory = projectRoot + '/' + RESOURCE_DIR + '/';

            TestCreateDirectory(resourceDirectory);
            TestCreateDirectory(resourceDirectory + "image");
            TestCreateDirectory(resourceDirectory + "effect");
            TestCreateDirectory(resourceDirectory + "material");
            TestCreateDirectory(resourceDirectory + "model");
            TestCreateDirectory(resourceDirectory + "prefab");
            TestCreateDirectory(resourceDirectory + "scene");
            TestCreateDirectory(resourceDirectory + "ai");
            // copy basic resource
            string[] fxs = Directory.GetFiles("resource/effect");
            foreach (String fx in fxs)
            {
                File.Copy(fx, resourceDirectory + "effect/" + Path.GetFileName(fx), true);
            }
            string[] mtrls = Directory.GetFiles("resource/material");
            foreach (String mtrl in mtrls)
            {
                File.Copy(mtrl, resourceDirectory + "material/" + Path.GetFileName(mtrl), true);
            }
            // asset
            string assetDirectory = projectRoot + '/' + ASSET_DIR;

            TestCreateDirectory(assetDirectory);

            // 2. create project instance

            CatProject newProject = new CatProject(_game);

            newProject.projectName      = _projectName;
            newProject.projectRoot      = projectRoot;
            newProject.currentSceneName = "UntitleScene";
            newProject.startupSceneName = newProject.currentSceneName;

            newProject.contentManger = new ContentManager(_game.Services);
            newProject.contentManger.RootDirectory          = projectRoot + ASSET_DIR + '/' + RESOURCE_DIR;
            newProject.m_btTreeManager                      = new BTTreeManager();
            newProject.m_btTreeManager.BTTreeDirectoryRoot  = newProject.projectRoot + '/' + ASSET_DIR + '/' + RESOURCE_DIR + "/ai";
            newProject.m_btTreeManager.BTTreeWriteDirectory = newProject.projectRoot + '/' + RESOURCE_DIR + "/ai";
            // save project files
            newProject.SaveProject(newProject.GetProjectXMLAddress(), true);
            Mgr <CatProject> .Singleton = newProject;
            // create a empty scene
            Scene scene = Scene.CreateEmptyScene(newProject);

            scene.SaveScene(newProject.projectRoot + RESOURCE_DIR + "/scene/" + newProject.currentSceneName + ".scene");
            newProject.SynchronizeScene();
            newProject.SynchronizeBTTrees();

            return(newProject);
        }