[engine] [cocos2d-x] [jsb-adapter] 适配引擎 v2.4.12 版本

This commit is contained in:
SmallMain
2023-10-30 22:32:32 +08:00
parent 2508616ad9
commit 0092eb9f05
787 changed files with 206249 additions and 422 deletions

View File

@@ -39,7 +39,7 @@ if (CC_JSB && CC_NATIVERENDERER) {
import renderer from '../renderer/index';
import Enum from '../platform/CCEnum';
import CCComponent from '../components/CCComponent';
import { ccclass, menu, inspector, property, executeInEditMode } from '../platform/CCClassDecorator';
import { ccclass, menu, inspector, property, executeInEditMode, help } from '../platform/CCClassDecorator';
/**
* !#en The light source type
@@ -140,6 +140,7 @@ const LightShadowType = Enum({
@menu('i18n:MAIN_MENU.component.renderers/Light')
@executeInEditMode
@inspector('packages://inspector/inspectors/comps/light.js')
@help('i18n:COMPONENT.help_url.light')
export default class Light extends CCComponent {
@property
_type = LightType.DIRECTIONAL;

View File

@@ -42,7 +42,7 @@ import { particleEmitZAxis } from './particle-general-function';
import TrailModule from './renderer/trail';
import Mesh from '../../mesh/CCMesh';
const { ccclass, menu, property, executeInEditMode, executionOrder} = require('../../platform/CCClassDecorator')
const { ccclass, menu, property, executeInEditMode, executionOrder, help } = require('../../platform/CCClassDecorator')
const RenderComponent = require('../../components/CCRenderComponent');
const _world_mat = new Mat4();
@@ -66,6 +66,7 @@ const _module_props = CC_EDITOR && [
*/
@ccclass('cc.ParticleSystem3D')
@menu('i18n:MAIN_MENU.component.renderers/ParticleSystem3D')
@help('i18n:COMPONENT.help_url.particle-system-3d')
@executionOrder(99)
@executeInEditMode
export default class ParticleSystem3D extends RenderComponent {

View File

@@ -33,6 +33,7 @@ const {
executionOrder,
menu,
property,
help,
} = cc._decorator;
const Vec3 = cc.Vec3;
@@ -49,6 +50,7 @@ const Vec3 = cc.Vec3;
@executionOrder(98)
@menu('i18n:MAIN_MENU.component.physics/Collider/Box 3D')
@executeInEditMode
@help('i18n:COMPONENT.help_url.physics-collider')
export class BoxCollider3D extends Collider3D {
/// PUBLIC PROPERTY GETTER\SETTER ///

View File

@@ -33,6 +33,7 @@ const {
executionOrder,
menu,
property,
help,
} = cc._decorator;
/**
@@ -46,6 +47,7 @@ const {
@ccclass('cc.SphereCollider3D')
@executionOrder(98)
@menu('i18n:MAIN_MENU.component.physics/Collider/Sphere 3D')
@help('i18n:COMPONENT.help_url.physics-collider')
@executeInEditMode
export class SphereCollider3D extends Collider3D {

View File

@@ -33,6 +33,7 @@ const {
property,
requireComponent,
disallowMultiple,
help,
} = cc._decorator;
const Vec3 = cc.Vec3;
@@ -48,6 +49,7 @@ const Vec3 = cc.Vec3;
@executionOrder(98)
@requireComponent(RigidBody3D)
@menu('i18n:MAIN_MENU.component.physics/Constant Force 3D')
@help('i18n:COMPONENT.help_url.constantforce')
@disallowMultiple
@executeInEditMode
export class ConstantForce extends cc.Component {

View File

@@ -33,6 +33,7 @@ const {
executionOrder,
menu,
property,
help,
} = cc._decorator;
const Vec3 = cc.Vec3;
@@ -47,6 +48,7 @@ const Vec3 = cc.Vec3;
@ccclass('cc.RigidBody3D')
@executionOrder(99)
@menu('i18n:MAIN_MENU.component.physics/Rigid Body 3D')
@help('i18n:COMPONENT.help_url.physics-rigidbody')
@executeInEditMode
@disallowMultiple
export class RigidBody3D extends cc.Component {

View File

@@ -43,6 +43,7 @@ let SkeletonAnimation = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/skeleton-animation.js',
menu: 'i18n:MAIN_MENU.component.others/Skeleton Animation',
help: 'i18n:COMPONENT.help_url.skeleton-animation',
},
properties: {

View File

@@ -46,6 +46,7 @@ let SkinnedMeshRenderer = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.mesh/Skinned Mesh Renderer',
help: 'i18n:COMPONENT.help_url.skinned-mesh-renderer',
},
ctor () {

View File

@@ -543,6 +543,7 @@ var downloaders = {
'.image' : downloadImage,
'.pvr': downloadArrayBuffer,
'.pkm': downloadArrayBuffer,
'.astc': downloadArrayBuffer,
// Audio
'.mp3' : downloadAudio,

View File

@@ -148,6 +148,7 @@ const producers = {
'.image' : createTexture,
'.pvr': createTexture,
'.pkm': createTexture,
'.astc': createTexture,
// Audio
'.mp3' : createAudioClip,

View File

@@ -263,6 +263,113 @@ var parser = {
}
})(),
parseASTCTex: (function () {
//= ==============//
// ASTC constants //
//= ==============//
// struct astc_header
// {
// uint8_t magic[4];
// uint8_t blockdim_x;
// uint8_t blockdim_y;
// uint8_t blockdim_z;
// uint8_t xsize[3]; // x-size = xsize[0] + xsize[1] + xsize[2]
// uint8_t ysize[3]; // x-size, y-size and z-size are given in texels;
// uint8_t zsize[3]; // block count is inferred
// };
const ASTC_MAGIC = 0x5CA1AB13;
const ASTC_HEADER_LENGTH = 16; // The header length
const ASTC_HEADER_MAGIC = 4;
const ASTC_HEADER_BLOCKDIM = 3;
const ASTC_HEADER_SIZE_X_BEGIN = 7;
const ASTC_HEADER_SIZE_Y_BEGIN = 10;
const ASTC_HEADER_SIZE_Z_BEGIN = 13;
function getASTCFormat (xdim, ydim) {
if (xdim === 4) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_4x4;
} if (xdim === 5) {
if (ydim === 4) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_5x4;
}
return cc.Texture2D.PixelFormat.RGBA_ASTC_5x5;
} if (xdim === 6) {
if (ydim === 5) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_6x5;
}
return cc.Texture2D.PixelFormat.RGBA_ASTC_6x6;
} if (xdim === 8) {
if (ydim === 5) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_8x5;
} if (ydim === 6) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_8x6;
}
return cc.Texture2D.PixelFormat.RGBA_ASTC_8x8;
} if (xdim === 10) {
if (ydim === 5) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_10x5;
} if (ydim === 6) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_10x6;
} if (ydim === 8) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_10x8;
}
return cc.Texture2D.PixelFormat.RGBA_ASTC_10x10;
}
if (ydim === 10) {
return cc.Texture2D.PixelFormat.RGBA_ASTC_12x10;
}
return cc.Texture2D.PixelFormat.RGBA_ASTC_12x12;
}
return function (file, options, onComplete) {
let err = null, out = null;
try {
const buffer = file instanceof ArrayBuffer ? file : file.buffer;
const header = new Uint8Array(buffer);
const magicval = header[0] + (header[1] << 8) + (header[2] << 16) + (header[3] << 24);
if (magicval !== ASTC_MAGIC) {
return new Error('Invalid magic number in ASTC header');
}
const xdim = header[ASTC_HEADER_MAGIC];
const ydim = header[ASTC_HEADER_MAGIC + 1];
const zdim = header[ASTC_HEADER_MAGIC + 2];
if ((xdim < 3 || xdim > 6 || ydim < 3 || ydim > 6 || zdim < 3 || zdim > 6)
&& (xdim < 4 || xdim === 7 || xdim === 9 || xdim === 11 || xdim > 12
|| ydim < 4 || ydim === 7 || ydim === 9 || ydim === 11 || ydim > 12 || zdim !== 1)) {
return new Error('Invalid block number in ASTC header');
}
const format = getASTCFormat(xdim, ydim);
const xsize = header[ASTC_HEADER_SIZE_X_BEGIN] + (header[ASTC_HEADER_SIZE_X_BEGIN + 1] << 8)
+ (header[ASTC_HEADER_SIZE_X_BEGIN + 2] << 16);
const ysize = header[ASTC_HEADER_SIZE_Y_BEGIN] + (header[ASTC_HEADER_SIZE_Y_BEGIN + 1] << 8)
+ (header[ASTC_HEADER_SIZE_Y_BEGIN + 2] << 16);
const zsize = header[ASTC_HEADER_SIZE_Z_BEGIN] + (header[ASTC_HEADER_SIZE_Z_BEGIN + 1] << 8)
+ (header[ASTC_HEADER_SIZE_Z_BEGIN + 2] << 16);
// buffer = buffer.slice(ASTC_HEADER_LENGTH, buffer.byteLength);
const astcData = new Uint8Array(buffer, ASTC_HEADER_LENGTH);
out = {
_data: astcData,
_compressed: true,
width: xsize,
height: ysize,
format,
};
} catch (e) {
err = e;
}
onComplete(err, out);
}
})(),
/*
* !#en
* Parse plist file
@@ -426,6 +533,7 @@ var parsers = {
'.image' : parser.parseImage,
'.pvr' : parser.parsePVRTex,
'.pkm' : parser.parsePKMTex,
'.astc' : parser.parseASTCTex,
// Audio
'.mp3' : parser.parseAudio,
'.ogg' : parser.parseAudio,

View File

@@ -228,7 +228,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
return this._texture && this._texture.loaded;
},
onTextureLoaded (callback, target) {
onTextureLoaded: function (callback, target) {
if (this.textureLoaded()) {
callback.call(target);
}
@@ -259,8 +259,9 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
*/
setRotated: function (bRotated) {
this._rotated = bRotated;
if (this._texture)
if (this._texture) {
this._calculateUV();
}
},
/**
@@ -327,8 +328,9 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
*/
setRect: function (rect) {
this._rect = rect;
if (this._texture)
if (this._texture) {
this._calculateUV();
}
},
/**
@@ -366,7 +368,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
return this._texture;
},
_textureLoadedCallback () {
_textureLoadedCallback: function () {
let self = this;
let texture = this._texture;
if (!texture) {
@@ -546,7 +548,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
}
},
_flipXY (uvs) {
_flipXY: function (uvs) {
if (this._flipX) {
let tempVal = uvs[0];
uvs[0] = uvs[1];
@@ -568,7 +570,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
}
},
_calculateSlicedUV () {
_calculateSlicedUV: function () {
let rect = this._rect;
let atlasWidth = this._texture.width;
let atlasHeight = this._texture.height;
@@ -629,7 +631,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
}
},
_setDynamicAtlasFrame (frame) {
_setDynamicAtlasFrame: function (frame) {
if (!frame) return;
this._original = {
@@ -644,7 +646,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
this._calculateUV();
},
_resetDynamicAtlasFrame () {
_resetDynamicAtlasFrame: function () {
if (!this._original) return;
this._rect.x = this._original._x;
this._rect.y = this._original._y;
@@ -658,7 +660,7 @@ let SpriteFrame = cc.Class(/** @lends cc.SpriteFrame# */{
this.emit("_resetDynamicAtlasFrame");
},
_calculateUV () {
_calculateUV: function () {
let rect = this._rect,
texture = this._texture,
uv = this.uv,

View File

@@ -205,6 +205,77 @@ const PixelFormat = cc.Enum({
* @type {Number}
*/
RGBA_ETC2: gfx.TEXTURE_FMT_RGBA_ETC2,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 4x4 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 4x4
*/
RGBA_ASTC_4x4: gfx.TEXTURE_FMT_RGBA_ASTC_4X4,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 5x4 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 5x4
*/
RGBA_ASTC_5x4: gfx.TEXTURE_FMT_RGBA_ASTC_5X4,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 5x5 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 5x5
*/
RGBA_ASTC_5x5: gfx.TEXTURE_FMT_RGBA_ASTC_5X5,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 6x5 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 6x5
*/
RGBA_ASTC_6x5: gfx.TEXTURE_FMT_RGBA_ASTC_6X5,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 6x6 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 6x6
*/
RGBA_ASTC_6x6: gfx.TEXTURE_FMT_RGBA_ASTC_6X6,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 8x5 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 8x5
*/
RGBA_ASTC_8x5: gfx.TEXTURE_FMT_RGBA_ASTC_8X5,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 8x6 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 8x6
*/
RGBA_ASTC_8x6: gfx.TEXTURE_FMT_RGBA_ASTC_8X6,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 8x8 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 8x8
*/
RGBA_ASTC_8x8: gfx.TEXTURE_FMT_RGBA_ASTC_8X8,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 10x5 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 10x5
*/
RGBA_ASTC_10x5: gfx.TEXTURE_FMT_RGBA_ASTC_10X5,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 10x6 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 10x6
*/
RGBA_ASTC_10x6: gfx.TEXTURE_FMT_RGBA_ASTC_10X6,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 10x8 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 10x8
*/
RGBA_ASTC_10x8: gfx.TEXTURE_FMT_RGBA_ASTC_10X8,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 10x10 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 10x10
*/
RGBA_ASTC_10x10: gfx.TEXTURE_FMT_RGBA_ASTC_10X10,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 12x10 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 12x10
*/
RGBA_ASTC_12x10: gfx.TEXTURE_FMT_RGBA_ASTC_12X10,
/**
* @en A pixel format containing red, green, blue, and alpha channels that is ASTC compressed with 12x12 block size.
* @zh 包含 RGBA 通道的 ASTC 压缩纹理格式,压缩分块大小为 12x12
*/
RGBA_ASTC_12x12: gfx.TEXTURE_FMT_RGBA_ASTC_12X12,
});
/**
@@ -384,7 +455,7 @@ var Texture2D = cc.Class({
Filter: Filter,
_FilterIndex: FilterIndex,
// predefined most common extnames
extnames: ['.png', '.jpg', '.jpeg', '.bmp', '.webp', '.pvr', '.pkm'],
extnames: ['.png', '.jpg', '.jpeg', '.bmp', '.webp', '.pvr', '.pkm', '.astc'],
_parseExt (extIdStr, defaultFormat) {
let device = cc.renderer.device;
@@ -406,7 +477,10 @@ var Texture2D = cc.Class({
let tmpFormat = extFormat[1] ? parseInt(extFormat[1]) : defaultFormat;
// check whether or not support compressed texture
if ( tmpExt === '.pvr' && !device.ext('WEBGL_compressed_texture_pvrtc')) {
if ( tmpExt === '.astc' && !device.ext('WEBGL_compressed_texture_astc')) {
continue;
}
else if ( tmpExt === '.pvr' && !device.ext('WEBGL_compressed_texture_pvrtc')) {
continue;
}
else if ((tmpFormat === PixelFormat.RGB_ETC1 || tmpFormat === PixelFormat.RGBA_ETC1) && !device.ext('WEBGL_compressed_texture_etc1')) {

View File

@@ -142,6 +142,7 @@ let Camera = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.others/Camera',
inspector: 'packages://inspector/inspectors/comps/camera.js',
help: 'i18n:COMPONENT.help_url.camera',
executeInEditMode: true
},

View File

@@ -104,6 +104,7 @@ var BoxCollider = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.collider/Box Collider',
help: 'i18n:COMPONENT.help_url.collider',
}
});

View File

@@ -99,7 +99,8 @@ var CircleCollider = cc.Class({
mixins: [cc.Collider.Circle],
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.collider/Circle Collider'
menu: 'i18n:MAIN_MENU.component.collider/Circle Collider',
help: 'i18n:COMPONENT.help_url.collider',
},
});

View File

@@ -99,6 +99,7 @@ var PolygonCollider = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.collider/Polygon Collider',
inspector: 'packages://inspector/inspectors/comps/physics/points-base-collider.js',
help: 'i18n:COMPONENT.help_url.collider',
},
});

View File

@@ -443,6 +443,7 @@ var Sprite = cc.Class({
onEnable () {
this._super();
this._validateRender();
this._spriteFrame && this._spriteFrame.isValid && this._spriteFrame.ensureLoadTexture();
this.node.on(cc.Node.EventType.SIZE_CHANGED, this.setVertsDirty, this);

View File

@@ -55,7 +55,7 @@ var StudioComponent = cc.Class({
extends: cc.Component,
editor: CC_EDITOR && {
inspector: 'unpack://engine-dev/extensions/cocostudio/editor/studio-component.js'
inspector: 'unpack://engine/extensions/cocostudio/editor/studio-component.js'
},
properties: CC_EDITOR && {

View File

@@ -41,6 +41,7 @@ let Graphics = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.renderers/Graphics',
help: 'i18n:COMPONENT.help_url.graphics',
},
ctor () {

View File

@@ -97,6 +97,7 @@ let MeshRenderer = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.mesh/MeshRenderer',
help: 'i18n:COMPONENT.help_url.mesh-renderer',
},
properties: {

View File

@@ -47,6 +47,7 @@ var RigidBody = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.physics/Rigid Body',
help: 'i18n:COMPONENT.help_url.rigidbody',
disallowMultiple: true
},

View File

@@ -38,6 +38,7 @@ var PhysicsBoxCollider = cc.Class({
editor: {
menu: CC_EDITOR && 'i18n:MAIN_MENU.component.physics/Collider/Box',
help: 'i18n:COMPONENT.help_url.edit-collider-component',
requireComponent: cc.RigidBody
},

View File

@@ -37,6 +37,7 @@ var PhysicsChainCollider = cc.Class({
editor: {
menu: CC_EDITOR && 'i18n:MAIN_MENU.component.physics/Collider/Chain',
inspector: CC_EDITOR && 'packages://inspector/inspectors/comps/physics/points-base-collider.js',
help: 'i18n:COMPONENT.help_url.edit-collider-component',
requireComponent: cc.RigidBody
},

View File

@@ -38,6 +38,7 @@ var PhysicsCircleCollider = cc.Class({
editor: {
menu: CC_EDITOR && 'i18n:MAIN_MENU.component.physics/Collider/Circle',
help: 'i18n:COMPONENT.help_url.edit-collider-component',
requireComponent: cc.RigidBody
},

View File

@@ -40,6 +40,7 @@ var PhysicsPolygonCollider = cc.Class({
editor: {
menu: CC_EDITOR && 'i18n:MAIN_MENU.component.physics/Collider/Polygon',
inspector: CC_EDITOR && 'packages://inspector/inspectors/comps/physics/points-base-collider.js',
help: 'i18n:COMPONENT.help_url.edit-collider-component',
requireComponent: cc.RigidBody
},

View File

@@ -42,6 +42,7 @@ var DistanceJoint = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.physics/Joint/Distance',
help: 'i18n:COMPONENT.help_url.joint-component',
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
},

View File

@@ -44,6 +44,7 @@ var MotorJoint = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.physics/Joint/Motor',
help: 'i18n:COMPONENT.help_url.joint-component',
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
},

View File

@@ -50,6 +50,7 @@ var MouseJoint = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
help: 'i18n:COMPONENT.help_url.joint-component',
menu: 'i18n:MAIN_MENU.component.physics/Joint/Mouse',
},

View File

@@ -45,6 +45,7 @@ var PrismaticJoint = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
help: 'i18n:COMPONENT.help_url.joint-component',
menu: 'i18n:MAIN_MENU.component.physics/Joint/PrismaticJoint',
},

View File

@@ -49,6 +49,7 @@ var RevoluteJoint = cc.Class({
editor: CC_EDITOR && {
menu: 'i18n:MAIN_MENU.component.physics/Joint/Revolute',
help: 'i18n:COMPONENT.help_url.joint-component',
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
},

View File

@@ -44,6 +44,7 @@ var RopeJoint = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
help: 'i18n:COMPONENT.help_url.joint-component',
menu: 'i18n:MAIN_MENU.component.physics/Joint/Rope',
},

View File

@@ -43,6 +43,7 @@ var WeldJoint = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
help: 'i18n:COMPONENT.help_url.joint-component',
menu: 'i18n:MAIN_MENU.component.physics/Joint/Weld',
},

View File

@@ -46,6 +46,7 @@ var WheelJoint = cc.Class({
editor: CC_EDITOR && {
inspector: 'packages://inspector/inspectors/comps/physics/joint.js',
help: 'i18n:COMPONENT.help_url.joint-component',
menu: 'i18n:MAIN_MENU.component.physics/Joint/Wheel',
},

View File

@@ -398,15 +398,15 @@ Object.defineProperty(cc.macro, 'ROTATE_ACTION_CCW', {
}
});
let SUPPORT_TEXTURE_FORMATS = ['.pkm', '.pvr', '.webp', '.jpg', '.jpeg', '.bmp', '.png'];
let SUPPORT_TEXTURE_FORMATS = ['.astc', '.pkm', '.pvr', '.webp', '.jpg', '.jpeg', '.bmp', '.png'];
/**
* !#en
* The image format supported by the engine defaults, and the supported formats may differ in different build platforms and device types.
* Currently all platform and device support ['.webp', '.jpg', '.jpeg', '.bmp', '.png'], The iOS mobile platform also supports the PVR format。
* Currently all platform and device support ['.astc', '.webp', '.jpg', '.jpeg', '.bmp', '.png'], The iOS mobile platform also supports the PVR format。
* !#zh
* 引擎默认支持的图片格式,支持的格式可能在不同的构建平台和设备类型上有所差别。
* 目前所有平台和设备支持的格式有 ['.webp', '.jpg', '.jpeg', '.bmp', '.png']. 另外 Ios 手机平台还额外支持了 PVR 格式。
* 目前所有平台和设备支持的格式有 ['.astc', '.webp', '.jpg', '.jpeg', '.bmp', '.png']. 另外 Ios 手机平台还额外支持了 PVR 格式。
* @property {String[]} SUPPORT_TEXTURE_FORMATS
*/
cc.macro.SUPPORT_TEXTURE_FORMATS = SUPPORT_TEXTURE_FORMATS;

View File

@@ -187,6 +187,11 @@ function initSys () {
*/
sys.LANGUAGE_UNKNOWN = "unknown";
/**
* @property {String} OS_OPENHARMONY
* @readOnly
*/
sys.OS_OPENHARMONY = "OpenHarmony";
/**
* @property {String} OS_IOS
* @readOnly
@@ -321,6 +326,12 @@ function initSys () {
* @default 11
*/
sys.WP8 = 11;
/**
* @property {Number} OPENHARMONY
* @readOnly
* @default 12
*/
sys.OPENHARMONY = 12;
/**
* @property {Number} MOBILE_BROWSER
* @readOnly
@@ -450,6 +461,14 @@ function initSys () {
* @default 120
*/
sys.TAOBAO = 120;
/**
* @property {Number} TAOBAO_MINIGAME
* @readOnly
* @default 121
*/
sys.TAOBAO_MINIGAME = 121;
/**
* BROWSER_TYPE_WECHAT
* @property {String} BROWSER_TYPE_WECHAT
@@ -720,6 +739,7 @@ function initSys () {
platform === sys.TIZEN ||
platform === sys.BLACKBERRY ||
platform === sys.XIAOMI_GAME ||
platform === sys.OPENHARMONY ||
isVivoGame ||
isOppoGame ||
isHuaweiGame ||
@@ -1008,7 +1028,9 @@ function initSys () {
imageBitmap.close && imageBitmap.close();
}).catch(err => {});
}
if (docEle['ontouchstart'] !== undefined || doc['ontouchstart'] !== undefined || nav.msPointerEnabled)
// NOTE: '__wxjs_environment' is defined in wechat miniprogram webview environment
// developpers would embed builded web project in a webview component on wechat miniprogram, so that we need to handle this situation.
if (docEle['ontouchstart'] !== undefined || doc['ontouchstart'] !== undefined || nav.msPointerEnabled || (typeof __wxjs_environment === 'string' && __wxjs_environment === 'miniprogram'))
capabilities["touches"] = true;
if (docEle['onmouseup'] !== undefined)
capabilities["mouse"] = true;

View File

@@ -1059,7 +1059,11 @@ cc.ContainerStrategy = cc.Class({
var devicePixelRatio = view._devicePixelRatio = 1;
if(CC_JSB){
// view.isRetinaEnabled only work on web.
if(globalThis.oh) {
devicePixelRatio = view._devicePixelRatio = globalThis.oh.devicePixelRatio;
} else {
devicePixelRatio = view._devicePixelRatio = window.devicePixelRatio;
}
}else if (view.isRetinaEnabled()) {
devicePixelRatio = view._devicePixelRatio = Math.min(view._maxPixelRatio, window.devicePixelRatio || 1);
}

View File

@@ -25,8 +25,8 @@ export default class NativeTTF {
this._cfg = new DataView(this._layout._cfg);
this._layoutInfo = new DataView(this._layout._layout);
this._cfgFields = jsb.LabelRenderer._cfgFields;
this._layoutFields = jsb.LabelRenderer._layoutFields;
this._cfgFields = "string" == typeof jsb.LabelRenderer._cfgFields ? JSON.parse(jsb.LabelRenderer._cfgFields) : jsb.LabelRenderer._cfgFields;
this._layoutFields = "string" == typeof jsb.LabelRenderer._layoutFields ? JSON.parse(jsb.LabelRenderer._layoutFields) : jsb.LabelRenderer._layoutFields;
this._layout.bindNodeProxy(comp.node._proxy);
this._bindMaterial(comp);
}