当前位置: 首页 > news >正文

cocos2D插件转3D插件

cocos2D插件转3D插件

'use strict';/*** 3d插件api映射,兼容2d插件* */let fs = require("fs");let path = require("path");let baseDir = '';const prsPath = (Editor.Project && Editor.Project.path ? Editor.Project.path : Editor.remote.projectPath).replace(/\\/g,'/');// 2D 映射到 3D编辑器的命令let MAP_CMD = {'scene:enter-prefab-edit-mode'  :'scene:open-scene','scene:open-by-uuid'            :'scene:open-scene','assets:hint'                   : "twinkle", // 3d里高亮资源命令是 ‘twinkle’'hint'                          : "hint"           // 高亮选中的节点,未找到映射关系}// 模拟creator2d插件的API实现let Editor2D ={isWin32 : path.sep == '\\',appPath : Editor.App.path,error : console.error,log : console.log,warn : console.warn,info : console.info,_getUrlLast(url_path,head){let p_i = url_path.indexOf(head);if(p_i!=-1){return url_path.substr(head.length+2);}},url(url_path){let absPath = Editor._getUrlLast(url_path,'packages:');if(absPath){return path.join(baseDir,absPath)}absPath = Editor._getUrlLast(url_path,'db:');if(absPath ) {return path.join(prsPath,absPath)}return url_path;},require(url){url = Editor2D.url(url);return require(url);},Ipc : {sendToPanel: (head,cmd,...args)=>Editor2D.Ipc._send(head,cmd,...args),sendToAll:(cmd,...args)=>Editor2D.Ipc.sendToMain(cmd,...args),sendToMain:(cmd,...args)=>{cmd = MAP_CMD[cmd] || cmd;let temp = cmd.split(':')if(temp[1]){Editor2D.Ipc._send(temp[0],temp[1] || "",...args);}else{Editor.Message.send(cmd,...args);}},_send(head,cmd,...args){let callback = arguments[arguments.length-1]Editor.Message.request(head,cmd,...args).then((v)=>{if(typeof callback == 'function'){callback(null,v);callback = null;}},()=>{if(typeof callback == 'function'){callback('run _send error');callback = null;}})}},Scene :{callSceneScript:(head,cmd,...args)=>{let info = {name: 'scene',method: cmd,args:args,}let callback = arguments[arguments.length-1]Editor2D.Ipc._send('scene','execute-scene-script',info,(callback instanceof Function) ? callback : null);},},assetdb:{assetBackupPath : path.join(prsPath,'temp','BackupAssets'),async urlToUuid(url){return await Editor.Message.request("asset-db",'query-uuid',url);},async uuidToUrl(uuid){return await Editor.Message.request("asset-db",'query-url',uuid);},async urlToFspath(uuidOrUrl){return await Editor.Message.request("asset-db",'query-path',uuidOrUrl);},async uuidToFspath(uuidOrUrl){return await Editor.Message.request("asset-db",'query-path',uuidOrUrl);},async fspathToUuid(fsPath){let url = "db://" + fsPath.replace(/\\/g,'/').replace(prsPath,'').substr(6);return await Editor.Message.request("asset-db",'query-uuid',url);},async existsByUuid(urlOrUUID){return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID);},async existsByUrl(urlOrUUID){return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID);},async assetInfoByUuid(urlOrUUID){return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID); // 注意3d返回字段与2d不太一样!},async assetInfoByUrl(urlOrUUID){return await Editor.Message.request("asset-db",'query-asset-info',urlOrUUID); // 注意3d返回字段与2d不太一样!},deepQuery(callback){if(!callback){return}Editor.Message.request("asset-db",'query-assets',{pattern:"db://**"}).then((list)=>{// 注意3d返回字段与2d不太一样!callback(null,list)},()=>{callback("run deepQuery error")});},queryInfoByUrl(...args){Editor2D.assetdb.queryInfoByUuid(...args)},queryInfoByUuid(urlOrUUID,callback){Editor.Message.request("asset-db",'query-asset-info',urlOrUUID).then((list)=>{// 注意3d返回字段与2d不太一样!callback(null,list)},()=>{callback("run queryInfoByUuid error")});},saveExists(url,text,callback){let promise = Editor.Message.request("asset-db",'save-asset',url,text).then(()=>{if(callback) callback()},()=>{if(callback) callback('save error')});},create(url,text,callback){let promise = Editor.Message.request("asset-db",'create-asset',url,text,{}).then((info)=>{if(callback) callback(null,info)},()=>{if(callback) callback('save error')});},delete(urls){for (let i = 0; i < urls.length; i++) {const url = urls[i];Editor.Message.request("asset-db",'delete-asset',url)}},move(source,target){Editor.Message.request("asset-db",'move-asset',source,target)},},Selection:{curGlobalActivate(){let type = Editor.Selection.getLastSelectedType();let ids = Editor.Selection.getSelected(type);return {type,id:ids[0]};},curSelection(type){return Editor.Selection.getSelected(type);},}}module.exports.analogApi = ()=>{let packageRoot = __dirname.replace(/\\/g,'/')packageRoot = packageRoot.substr(0,packageRoot.lastIndexOf('simple-code/')-1)baseDir = packageRoot;// 插入apilet copyFunc = (s_obj,t_obj)=>{for (const key in s_obj){const v = s_obj[key];if(t_obj[key] == null){t_obj[key] = v;}else if(t_obj[key] instanceof Object){copyFunc(v,t_obj[key]);}}}copyFunc(Editor2D,Editor);}

http://www.lryc.cn/news/98204.html

相关文章:

  • [Angular] 主从表结构,从表记录在主表固定栏位上呈现
  • Kotlin Multiplatform 创建多平台分发库
  • [SQL挖掘机] - union/union all 使用注意事项
  • php 单例模式
  • 【数据结构】实验二:顺序表
  • 【高级数据结构】线段树
  • qt简易闹钟
  • python和c加加有什么区别,c和c++和python先学哪个
  • Visual Studio 2022 cmake配置opencv开发环境
  • C++ GDAL找出多时相遥感影像缺失的日期并自动生成新的全零图像作为替补
  • 【AI底层逻辑】——篇章5(下):机器学习算法之聚类降维时间序列
  • P1980 [NOIP2013 普及组] 计数问题
  • 需求管理全过程流程图及各阶段核心关注点详解
  • Android开源 自定义emoji键盘,EmojiPack v2.1版本
  • SOLIDWORKS软件的优势分析 硕迪科技
  • Android性能优化之游戏的Theme背景图
  • 网络安全(黑客)系统自学,成为一名白帽黑客
  • lua学习-2 常见运算符
  • 【图像处理】使用 OpenCV 将您的照片变成卡通
  • 暖手宝UL认证 亚马逊UL测试报告 UL499测试项目
  • ES6模块化与异步编程高级用法
  • spring-cloud-starter-gateway 4.0.6负载均衡失败
  • Tomcat注册为Windows服务
  • 【Maven】Maven 中 pom.xml 文件
  • 2、Linux驱动开发:模块_引用符号
  • Python web实战 | Docker+Nginx部署python Django Web项目详细步骤【干货】
  • 【uniapp】实现买定离手小游戏
  • 【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】
  • webpack联邦模块介绍及在dumi中使用问题整理
  • 记录一下Kotlin: Module was compiled with an incompatible version of Kotlin.的问题