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); }