示例#1
0
        public void CreateNewProject(string path, string name)
        {
            MainForm mainForm = FindForm() as MainForm;

            if (mainForm == null || mainForm.SettingsModel == null)
            {
                return;
            }

            path = Path.GetFullPath(path);
            string wrkdir = mainForm.SettingsModel.SdkPath + @"\templates";

            Newtonsoft.Json.Linq.JObject args = new Newtonsoft.Json.Linq.JObject();
            args["inputPath"]  = wrkdir;
            args["outputPath"] = path;
            args["name"]       = name;
            if (TemplateFilesManager.ProcessTemplates("resources/settings/MakeNewProject.json", args) && Directory.Exists(path))
            {
                ProjectModel projectModel = new ProjectModel(name + ".cbp");
                projectModel.WorkingDirectory = Path.GetDirectoryName(path);
                projectModel.UpdateFromCbp();
                string json = JsonConvert.SerializeObject(projectModel, Formatting.Indented);
                File.WriteAllText(path + @"\project.zasuvka", json);
                OpenProject(path + @"\project.zasuvka");
            }
        }
示例#2
0
        public void OpenProject(string filePath)
        {
            filePath = Path.GetFullPath(filePath);
            if (!File.Exists(filePath))
            {
                return;
            }

            CloseProject();

            string json = File.ReadAllText(filePath);

            m_projectModel = JsonConvert.DeserializeObject <ProjectModel>(json);
            m_projectModel.WorkingDirectory = Path.GetDirectoryName(filePath);
            m_projectModel.UpdateFromCbp();

            MainForm mainForm = FindForm() as MainForm;

            if (mainForm != null)
            {
                m_projectModel.ApplyToCbp(mainForm.SettingsModel);

                mainForm.LoadSdkMetaFiles();
                mainForm.GenerateProjectMetaFiles();
                mainForm.InitializeGameEditorPages();
                mainForm.SelectTabPage(MainForm.TAB_NAME_BUILD);
                mainForm.AppTitleExtended            = m_projectModel.Name;
                mainForm.ProjectFilesViewer.RootPath = m_projectModel.WorkingDirectory;
            }
        }
示例#3
0
        private void OnAction(Action action)
        {
            if (action == null)
            {
                return;
            }

            if (action.Id == "CbpChanged")
            {
                Console.WriteLine("CBP project file changed!");
                if (ProjectModel != null)
                {
                    ProjectModel.UpdateFromCbp();
                    MetaComponentsManager.Instance.UnregisterAllMetaComponents();
                    Parallel.Invoke(
                        () => LoadSdkMetaFiles(),
                        () => GenerateProjectMetaFiles()
                        );
                    if (m_buildPage != null)
                    {
                        m_buildPage.RefreshContent();
                    }
                    if (m_projectManagerPanel != null)
                    {
                        m_projectManagerPanel.RebuildList();
                    }
                }
            }
            else if (action.Id == "EditorCbpChanged")
            {
                Console.WriteLine("Editor CBP project file changed!");
                if (m_buildPage != null && !m_buildPage.IsBatchProcessRunning && ProjectModel != null && !string.IsNullOrEmpty(ProjectModel.EditorCbpPath))
                {
                    if (m_scenePage != null)
                    {
                        m_scenePage.SaveSceneBackup();
                    }
                    SceneViewPlugin.Unload();
                    m_buildPage.BatchOperationProject(
                        BuildPageControl.BatchOperationMode.Rebuild,
                        null,
                        ProjectModel.WorkingDirectory + @"\" + ProjectModel.EditorCbpPath
                        );
                }
            }
            else if (action.Id == "SceneViewPluginChanged")
            {
                Console.WriteLine("Editor components plugin changed!");
                if (ProjectModel != null && !string.IsNullOrEmpty(ProjectModel.EditorPluginPath))
                {
                    string pluginPath = ProjectModel.WorkingDirectory + @"\" + ProjectModel.EditorPluginPath;
                    SceneViewPlugin.Unload();
                    if (SceneViewPlugin.Load(pluginPath))
                    {
                        if (m_scenePage != null)
                        {
                            m_scenePage.ReinitializeRenderer();
                        }
                        List <string> clist = SceneViewPlugin.ListComponents();
                        if (clist != null && clist.Count > 0)
                        {
                            foreach (string c in clist)
                            {
                                Console.WriteLine("Registered component: " + c);
                            }
                        }
                        if (m_scenePage != null)
                        {
                            m_scenePage.OpenSceneBackup();
                        }
                    }
                }
            }
            else if (action.Id == "LoadMetaComponent" && action.Params != null && action.Params.Length > 0)
            {
                string path = action.Params[0] as string;
                if (!String.IsNullOrEmpty(path) && ProjectModel != null)
                {
                    Console.WriteLine("Load meta-component for: \"{0}\"", path);
                    string metaPath = path + ".meta";
                    if (File.Exists(metaPath))
                    {
                        string        json = File.ReadAllText(metaPath);
                        MetaComponent meta = Newtonsoft.Json.JsonConvert.DeserializeObject <MetaComponent>(json);
                        MetaComponentsManager.Instance.UnregisterMetaComponent(meta);
                        ProjectModel.MetaComponentPaths.Remove(path);
                        if (meta != null)
                        {
                            MetaComponentsManager.Instance.RegisterMetaComponent(meta);
                            ProjectModel.MetaComponentPaths.Add(path, meta);
                            if (meta.Properties != null && meta.Properties.Count > 0)
                            {
                                foreach (MetaProperty prop in meta.Properties)
                                {
                                    if (PropertyEditorsManager.Instance.FindPropertyEditor(prop.ValueType) == null)
                                    {
                                        Console.WriteLine("Property editor for type: \"{0}\" (component: \"{1}\", property: \"{2}\") not found!", prop.ValueType, meta.Name, prop.Name);
                                    }
                                }
                            }
                        }
                    }
                    if (m_projectManagerPanel != null)
                    {
                        m_projectManagerPanel.UpdateFile(path);
                    }
                    GenerateProjectCodeFiles();
                }
            }
            else if (action.Id == "RemoveMetaComponent" && action.Params != null && action.Params.Length > 0)
            {
                string path = action.Params[0] as string;
                if (!String.IsNullOrEmpty(path) && ProjectModel != null && ProjectModel.MetaComponentPaths.ContainsKey(path))
                {
                    Console.WriteLine("Remove meta-component for: \"{0}\"", path);
                    MetaComponentsManager.Instance.UnregisterMetaComponent(ProjectModel.MetaComponentPaths[path]);
                    ProjectModel.MetaComponentPaths.Remove(path);
                    if (m_projectManagerPanel != null)
                    {
                        m_projectManagerPanel.UpdateFile(path);
                    }
                    GenerateProjectCodeFiles();
                }
            }
            else if (action.Id == "LoadMetaAsset" && action.Params != null && action.Params.Length > 0)
            {
                string path = action.Params[0] as string;
                if (!String.IsNullOrEmpty(path) && ProjectModel != null)
                {
                    Console.WriteLine("Load meta-asset for: \"{0}\"", path);
                    string metaPath = path + ".meta";
                    if (File.Exists(metaPath))
                    {
                        string    json = File.ReadAllText(metaPath);
                        MetaAsset meta = Newtonsoft.Json.JsonConvert.DeserializeObject <MetaAsset>(json);
                        MetaAssetsManager.Instance.UnregisterMetaAsset(meta);
                        ProjectModel.MetaAssetsPaths.Remove(path);
                        if (meta != null)
                        {
                            MetaAssetsManager.Instance.RegisterMetaAsset(meta);
                            ProjectModel.MetaAssetsPaths.Add(path, meta);
                        }
                    }
                    if (m_projectManagerPanel != null)
                    {
                        m_projectManagerPanel.UpdateFile(path);
                    }
                    GenerateProjectCodeFiles();
                }
            }
            else if (action.Id == "RemoveMetaAsset" && action.Params != null && action.Params.Length > 0)
            {
                string path = action.Params[0] as string;
                if (!String.IsNullOrEmpty(path) && ProjectModel != null && ProjectModel.MetaAssetsPaths.ContainsKey(path))
                {
                    Console.WriteLine("Remove meta-asset for: \"{0}\"", path);
                    MetaAssetsManager.Instance.UnregisterMetaAsset(ProjectModel.MetaAssetsPaths[path]);
                    ProjectModel.MetaAssetsPaths.Remove(path);
                    if (m_projectManagerPanel != null)
                    {
                        m_projectManagerPanel.UpdateFile(path);
                    }
                    GenerateProjectCodeFiles();
                }
            }
            else if (action.Id == "GameObjectIdChanged" && action.Params != null && action.Params.Length > 0)
            {
                if (m_scenePage != null)
                {
                    m_scenePage.SceneTreeChangeGameObjectId((int)action.Params[0]);
                }
            }
        }