main.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. "use strict";
  2. const Electron = require('electron');
  3. const I18n = require('./i18n');
  4. const PanelManager = require('./panel-manager');
  5. const MainUtil = require('./main-util');
  6. const Updater = require('./updater');
  7. const CCCMENU = require('./ccc-menu');
  8. const CCCMENU_FUNC = require('./ccc-menu-func');
  9. /** 包名 */
  10. const PACKAGE_NAME = require('../package.json').name;
  11. /** 语言 */
  12. const LANG = Editor.lang;
  13. /**
  14. * i18n
  15. * @param {string} key
  16. * @returns {string}
  17. */
  18. const translate = (key) => I18n.translate(LANG, key);
  19. let _lastUuid ;//最后打开的预制节点,记录当前打开层的uuid
  20. module.exports = {
  21. /**
  22. * 注册监听消息
  23. */
  24. messages: {
  25. /**
  26. * 打开说明
  27. */
  28. 'open_set'(){
  29. PanelManager.openViewPanel();
  30. },
  31. 'quickOne'(){
  32. Editor.Scene.callSceneScript(PACKAGE_NAME, 'add-script',function(error,obj){});
  33. setTimeout(() => {
  34. Editor.Scene.callSceneScript(PACKAGE_NAME, 'bind_Code_ByNode', function(error,obj){});
  35. }, 2000);
  36. setTimeout(() => {
  37. Editor.Scene.callSceneScript(PACKAGE_NAME, 'bind_Code_ByNode', function(error,obj){});
  38. }, 4000);
  39. },
  40. /**
  41. * 为选中的节点添加模板脚本
  42. */
  43. 'build_ts'() {
  44. //添加脚本
  45. Editor.Scene.callSceneScript(PACKAGE_NAME, 'add-script',function(error,obj){
  46. if(obj){
  47. return Editor.log(obj);
  48. }
  49. //执行回来的操作
  50. });
  51. },
  52. 'bindNode'() {
  53. //添加脚本
  54. Editor.Scene.callSceneScript(PACKAGE_NAME, 'bind_Code_ByNode',function(error,obj){
  55. if(obj){
  56. return Editor.log(obj);
  57. }
  58. //执行回来的操作
  59. });
  60. },
  61. 'generate_attribute'() {
  62. //添加脚本
  63. Editor.Scene.callSceneScript(PACKAGE_NAME, 'generate_attribute');
  64. },
  65. 'getPrefabUuid'(event,a){
  66. if (event.reply) {
  67. event.reply(null, _lastUuid);
  68. }
  69. },
  70. 'scene:enter-prefab-edit-mode' (event,uuid) {
  71. //Editor.log("打开prefab",uuid)
  72. _lastUuid = uuid;
  73. },
  74. },
  75. /**
  76. * 生命周期:加载
  77. */
  78. load() {
  79. //Editor.log("注册主进程消息")
  80. MainUtil.on('ready', onReadyEvent);
  81. MainUtil.on('print', onPrintEvent);
  82. MainUtil.on('cmdCreatePopLayer', CCCMENU_FUNC.onCeratePopLayer);
  83. MainUtil.on('cmdCreateLayer', CCCMENU_FUNC.onCerateLayer);
  84. MainUtil.on('cmdCreaorSciprt', CCCMENU_FUNC.onCreaorSciprt);
  85. CCCMENU.init();
  86. },
  87. /**
  88. * 生命周期:卸载
  89. */
  90. unload() {
  91. //Editor.log("移除主进程消息")
  92. MainUtil.removeAllListeners(`ready`);
  93. MainUtil.removeAllListeners(`print`);
  94. MainUtil.removeAllListeners(`cmdCreatePopLayer`);
  95. MainUtil.removeAllListeners(`cmdCreateLayer`);
  96. MainUtil.removeAllListeners(`cmdCreaorSciprt`);
  97. },
  98. }
  99. /**
  100. * (渲染进程)打印事件回调
  101. * @param {Electron.IpcMainEvent} event
  102. * @param {{ type: string, content: string }} options 选项
  103. */
  104. function onPrintEvent(event, options) {
  105. const { type, content } = options;
  106. print(type, content);
  107. }
  108. /**
  109. * 渲染进程的 EventEmitter
  110. * @type {EventEmitter}
  111. */
  112. let renderer = null;
  113. /**
  114. * (渲染进程)就绪事件回调
  115. * @param {Electron.IpcMainEvent} event
  116. */
  117. function onReadyEvent(event) {
  118. // 保存实例
  119. renderer = event.sender;
  120. }
  121. /**
  122. * 打印信息到控制台
  123. * @param {'log' | 'info' | 'warn' | 'error' | string} type 类型 | 内容
  124. * @param {string} content 内容
  125. */
  126. function print(type, content = undefined) {
  127. if (content == undefined) {
  128. content = type;
  129. type = 'log';
  130. }
  131. const message = `[${EXTENSION_NAME}] ${content}`;
  132. switch (type) {
  133. default:
  134. case 'log': {
  135. Editor.log(message);
  136. break;
  137. }
  138. case 'info': {
  139. Editor.info(message);
  140. break;
  141. }
  142. case 'warn': {
  143. Editor.warn(message);
  144. break;
  145. }
  146. case 'error': {
  147. Editor.error(message);
  148. break;
  149. }
  150. }
  151. }