当前位置: 首页 > 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);}

相关文章:

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.projectP…...

[Angular] 主从表结构,从表记录在主表固定栏位上呈现

Background 主从表结构&#xff0c;有时为了方便数据呈现&#xff0c;在UI上不显示从表资料&#xff0c;那么需要动态把从表的资料加载到主表的固定栏位上。 例如&#xff1a;主表是人员信息&#xff0c;从表是银行卡信息&#xff0c;一个人在同一家银行可能有多张银行卡&…...

Kotlin Multiplatform 创建多平台分发库

目标&#xff1a;通过本教程学习如何使用 Kotlin Multiplatform Library 创建多平台分发库(iOS&#xff0c;安卓)。 创建一个项目 1、本教程使用的是Android Studio创建 2、选择 新建工程&#xff0c;选择 Kotlin Multiplatform Library 3、点击next 输入需要创建的项目名称以…...

[SQL挖掘机] - union/union all 使用注意事项

因为当使用union和union all操作符时&#xff0c;有一些注意事项需要考虑&#xff1a; 1. 列数和数据类型匹配&#xff1a; 要使用union或union all合并结果集&#xff0c;两个或多个查询的 select 语句必须返回相同数量和类型的列。确保每个查询返回相同的列数&#xff0c;并…...

php 单例模式

1&#xff0c;单例模式&#xff0c;属于创建设计模式&#xff0c;简单来说就是一个类只能有一个实例化对象&#xff0c;并提供一个当前类的全局唯一可访问入口&#xff1b; 2&#xff0c;例子 <?phpclass Singleton {private static $instance null;// 禁止被实例化priva…...

【数据结构】实验二:顺序表

实验二 顺序表 一、实验目的与要求 1&#xff09;熟悉顺序表的类型定义&#xff1b; 2&#xff09;熟悉顺序表的基本操作&#xff1b; 3&#xff09;灵活应用顺序表解决具体应用问题。 二、实验内容 1&#xff09;在一个整数序列a1,a2,…,an中&#xff0c;若存在一个数&…...

【高级数据结构】线段树

目录 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 线段树1&#xff08;区间修改&#xff0c;区间查询&#xff09; 最大数&#xff08;单点修改&#xff0c;区间查询&#xff09; 洛谷&#xff1a;最大数https://www.luogu.com.cn/problem/P1198 题目描述 …...

qt简易闹钟

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->stopBtn->setDisabled(true);this->setFixedSize(this->size()); //设置固定大小this->s…...

python和c加加有什么区别,c和c++和python先学哪个

本篇文章给大家谈谈c加加编程和python编程有什么区别&#xff0c;以及python和c加加有什么区别&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 1、python和c学哪个好 学C好。 C通常比Python更快&#xff0c;因为C是一种编译型语言&#xff0c;而Python则是…...

Visual Studio 2022 cmake配置opencv开发环境

1. 环境与说明 这里我用的是 widnows 10 64位&#xff0c;Visual Studio 用的 Visual Studio Community 2022 (社区版) 对于Android开发工程师来说&#xff0c;为什么要使用Visual Studio 呢 ? 因为在Visual Studio中开发调试OpenCV方便&#xff0c;可以开发调试好后&#xf…...

C++ GDAL找出多时相遥感影像缺失的日期并自动生成新的全零图像作为替补

本文介绍基于C 语言的GDAL库&#xff0c;基于一个存储大量遥感影像的文件夹&#xff0c;依据每一景遥感影像的文件名中表示日期的那个字段&#xff0c;找出这些遥感影像中缺失的成像日期&#xff0c;并新生成多个像元值全部为0的栅格文件&#xff0c;作为这些缺失日期当日的遥感…...

【AI底层逻辑】——篇章5(下):机器学习算法之聚类降维时间序列

续上&#xff1a; 目录 4、聚类 5、降维 6、时间序列 三、无完美算法 往期精彩&#xff1a; 4、聚类 聚类即把相似的东西归在一起&#xff0c;与分类不同的是&#xff0c;聚类要处理的是没有标签的数据集&#xff0c;它根据样本数据的分布特性自动进行归类。 人在认知是…...

P1980 [NOIP2013 普及组] 计数问题

[NOIP2013 普及组] 计数问题 题目描述 试计算在区间 1 1 1 到 n n n 的所有整数中&#xff0c;数字 x x x&#xff08; 0 ≤ x ≤ 9 0\le x\le9 0≤x≤9&#xff09;共出现了多少次&#xff1f;例如&#xff0c;在 1 1 1 到 11 11 11 中&#xff0c;即在 1 , 2 , 3 , 4…...

需求管理全过程流程图及各阶段核心关注点详解

分析报告指出&#xff0c;多达76%的项目失败是因为差劲的需求管理&#xff0c;这个是项目失败的最主要原因&#xff0c;比落后的技术、进度失控或者混乱的变更管理还要关键。很多项目往往在开始的时候已经决定了失败&#xff0c;谜底就在谜面上&#xff0c;开始就注定的失败&am…...

Android开源 自定义emoji键盘,EmojiPack v2.1版本

目录 一&#xff0c;简介 二、安装 添加jitpack 仓库 添加依赖: 混淆规则: 三、使用 1、一次性配置emoji显示处理 二、emoji的自定义键盘的使用 一&#xff0c;简介 EmojiPack当前已提供emoji的显示和emoji的选择自定义键盘&#xff0c;在emoji显示这一方面&#xff0…...

SOLIDWORKS软件的优势分析 硕迪科技

在现代的机械设计领域&#xff0c;SOLIDWORKS是一款备受青睐三维设计软件&#xff0c;它具备强大的建模和设计功能&#xff0c;在全球范围内广泛应用于机械设计和工程领域&#xff0c;为用户提供了全面的工程解决方案。本文就SOLIDWORKS的优势进行详细分析。 1、易于学习和使用…...

Android性能优化之游戏的Theme背景图

近期&#xff0c;对游戏的内存优化&#xff0c;通过内存快照发现&#xff0c;某个Activity的theme背景图 占用3M 多。考虑着手对齐进行优化。 问题 查看游戏中的内存快照&#xff0c;发现有一个图片bitmap 占用3M 多&#xff0c;设置在Activity的背景中&#xff1a; 查看Phon…...

网络安全(黑客)系统自学,成为一名白帽黑客

前言 黑客技能是一项非常复杂和专业的技能&#xff0c;需要广泛的计算机知识和网络安全知识。你可以参考下面一些学习步骤&#xff0c;系统自学网络安全。 在学习之前&#xff0c;要给自己定一个目标或者思考一下要达到一个什么样的水平&#xff0c;是学完找工作&#xff08;…...

lua学习-2 常见运算符

文章目录 赋值运算符普通赋值多重赋值交换赋值 算数运算符常见符号标识 关系运算符常见符号标识TIP 逻辑运算符常见符号标识模拟三目运算 赋值运算符 普通赋值 a 1b "123"c truec "true"多重赋值 a,b 1,2 a,b,c 2,"ss" -- c的值为nil交换赋…...

【图像处理】使用 OpenCV 将您的照片变成卡通

图像到卡通 一、说明 在当今世界&#xff0c;我们被图像和视频所包围。从社交媒体到广告&#xff0c;图像已成为一种强大的交流媒介。但是你有没有想过&#xff0c;如果你能把你的照片变成卡通会发生什么&#xff1f;想象一下&#xff0c;为您最喜欢的照片创建动画版本&#xf…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...