public BTTree CreateAndSaveEmptyBTTree(string _name = "UntitleBTTree") { BTTree newTree = BTTree.CreateEmptyBTTree(); // find a name string baseName = _name; string surfix = ".btt"; int index = 0; string name = baseName; string fullname = name + surfix; string path = CatProject.GetStandardPath(m_btTreeReadDirectoryRoot); while (File.Exists(path + fullname)) { ++index; name = baseName + index; fullname = name + surfix; } m_btTrees.Add(name, newTree); newTree.Save(CatProject.GetStandardPath(m_btTreeWriteDirectory) + fullname); if (Mgr <CatProject> .Singleton != null) { Mgr <CatProject> .Singleton.SynchronizeBTTrees(); } return(newTree); }
/** * @brief create an empty scene * * @param game the game engine * * @result an empty scene * */ public static Scene CreateEmptyScene(CatProject _project) { Scene newScene = new Scene(); // basic newScene.setYAngle(45.0f); newScene._XBound = new Vector2(-4.0f, 4.0f); newScene._YBound = new Vector2(-0.2f, 0.2f); newScene._ZBound = new Vector2(0.0f, 4.0f); // working list newScene._renderList = new RenderList(); //newScene._colliderList = new ColliderList(); newScene.m_physicsSystem = new PhysicsSystem(); newScene.m_shadowSystem = new ShadowSystem(_project); newScene._renderList.SetShadowRender(newScene.m_shadowSystem); newScene._uiRenderer = new UIRenderer(); newScene.m_physicsSystem.Initialize(); if (Mgr <GameEngine> .Singleton._gameEngineMode == GameEngine.GameEngineMode.MapEditor) { newScene._debugDrawableList = new DebugDrawableList(); newScene._debugDrawableList.AddItem(newScene); newScene._selectableList = new RepeatableList <ISelectable>(); } // empty list newScene._gameObjectList = new GameObjectList(); newScene.m_postProcessManager = new PostProcessManager(); //newScene.m_postProcessManager.AddPostProcess() CreatePostProcess(newScene); return(newScene); }
private void UpdateShadingEffect(CatProject _project) { string accumulateLightEffectPath = "effect\\AccumulateLight"; try { m_accumulateEffect = _project.contentManger.Load <Effect> (accumulateLightEffectPath); } catch (ContentLoadException) { System.Windows.Forms.MessageBox.Show("Cannot load essential shaders (" + accumulateLightEffectPath + ") for " + "Shadow System", "Vital Error"); Mgr <GameEngine> .Singleton.Exit(); } }
private void MountInGameProject() { CatProject project = CatProject.OpenProject(AppDomain.CurrentDomain.BaseDirectory + "project.xml", this); if (project == null) { System.Windows.Forms.MessageBox.Show("Level file project.xml does not exist.", "Vital Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); Exit(); } Mgr <CatProject> .Singleton = project; Scene scene = Scene.LoadScene(project.GetSceneFileAddress(project.startupSceneName)); if (scene == null) { System.Windows.Forms.MessageBox.Show("Fail to load startup scene: " + project.startupSceneName, "Vital Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); Exit(); } scene.InitializeScene(); scene.ActivateScene(); Mgr <Scene> .Singleton = scene; }
/** * @brief Load models under the directory * * @param _modelDirectory the directory containing .model files * @param _project CatProject * * @result the CatModelList * */ public static CatModelList LoadModels(string _modelDirectory, CatProject _project) { // create CatModelList modelList = new CatModelList(); // search for .material files under _materialDirectory if (!Directory.Exists(_modelDirectory)) { return(modelList); } string[] files = Directory.GetFiles(_modelDirectory, "*.model"); foreach (string file in files) { XmlDocument doc = new XmlDocument(); doc.Load(file); XmlNode nodeModel = doc.SelectSingleNode( typeof(CatModel).ToString()); Serialable.BeginSupportingDelayBinding(); CatModel catsModel = CatModel.DoUnserial(nodeModel) as CatModel; Serialable.EndSupportingDelayBinding(); modelList.AddModel(catsModel); } return(modelList); }
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); }
public static CatProject OpenProject(string _fileName, Game _game) { if (!File.Exists(_fileName)) { return(null); } XmlDocument doc = new XmlDocument(); doc.Load(_fileName); // get project root int index = _fileName.LastIndexOf('/'); if (index < 0) { index = _fileName.LastIndexOf('\\'); } string projectRoot = ""; if (index >= 0) { projectRoot = _fileName.Substring(0, index) + '/'; } // read project itself CatProject newProject = new CatProject(_game); XmlNode nodeProject = doc.SelectSingleNode("Project"); newProject.projectRoot = projectRoot; newProject.projectName = nodeProject.SelectSingleNode("ProjectName").InnerText; XmlElement nodeSceneLoad = (XmlElement)nodeProject.SelectSingleNode("SceneLoad"); newProject.startupSceneName = nodeSceneLoad.GetAttribute("startup"); newProject.currentSceneName = nodeSceneLoad.GetAttribute("current"); newProject.contentManger = new ContentManager(_game.Services); newProject.contentManger.RootDirectory = projectRoot + ASSET_DIR + '/' + RESOURCE_DIR + '/'; Mgr <CatProject> .Singleton = newProject; // load shader if (Mgr <GameEngine> .Singleton._gameEngineMode == GameEngine.GameEngineMode.MapEditor) { newProject.CompileResource(); newProject.SynchronizeScene(); newProject.SynchronizeBTTrees(); } //newProject.CompileShader(newProject.projectRoot); // read configures // test new materiallist newProject.materialList1 = CatMaterialTemplateList.LoadMaterialTemplates( newProject.projectRoot + ASSET_DIR + '/' + RESOURCE_DIR + "/material/"); // newProject.materialList = MaterialList.LoadMaterilas( // newProject.GetConfigurePath(newProject.materialConfigure), // newProject); // test new model newProject.modelList1 = CatModelList.LoadModels( newProject.projectRoot + ASSET_DIR + '/' + RESOURCE_DIR + "/model/", newProject); // newProject.modelList = ModelList.LoadModels( // newProject.GetConfigurePath(newProject.modelConfigure), // newProject); // load plugins newProject.typeManager = new TypeManager(); newProject.typeManager.Load_Plugins(newProject.projectRoot + PLUGIN_DIR + '/'); newProject.typeManager.LoadConsoleCommands(newProject.projectRoot + PLUGIN_DIR + '/'); newProject.typeManager.LoadBTTreeNodes(newProject.projectRoot + PLUGIN_DIR + '/'); Mgr <GameEngine> .Singleton.CatConsole.SetTypeManager(newProject.typeManager); if (Mgr <GameEngine> .Singleton._gameEngineMode == GameEngine.GameEngineMode.MapEditor) { newProject.typeManager.Load_EditorScripts(newProject.projectRoot + PLUGIN_DIR + '/'); } Mgr <TypeManager> .Singleton = newProject.typeManager; 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"; // newProject.prefabList = PrefabList.LoadPrefabs( // newProject.GetConfigurePath(newProject.prefabConfigure), // newProject); newProject.prefabList = PrefabList.LoadFromFiles( newProject.projectRoot + ASSET_DIR + '/' + RESOURCE_DIR + "/prefab/"); // load current scene // newProject.runningScene = Scene.LoadScene( // newProject.GetSceneFileAddress(newProject.currentSceneName)); return(newProject); }
public void Initialize(CatProject _project) { InitFreeList(); UpdateBuffer(); UpdateShadingEffect(_project); }
public ShadowSystem(CatProject _project) { Initialize(_project); }