gdcore-tools 2.0.0-gd-v5.5.228-autobuild → 2.0.0-gd-v5.5.230-autobuild
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Runtime/CustomRuntimeObject.js +1 -1
- package/dist/Runtime/CustomRuntimeObject.js.map +2 -2
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js +1 -1
- package/dist/Runtime/CustomRuntimeObjectInstanceContainer.js.map +2 -2
- package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/AnchorBehavior/anchorruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/BBText/JsExtension.js +102 -40
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BBText/bbtextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/JsExtension.js +81 -40
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js +1 -1
- package/dist/Runtime/Extensions/BitmapText/bitmaptextruntimeobject.js.map +2 -2
- package/dist/Runtime/Extensions/JsExtensionTypes.d.ts +3 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/JsExtension.js +17 -17
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCharacter3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Spine/CMakeLists.txt +12 -9
- package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js +1 -1
- package/dist/Runtime/Extensions/TextObject/textruntimeobject-pixi-renderer.js.map +2 -2
- package/dist/Runtime/Extensions/TileMap/JsExtension.js +4 -2
- package/dist/Runtime/types/project-data.d.ts +14 -1
- package/dist/lib/libGD.cjs +1 -1
- package/dist/lib/libGD.wasm +0 -0
- package/gd.d.ts +49 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/BitmapText/bitmaptextruntimeobject-pixi-renderer.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n /**\n * The PIXI.js renderer for the Bitmap Text runtime object.\n */\n export class BitmapTextRuntimeObjectPixiRenderer {\n _object: gdjs.BitmapTextRuntimeObject;\n _pixiObject: PIXI.BitmapText;\n\n /**\n * @param runtimeObject The object to render\n * @param instanceContainer The container in which the object is\n */\n constructor(\n runtimeObject: gdjs.BitmapTextRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n\n // Obtain the bitmap font to use in the object.\n const bitmapFont = instanceContainer\n .getGame()\n .getBitmapFontManager()\n .obtainBitmapFont(\n runtimeObject._bitmapFontResourceName,\n runtimeObject._textureAtlasResourceName\n );\n this._pixiObject = new PIXI.BitmapText(runtimeObject._text, {\n fontName: bitmapFont.font,\n fontSize: bitmapFont.size,\n });\n\n // Set the object on the scene\n instanceContainer\n .getLayer('')\n .getRenderer()\n .addRendererObject(this._pixiObject, runtimeObject.getZOrder());\n\n
|
|
5
|
-
"mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAIS,OAA0C,CAQ/C,YACE,EACA,EACA,CACA,KAAK,QAAU,EAGf,KAAM,GAAa,EAChB,UACA,uBACA,iBACC,EAAc,wBACd,EAAc,2BAElB,KAAK,YAAc,GAAI,MAAK,WAAW,EAAc,MAAO,CAC1D,SAAU,EAAW,KACrB,SAAU,EAAW,OAIvB,EACG,SAAS,IACT,cACA,kBAAkB,KAAK,YAAa,EAAc,
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n /**\n * The PIXI.js renderer for the Bitmap Text runtime object.\n */\n export class BitmapTextRuntimeObjectPixiRenderer {\n _object: gdjs.BitmapTextRuntimeObject;\n _pixiObject: PIXI.BitmapText;\n\n /**\n * @param runtimeObject The object to render\n * @param instanceContainer The container in which the object is\n */\n constructor(\n runtimeObject: gdjs.BitmapTextRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n this._object = runtimeObject;\n\n // Obtain the bitmap font to use in the object.\n const bitmapFont = instanceContainer\n .getGame()\n .getBitmapFontManager()\n .obtainBitmapFont(\n runtimeObject._bitmapFontResourceName,\n runtimeObject._textureAtlasResourceName\n );\n this._pixiObject = new PIXI.BitmapText(runtimeObject._text, {\n fontName: bitmapFont.font,\n fontSize: bitmapFont.size,\n });\n\n // Set the object on the scene\n instanceContainer\n .getLayer('')\n .getRenderer()\n .addRendererObject(this._pixiObject, runtimeObject.getZOrder());\n\n this.updateAlignment();\n this.updateTextContent();\n this.updateAngle();\n this.updateOpacity();\n this.updateScale();\n this.updateWrappingWidth();\n this.updateTint();\n }\n\n getRendererObject() {\n return this._pixiObject;\n }\n\n onDestroy() {\n // Mark the font from the object as not used anymore.\n this._object\n .getInstanceContainer()\n .getGame()\n .getBitmapFontManager()\n .releaseBitmapFont(this._pixiObject.fontName);\n\n this._pixiObject.destroy();\n }\n\n getFontSize() {\n return this._pixiObject.fontSize;\n }\n\n updateFont(): void {\n // Get the new bitmap font to use\n const bitmapFont = this._object\n .getInstanceContainer()\n .getGame()\n .getBitmapFontManager()\n .obtainBitmapFont(\n this._object._bitmapFontResourceName,\n this._object._textureAtlasResourceName\n );\n\n // Mark the old font as not used anymore\n this._object\n .getInstanceContainer()\n .getGame()\n .getBitmapFontManager()\n .releaseBitmapFont(this._pixiObject.fontName);\n\n // Update the font used by the object:\n this._pixiObject.fontName = bitmapFont.font;\n this._pixiObject.fontSize = bitmapFont.size;\n this.updatePosition();\n }\n\n updateTint(): void {\n this._pixiObject.tint = gdjs.rgbToHexNumber(\n this._object._tint[0],\n this._object._tint[1],\n this._object._tint[2]\n );\n this._pixiObject.dirty = true;\n }\n\n /**\n * Get the tint of the bitmap object as a \"R;G;B\" string.\n * @returns the tint of bitmap object in \"R;G;B\" format.\n */\n getTint(): string {\n return (\n this._object._tint[0] +\n ';' +\n this._object._tint[1] +\n ';' +\n this._object._tint[2]\n );\n }\n\n updateScale(): void {\n this._pixiObject.scale.set(\n Math.max(this._object._scaleX, 0),\n Math.max(this._object._scaleY, 0)\n );\n this.updatePosition();\n }\n\n getScale() {\n return Math.max(this._pixiObject.scale.x, this._pixiObject.scale.y);\n }\n\n updateWrappingWidth(): void {\n if (this._object._wrapping) {\n this._pixiObject.maxWidth =\n this._object._wrappingWidth / this._object._scaleX;\n this._pixiObject.dirty = true;\n } else {\n this._pixiObject.maxWidth = 0;\n this._pixiObject.dirty = true;\n }\n this.updatePosition();\n }\n\n updateTextContent(): void {\n this._pixiObject.text = this._object._text;\n this.updatePosition();\n }\n\n updateAlignment(): void {\n // @ts-ignore - assume align is always a valid value.\n this._pixiObject.align = this._object._textAlign;\n this.updatePosition();\n }\n\n updatePosition(): void {\n if (this._object.isWrapping() && this.getWidth() !== 0) {\n const alignmentX =\n this._object._textAlign === 'right'\n ? 1\n : this._object._textAlign === 'center'\n ? 0.5\n : 0;\n\n const width = this._object.getWrappingWidth();\n const renderedWidth = this.getWidth();\n\n // A vector from the custom size center to the renderer center.\n const centerToCenterX = (width - renderedWidth) * (alignmentX - 0.5);\n\n this._pixiObject.position.x = this._object.x + width / 2;\n this._pixiObject.anchor.x = 0.5 - centerToCenterX / renderedWidth;\n } else {\n this._pixiObject.position.x = this._object.x + this.getWidth() / 2;\n this._pixiObject.anchor.x = 0.5;\n }\n\n const alignmentY =\n this._object._verticalTextAlignment === 'bottom'\n ? 1\n : this._object._verticalTextAlignment === 'center'\n ? 0.5\n : 0;\n this._pixiObject.position.y =\n this._object.y + this.getHeight() * (0.5 - alignmentY);\n this._pixiObject.anchor.y = 0.5;\n }\n\n updateAngle(): void {\n this._pixiObject.rotation = gdjs.toRad(this._object.angle);\n }\n\n updateOpacity(): void {\n this._pixiObject.alpha = this._object._opacity / 255;\n }\n\n getWidth(): float {\n return this._pixiObject.textWidth * this.getScale();\n }\n\n getHeight(): float {\n return this._pixiObject.textHeight * this.getScale();\n }\n }\n export const BitmapTextRuntimeObjectRenderer =\n BitmapTextRuntimeObjectPixiRenderer;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(i){class
|
|
1
|
+
var gdjs;(function(i){class n extends i.RuntimeObject{constructor(t,e){super(t,e);this._wrapping=!1;this._opacity=e.content.opacity,this._text=e.content.text,this._tint=i.rgbOrHexToRGBColor(e.content.tint),this._bitmapFontResourceName=e.content.bitmapFontResourceName,this._textureAtlasResourceName=e.content.textureAtlasResourceName,this._scaleX=e.content.scale,this._scaleY=e.content.scale,this._wrappingWidth=0,this._textAlign=e.content.align,this._verticalTextAlignment=e.content.verticalTextAlignment||"top",this._renderer=new i.BitmapTextRuntimeObjectRenderer(this,t),this.onCreated()}getRendererObject(){return this._renderer.getRendererObject()}updateFromObjectData(t,e){return t.content.opacity!==e.content.opacity&&this.setOpacity(e.content.opacity),t.content.text!==e.content.text&&this.setText(e.content.text),t.content.tint!==e.content.tint&&(this._tint=i.rgbOrHexToRGBColor(e.content.tint),this._renderer.updateTint()),t.content.bitmapFontResourceName!==e.content.bitmapFontResourceName&&this.setBitmapFontResourceName(e.content.bitmapFontResourceName),t.content.textureAtlasResourceName!==e.content.textureAtlasResourceName&&this.setTextureAtlasResourceName(e.content.textureAtlasResourceName),t.content.scale!==e.content.scale&&this.setScale(e.content.scale),t.content.align!==e.content.align&&this.setTextAlignment(e.content.align),t.content.verticalTextAlignment!==e.content.verticalTextAlignment&&this.setVerticalTextAlignment(e.content.verticalTextAlignment),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),text:this._text,opa:this._opacity,tint:this._tint,bfrn:this._bitmapFontResourceName,tarn:this._textureAtlasResourceName,scale:this.getScale(),wwrap:this._wrapping,wwidth:this._wrappingWidth,align:this._textAlign,vta:this._verticalTextAlignment}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t),this._text!==void 0&&this.setText(t.text),this._opacity!==void 0&&this.setOpacity(t.opa),this._tint!==void 0&&(this._tint=t.tint,this._renderer.updateTint()),this._bitmapFontResourceName!==void 0&&this.setBitmapFontResourceName(t.bfrn),this._textureAtlasResourceName!==void 0&&this.setTextureAtlasResourceName(t.tarn),this._scaleX!==void 0&&this.setScale(t.scale),this._wrapping!==void 0&&this.setWrapping(t.wwrap),this._wrappingWidth!==void 0&&this.setWrappingWidth(t.wwidth),this._textAlign!==void 0&&this.setTextAlignment(t.align),this._verticalTextAlignment!==void 0&&this.setVerticalTextAlignment(t.vta)}extraInitializationFromInitialInstance(t){t.customSize&&(this.setWrappingWidth(t.width),this.setWrapping(!0)),t.opacity!==void 0&&this.setOpacity(t.opacity)}onDestroyed(){super.onDestroyed(),this._renderer.onDestroy()}setText(t){this._text=t,this._renderer.updateTextContent(),this.invalidateHitboxes()}getText(){return this._text}setTint(t){this._tint=i.rgbOrHexToRGBColor(t),this._renderer.updateTint()}getTint(){return this._tint[0]+";"+this._tint[1]+";"+this._tint[2]}getScale(){const t=this.getScaleX(),e=this.getScaleY();return t===e?t:Math.sqrt(t*e)}getScaleX(){return this._scaleX}getScaleY(){return this._scaleY}setScale(t){this.setScaleX(t),this.setScaleY(t)}setScaleX(t){t<0&&(t=0),this._scaleX!==t&&(this._scaleX=t,this._renderer.updateScale(),this.invalidateHitboxes())}setScaleY(t){t<0&&(t=0),this._scaleY!==t&&(this._scaleY=t,this._renderer.updateScale(),this.invalidateHitboxes())}getFontSize(){return this._renderer.getFontSize()}setBitmapFontAndTextureAtlasResourceName(t,e){t&&(this.setBitmapFontResourceName(t),this._renderer.updateFont()),e&&(this.setTextureAtlasResourceName(e),this._renderer.updateFont())}setBitmapFontResourceName(t){this._bitmapFontResourceName=t}getBitmapFontResourceName(){return this._bitmapFontResourceName}setTextureAtlasResourceName(t){this._textureAtlasResourceName=t}getTextureAtlasResourceName(){return this._textureAtlasResourceName}setTextAlignment(t){this._textAlign=t,this._renderer.updateAlignment()}getTextAlignment(){return this._textAlign}setVerticalTextAlignment(t){this._verticalTextAlignment=t,this._renderer.updatePosition()}getVerticalTextAlignment(){return this._verticalTextAlignment}setX(t){super.setX(t),this._renderer.updatePosition()}setY(t){super.setY(t),this._renderer.updatePosition()}setAngle(t){super.setAngle(t),this._renderer.updateAngle()}setOpacity(t){t<0&&(t=0),t>255&&(t=255),this._opacity=t,this._renderer.updateOpacity()}getOpacity(){return this._opacity}setWrappingWidth(t){this._wrappingWidth=t,this._renderer.updateWrappingWidth(),this.invalidateHitboxes()}getWrappingWidth(){return this._wrappingWidth}setWrapping(t){this._wrapping=t,this._renderer.updateWrappingWidth(),this.invalidateHitboxes()}isWrapping(){return this._wrapping}getWidth(){return this._wrapping?this._wrappingWidth:this._renderer.getWidth()}getHeight(){return this._renderer.getHeight()}getDrawableY(){return this.getY()-(this._verticalTextAlignment==="center"?this.getHeight()/2:this._verticalTextAlignment==="bottom"?this.getHeight():0)}}i.BitmapTextRuntimeObject=n,i.registerObject("BitmapText::BitmapTextObject",i.BitmapTextRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=bitmaptextruntimeobject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/BitmapText/bitmaptextruntimeobject.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.BitmapTextRuntimeObject} */\n export type BitmapTextObjectDataType = {\n /** The base parameters of the Bitmap Text */\n content: {\n /** The opacity of the text. */\n opacity: float;\n /** Content of the text. */\n text: string;\n /** The tint of the text. */\n tint: string;\n /** The name of the resource containing the bitmap font for the text. */\n bitmapFontResourceName: string;\n /** The name of the resource containing the atlas image file for the text. */\n textureAtlasResourceName: string;\n /** The scale of the text. */\n scale: float;\n /** Activate word wrap if set to true. */\n wordWrap: boolean;\n /** Wrapping with from custom size properties. */\n wrappingWidth: float;\n /** Alignment of the text. */\n align: 'left' | 'center' | 'right';\n };\n };\n export type BitmapTextObjectData = ObjectData & BitmapTextObjectDataType;\n\n export type BitmapTextObjectNetworkSyncDataType = {\n text: string;\n opa: float;\n tint: number[];\n bfrn: string;\n tarn: string;\n scale: number;\n wwrap: boolean;\n wwidth: float;\n align: string;\n };\n\n export type BitmapTextObjectNetworkSyncData = ObjectNetworkSyncData &\n BitmapTextObjectNetworkSyncDataType;\n\n /**\n * Displays a text using a \"Bitmap Font\", generated in a external editor like bmFont.\n * This is more efficient/faster to render than a traditional text (which needs\n * to have its whole texture re-rendered anytime it changes).\n *\n * Bitmap Font can be created with softwares like:\n * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/|http://www.angelcode.com/products/bmfont/\n * * Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner|http://www.71squared.com/en/glyphdesigner\n * * Littera (Web-based, free): http://kvazars.com/littera/|http://kvazars.com/littera/\n */\n export class BitmapTextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.OpacityHandler, gdjs.Scalable\n {\n _opacity: float;\n _text: string;\n /** color in format [r, g, b], where each component is in the range [0, 255] */\n _tint: integer[];\n _bitmapFontResourceName: string;\n _textureAtlasResourceName: string;\n _scaleX: number;\n _scaleY: number;\n _wordWrap: boolean;\n _wrappingWidth: float;\n _align: string;\n\n _renderer: gdjs.BitmapTextRuntimeObjectPixiRenderer;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param objectData The object data used to initialize the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: BitmapTextObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._opacity = objectData.content.opacity;\n this._text = objectData.content.text;\n this._tint = gdjs.rgbOrHexToRGBColor(objectData.content.tint);\n\n this._bitmapFontResourceName = objectData.content.bitmapFontResourceName; // fnt/xml files\n this._textureAtlasResourceName =\n objectData.content.textureAtlasResourceName; // texture file used with fnt/xml (bitmap font file)\n this._scaleX = objectData.content.scale;\n this._scaleY = objectData.content.scale;\n this._wordWrap = objectData.content.wordWrap;\n this._wrappingWidth = 0;\n this._align = objectData.content.align;\n\n this._renderer = new gdjs.BitmapTextRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n // @ts-ignore\n updateFromObjectData(\n oldObjectData: BitmapTextObjectDataType,\n newObjectData: BitmapTextObjectDataType\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (oldObjectData.content.text !== newObjectData.content.text) {\n this.setText(newObjectData.content.text);\n }\n if (oldObjectData.content.tint !== newObjectData.content.tint) {\n this._tint = gdjs.rgbOrHexToRGBColor(newObjectData.content.tint);\n this._renderer.updateTint();\n }\n if (\n oldObjectData.content.bitmapFontResourceName !==\n newObjectData.content.bitmapFontResourceName\n ) {\n this.setBitmapFontResourceName(\n newObjectData.content.bitmapFontResourceName\n );\n }\n if (\n oldObjectData.content.textureAtlasResourceName !==\n newObjectData.content.textureAtlasResourceName\n ) {\n this.setTextureAtlasResourceName(\n newObjectData.content.textureAtlasResourceName\n );\n }\n if (oldObjectData.content.scale !== newObjectData.content.scale) {\n this.setScale(newObjectData.content.scale);\n }\n if (oldObjectData.content.wordWrap !== newObjectData.content.wordWrap) {\n this.setWordWrap(newObjectData.content.wordWrap);\n }\n if (oldObjectData.content.align !== newObjectData.content.align) {\n this.setAlignment(newObjectData.content.align);\n }\n\n return true;\n }\n\n getNetworkSyncData(): BitmapTextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n text: this._text,\n opa: this._opacity,\n tint: this._tint,\n bfrn: this._bitmapFontResourceName,\n tarn: this._textureAtlasResourceName,\n scale: this.getScale(),\n wwrap: this._wordWrap,\n wwidth: this._wrappingWidth,\n align: this._align,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: BitmapTextObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n if (this._text !== undefined) {\n this.setText(networkSyncData.text);\n }\n if (this._opacity !== undefined) {\n this.setOpacity(networkSyncData.opa);\n }\n if (this._tint !== undefined) {\n this._tint = networkSyncData.tint;\n this._renderer.updateTint();\n }\n if (this._bitmapFontResourceName !== undefined) {\n this.setBitmapFontResourceName(networkSyncData.bfrn);\n }\n if (this._textureAtlasResourceName !== undefined) {\n this.setTextureAtlasResourceName(networkSyncData.tarn);\n }\n if (this._scaleX !== undefined) {\n this.setScale(networkSyncData.scale);\n }\n if (this._wordWrap !== undefined) {\n this.setWordWrap(networkSyncData.wwrap);\n }\n if (this._wrappingWidth !== undefined) {\n this.setWrappingWidth(networkSyncData.wwidth);\n }\n if (this._align !== undefined) {\n this.setAlignment(networkSyncData.align);\n }\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n extraInitializationFromInitialInstance(initialInstanceData: InstanceData) {\n if (initialInstanceData.customSize) {\n this.setWrappingWidth(initialInstanceData.width);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n /**\n * Set the text to display.\n */\n setText(text: string): void {\n this._text = text;\n this._renderer.updateTextContent();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the text displayed by the object.\n */\n getText(): string {\n return this._text;\n }\n\n setTint(rgbColorString: string): void {\n this._tint = gdjs.rgbOrHexToRGBColor(rgbColorString);\n this._renderer.updateTint();\n }\n\n getTint(): string {\n return this._tint[0] + ';' + this._tint[1] + ';' + this._tint[2];\n }\n\n getScale(): number {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n getScaleX(): float {\n return this._scaleX;\n }\n\n getScaleY(): float {\n return this._scaleY;\n }\n\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this._scaleX === scaleX) return;\n\n this._scaleX = scaleX;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this._scaleY === scaleY) return;\n\n this._scaleY = scaleY;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n getFontSize(): float {\n return this._renderer.getFontSize();\n }\n\n setBitmapFontAndTextureAtlasResourceName(\n bitmapFontResourceName: string,\n textureAtlasResourceName: string\n ): void {\n if (bitmapFontResourceName) {\n this.setBitmapFontResourceName(bitmapFontResourceName);\n this._renderer.updateFont();\n }\n if (textureAtlasResourceName) {\n this.setTextureAtlasResourceName(textureAtlasResourceName);\n this._renderer.updateFont();\n }\n }\n\n setBitmapFontResourceName(bitmapFontResourceName: string): void {\n this._bitmapFontResourceName = bitmapFontResourceName;\n }\n\n getBitmapFontResourceName(): string {\n return this._bitmapFontResourceName;\n }\n\n setTextureAtlasResourceName(textureAtlasResourceName: string): void {\n this._textureAtlasResourceName = textureAtlasResourceName;\n }\n\n getTextureAtlasResourceName(): string {\n return this._textureAtlasResourceName;\n }\n\n setAlignment(align: string): void {\n this._align = align;\n this._renderer.updateAlignment();\n }\n\n getAlignment(): string {\n return this._align;\n }\n\n /**\n * Set object position on X axis.\n * @param x The new position X of the object.\n */\n setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n /**\n * Set object position on Y axis.\n * @param y The new position Y of the object.\n */\n setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n /**\n * Set the angle of the object.\n * @param angle The new angle of the object.\n */\n setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n * @param opacity The new opacity of the object (0-255).\n */\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this._opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n /**\n * Get object opacity.\n */\n getOpacity(): float {\n return this._opacity;\n }\n\n /**\n * Set the wrapping width.\n * @param width The new width in pixels.\n */\n setWrappingWidth(width: float): void {\n this._wrappingWidth = width;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the wrapping width of the object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n setWordWrap(wordWrap: boolean): void {\n this._wordWrap = wordWrap;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n getWordWrap(): boolean {\n return this._wordWrap;\n }\n\n /**\n * Get the width of the object.\n */\n getWidth(): float {\n return this._renderer.getWidth();\n }\n\n /**\n * Get the height of the object.\n */\n getHeight(): float {\n return this._renderer.getHeight();\n }\n }\n gdjs.registerObject(\n 'BitmapText::BitmapTextObject',\n // @ts-ignore\n gdjs.BitmapTextRuntimeObject\n );\n}\n"],
|
|
5
|
-
"mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAoDS,eACG,GAAK,aAEf,
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.BitmapTextRuntimeObject} */\n export type BitmapTextObjectDataType = {\n /** The base parameters of the Bitmap Text */\n content: {\n /** The opacity of the text. */\n opacity: float;\n /** Content of the text. */\n text: string;\n /** The tint of the text. */\n tint: string;\n /** The name of the resource containing the bitmap font for the text. */\n bitmapFontResourceName: string;\n /** The name of the resource containing the atlas image file for the text. */\n textureAtlasResourceName: string;\n /** The scale of the text. */\n scale: float;\n /** Wrapping with from custom size properties. */\n wrappingWidth: float;\n /** Alignment of the text. */\n align: 'left' | 'center' | 'right';\n verticalTextAlignment: 'top' | 'center' | 'bottom';\n };\n };\n export type BitmapTextObjectData = ObjectData & BitmapTextObjectDataType;\n\n export type BitmapTextObjectNetworkSyncDataType = {\n text: string;\n opa: float;\n tint: number[];\n bfrn: string;\n tarn: string;\n scale: number;\n wwrap: boolean;\n wwidth: float;\n align: string;\n vta: string;\n };\n\n export type BitmapTextObjectNetworkSyncData = ObjectNetworkSyncData &\n BitmapTextObjectNetworkSyncDataType;\n\n /**\n * Displays a text using a \"Bitmap Font\", generated in a external editor like bmFont.\n * This is more efficient/faster to render than a traditional text (which needs\n * to have its whole texture re-rendered anytime it changes).\n *\n * Bitmap Font can be created with softwares like:\n * * BMFont (Windows, free): http://www.angelcode.com/products/bmfont/|http://www.angelcode.com/products/bmfont/\n * * Glyph Designer (OS X, commercial): http://www.71squared.com/en/glyphdesigner|http://www.71squared.com/en/glyphdesigner\n * * Littera (Web-based, free): http://kvazars.com/littera/|http://kvazars.com/littera/\n */\n export class BitmapTextRuntimeObject\n extends gdjs.RuntimeObject\n implements gdjs.TextContainer, gdjs.OpacityHandler, gdjs.Scalable\n {\n _opacity: float;\n _text: string;\n /** color in format [r, g, b], where each component is in the range [0, 255] */\n _tint: integer[];\n _bitmapFontResourceName: string;\n _textureAtlasResourceName: string;\n _scaleX: number;\n _scaleY: number;\n _wrapping: boolean = false;\n _wrappingWidth: float;\n _textAlign: string;\n _verticalTextAlignment: string;\n\n _renderer: gdjs.BitmapTextRuntimeObjectPixiRenderer;\n\n /**\n * @param instanceContainer The container the object belongs to.\n * @param objectData The object data used to initialize the object\n */\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: BitmapTextObjectData\n ) {\n super(instanceContainer, objectData);\n\n this._opacity = objectData.content.opacity;\n this._text = objectData.content.text;\n this._tint = gdjs.rgbOrHexToRGBColor(objectData.content.tint);\n\n this._bitmapFontResourceName = objectData.content.bitmapFontResourceName; // fnt/xml files\n this._textureAtlasResourceName =\n objectData.content.textureAtlasResourceName; // texture file used with fnt/xml (bitmap font file)\n this._scaleX = objectData.content.scale;\n this._scaleY = objectData.content.scale;\n this._wrappingWidth = 0;\n this._textAlign = objectData.content.align;\n this._verticalTextAlignment =\n objectData.content.verticalTextAlignment || 'top';\n\n this._renderer = new gdjs.BitmapTextRuntimeObjectRenderer(\n this,\n instanceContainer\n );\n\n // *ALWAYS* call `this.onCreated()` at the very end of your object constructor.\n this.onCreated();\n }\n\n override getRendererObject() {\n return this._renderer.getRendererObject();\n }\n\n // @ts-ignore\n override updateFromObjectData(\n oldObjectData: BitmapTextObjectDataType,\n newObjectData: BitmapTextObjectDataType\n ): boolean {\n if (oldObjectData.content.opacity !== newObjectData.content.opacity) {\n this.setOpacity(newObjectData.content.opacity);\n }\n if (oldObjectData.content.text !== newObjectData.content.text) {\n this.setText(newObjectData.content.text);\n }\n if (oldObjectData.content.tint !== newObjectData.content.tint) {\n this._tint = gdjs.rgbOrHexToRGBColor(newObjectData.content.tint);\n this._renderer.updateTint();\n }\n if (\n oldObjectData.content.bitmapFontResourceName !==\n newObjectData.content.bitmapFontResourceName\n ) {\n this.setBitmapFontResourceName(\n newObjectData.content.bitmapFontResourceName\n );\n }\n if (\n oldObjectData.content.textureAtlasResourceName !==\n newObjectData.content.textureAtlasResourceName\n ) {\n this.setTextureAtlasResourceName(\n newObjectData.content.textureAtlasResourceName\n );\n }\n if (oldObjectData.content.scale !== newObjectData.content.scale) {\n this.setScale(newObjectData.content.scale);\n }\n if (oldObjectData.content.align !== newObjectData.content.align) {\n this.setTextAlignment(newObjectData.content.align);\n }\n if (\n oldObjectData.content.verticalTextAlignment !==\n newObjectData.content.verticalTextAlignment\n ) {\n this.setVerticalTextAlignment(\n newObjectData.content.verticalTextAlignment\n );\n }\n\n return true;\n }\n\n override getNetworkSyncData(): BitmapTextObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n text: this._text,\n opa: this._opacity,\n tint: this._tint,\n bfrn: this._bitmapFontResourceName,\n tarn: this._textureAtlasResourceName,\n scale: this.getScale(),\n wwrap: this._wrapping,\n wwidth: this._wrappingWidth,\n align: this._textAlign,\n vta: this._verticalTextAlignment,\n };\n }\n\n override updateFromNetworkSyncData(\n networkSyncData: BitmapTextObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n if (this._text !== undefined) {\n this.setText(networkSyncData.text);\n }\n if (this._opacity !== undefined) {\n this.setOpacity(networkSyncData.opa);\n }\n if (this._tint !== undefined) {\n this._tint = networkSyncData.tint;\n this._renderer.updateTint();\n }\n if (this._bitmapFontResourceName !== undefined) {\n this.setBitmapFontResourceName(networkSyncData.bfrn);\n }\n if (this._textureAtlasResourceName !== undefined) {\n this.setTextureAtlasResourceName(networkSyncData.tarn);\n }\n if (this._scaleX !== undefined) {\n this.setScale(networkSyncData.scale);\n }\n if (this._wrapping !== undefined) {\n this.setWrapping(networkSyncData.wwrap);\n }\n if (this._wrappingWidth !== undefined) {\n this.setWrappingWidth(networkSyncData.wwidth);\n }\n if (this._textAlign !== undefined) {\n this.setTextAlignment(networkSyncData.align);\n }\n if (this._verticalTextAlignment !== undefined) {\n this.setVerticalTextAlignment(networkSyncData.vta);\n }\n }\n\n /**\n * Initialize the extra parameters that could be set for an instance.\n */\n override extraInitializationFromInitialInstance(\n initialInstanceData: InstanceData\n ) {\n if (initialInstanceData.customSize) {\n this.setWrappingWidth(initialInstanceData.width);\n this.setWrapping(true);\n }\n if (initialInstanceData.opacity !== undefined) {\n this.setOpacity(initialInstanceData.opacity);\n }\n }\n\n override onDestroyed(): void {\n super.onDestroyed();\n this._renderer.onDestroy();\n }\n\n /**\n * Set the text to display.\n */\n setText(text: string): void {\n this._text = text;\n this._renderer.updateTextContent();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the text displayed by the object.\n */\n getText(): string {\n return this._text;\n }\n\n setTint(rgbColorString: string): void {\n this._tint = gdjs.rgbOrHexToRGBColor(rgbColorString);\n this._renderer.updateTint();\n }\n\n getTint(): string {\n return this._tint[0] + ';' + this._tint[1] + ';' + this._tint[2];\n }\n\n getScale(): number {\n const scaleX = this.getScaleX();\n const scaleY = this.getScaleY();\n return scaleX === scaleY ? scaleX : Math.sqrt(scaleX * scaleY);\n }\n\n getScaleX(): float {\n return this._scaleX;\n }\n\n getScaleY(): float {\n return this._scaleY;\n }\n\n setScale(scale: float): void {\n this.setScaleX(scale);\n this.setScaleY(scale);\n }\n\n setScaleX(scaleX: float): void {\n if (scaleX < 0) {\n scaleX = 0;\n }\n if (this._scaleX === scaleX) return;\n\n this._scaleX = scaleX;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n setScaleY(scaleY: float): void {\n if (scaleY < 0) {\n scaleY = 0;\n }\n if (this._scaleY === scaleY) return;\n\n this._scaleY = scaleY;\n this._renderer.updateScale();\n this.invalidateHitboxes();\n }\n\n getFontSize(): float {\n return this._renderer.getFontSize();\n }\n\n setBitmapFontAndTextureAtlasResourceName(\n bitmapFontResourceName: string,\n textureAtlasResourceName: string\n ): void {\n if (bitmapFontResourceName) {\n this.setBitmapFontResourceName(bitmapFontResourceName);\n this._renderer.updateFont();\n }\n if (textureAtlasResourceName) {\n this.setTextureAtlasResourceName(textureAtlasResourceName);\n this._renderer.updateFont();\n }\n }\n\n setBitmapFontResourceName(bitmapFontResourceName: string): void {\n this._bitmapFontResourceName = bitmapFontResourceName;\n }\n\n getBitmapFontResourceName(): string {\n return this._bitmapFontResourceName;\n }\n\n setTextureAtlasResourceName(textureAtlasResourceName: string): void {\n this._textureAtlasResourceName = textureAtlasResourceName;\n }\n\n getTextureAtlasResourceName(): string {\n return this._textureAtlasResourceName;\n }\n\n setTextAlignment(align: string): void {\n this._textAlign = align;\n this._renderer.updateAlignment();\n }\n\n getTextAlignment(): string {\n return this._textAlign;\n }\n\n /**\n * Set the text alignment on Y axis for multiline text objects.\n * @param alignment The text alignment.\n */\n setVerticalTextAlignment(alignment: string): void {\n this._verticalTextAlignment = alignment;\n this._renderer.updatePosition();\n }\n\n /**\n * Get the text alignment on Y axis of text object.\n * @return The text alignment.\n */\n getVerticalTextAlignment(): string {\n return this._verticalTextAlignment;\n }\n\n override setX(x: float): void {\n super.setX(x);\n this._renderer.updatePosition();\n }\n\n override setY(y: float): void {\n super.setY(y);\n this._renderer.updatePosition();\n }\n\n override setAngle(angle: float): void {\n super.setAngle(angle);\n this._renderer.updateAngle();\n }\n\n /**\n * Set object opacity.\n * @param opacity The new opacity of the object (0-255).\n */\n setOpacity(opacity: float): void {\n if (opacity < 0) {\n opacity = 0;\n }\n if (opacity > 255) {\n opacity = 255;\n }\n this._opacity = opacity;\n this._renderer.updateOpacity();\n }\n\n /**\n * Get object opacity.\n */\n getOpacity(): float {\n return this._opacity;\n }\n\n /**\n * Set the wrapping width.\n * @param width The new width in pixels.\n */\n setWrappingWidth(width: float): void {\n this._wrappingWidth = width;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n /**\n * Get the wrapping width of the object.\n */\n getWrappingWidth(): float {\n return this._wrappingWidth;\n }\n\n setWrapping(wordWrap: boolean): void {\n this._wrapping = wordWrap;\n this._renderer.updateWrappingWidth();\n this.invalidateHitboxes();\n }\n\n isWrapping(): boolean {\n return this._wrapping;\n }\n\n override getWidth(): float {\n return this._wrapping ? this._wrappingWidth : this._renderer.getWidth();\n }\n\n override getHeight(): float {\n return this._renderer.getHeight();\n }\n\n override getDrawableY(): float {\n return (\n this.getY() -\n (this._verticalTextAlignment === 'center'\n ? this.getHeight() / 2\n : this._verticalTextAlignment === 'bottom'\n ? this.getHeight()\n : 0)\n );\n }\n }\n gdjs.registerObject(\n 'BitmapText::BitmapTextObject',\n // @ts-ignore\n gdjs.BitmapTextRuntimeObject\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -15,6 +15,7 @@ class RenderedInstance {
|
|
|
15
15
|
_pixiContainer: PIXI.Container;
|
|
16
16
|
_pixiResourcesLoader: Class<PixiResourcesLoader>;
|
|
17
17
|
_pixiObject: PIXI.DisplayObject | null;
|
|
18
|
+
_propertyOverridings: Map<string, string>;
|
|
18
19
|
wasUsed: boolean;
|
|
19
20
|
|
|
20
21
|
/** Set to true when onRemovedFromScene is called. Allows to cancel promises/asynchronous operations (notably: waiting for a resource load). */
|
|
@@ -25,7 +26,8 @@ class RenderedInstance {
|
|
|
25
26
|
instance: gdInitialInstance,
|
|
26
27
|
associatedObjectConfiguration: gdObjectConfiguration,
|
|
27
28
|
pixiContainer: PIXI.Container,
|
|
28
|
-
pixiResourcesLoader: Class<PixiResourcesLoader
|
|
29
|
+
pixiResourcesLoader: Class<PixiResourcesLoader>,
|
|
30
|
+
propertyOverridings: Map<string, string> = new Map<string, string>()
|
|
29
31
|
);
|
|
30
32
|
|
|
31
33
|
/**
|
|
@@ -917,7 +917,7 @@ module.exports = {
|
|
|
917
917
|
'number',
|
|
918
918
|
'LinearVelocityX',
|
|
919
919
|
_('Linear velocity X'),
|
|
920
|
-
_('the object linear velocity on X
|
|
920
|
+
_('the object linear velocity on X'),
|
|
921
921
|
_('the linear velocity on X'),
|
|
922
922
|
_('Velocity'),
|
|
923
923
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -938,7 +938,7 @@ module.exports = {
|
|
|
938
938
|
'number',
|
|
939
939
|
'LinearVelocityY',
|
|
940
940
|
_('Linear velocity Y'),
|
|
941
|
-
_('the object linear velocity on Y
|
|
941
|
+
_('the object linear velocity on Y'),
|
|
942
942
|
_('the linear velocity on Y'),
|
|
943
943
|
_('Velocity'),
|
|
944
944
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -959,7 +959,7 @@ module.exports = {
|
|
|
959
959
|
'number',
|
|
960
960
|
'LinearVelocityZ',
|
|
961
961
|
_('Linear velocity Z'),
|
|
962
|
-
_('the object linear velocity on Z
|
|
962
|
+
_('the object linear velocity on Z'),
|
|
963
963
|
_('the linear velocity on Z'),
|
|
964
964
|
_('Velocity'),
|
|
965
965
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -980,7 +980,7 @@ module.exports = {
|
|
|
980
980
|
'number',
|
|
981
981
|
'LinearVelocityLength',
|
|
982
982
|
_('Linear velocity'),
|
|
983
|
-
_('the object linear velocity length
|
|
983
|
+
_('the object linear velocity length'),
|
|
984
984
|
_('the linear velocity length'),
|
|
985
985
|
_('Velocity'),
|
|
986
986
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -1000,7 +1000,7 @@ module.exports = {
|
|
|
1000
1000
|
'number',
|
|
1001
1001
|
'AngularVelocityX',
|
|
1002
1002
|
_('Angular velocity X'),
|
|
1003
|
-
_('the object angular velocity around X
|
|
1003
|
+
_('the object angular velocity around X'),
|
|
1004
1004
|
_('the angular velocity around X'),
|
|
1005
1005
|
_('Velocity'),
|
|
1006
1006
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -1021,7 +1021,7 @@ module.exports = {
|
|
|
1021
1021
|
'number',
|
|
1022
1022
|
'AngularVelocityY',
|
|
1023
1023
|
_('Angular velocity Y'),
|
|
1024
|
-
_('the object angular velocity around Y
|
|
1024
|
+
_('the object angular velocity around Y'),
|
|
1025
1025
|
_('the angular velocity around Y'),
|
|
1026
1026
|
_('Velocity'),
|
|
1027
1027
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -1042,7 +1042,7 @@ module.exports = {
|
|
|
1042
1042
|
'number',
|
|
1043
1043
|
'AngularVelocityZ',
|
|
1044
1044
|
_('Angular velocity Z'),
|
|
1045
|
-
_('the object angular velocity around Z
|
|
1045
|
+
_('the object angular velocity around Z'),
|
|
1046
1046
|
_('the angular velocity around Z'),
|
|
1047
1047
|
_('Velocity'),
|
|
1048
1048
|
'JsPlatform/Extensions/physics3d.svg'
|
|
@@ -1569,7 +1569,7 @@ module.exports = {
|
|
|
1569
1569
|
.getOrCreate('physics3D')
|
|
1570
1570
|
.setValue(behaviorContent.getChild('physics3D').getStringValue())
|
|
1571
1571
|
.setType('Behavior')
|
|
1572
|
-
.setLabel('3D
|
|
1572
|
+
.setLabel('3D physics')
|
|
1573
1573
|
.setQuickCustomizationVisibility(gd.QuickCustomization.Hidden)
|
|
1574
1574
|
.addExtraInfo('Physics3D::Physics3DBehavior');
|
|
1575
1575
|
|
|
@@ -2144,7 +2144,7 @@ module.exports = {
|
|
|
2144
2144
|
'number',
|
|
2145
2145
|
'ForwardAcceleration',
|
|
2146
2146
|
_('Forward acceleration'),
|
|
2147
|
-
_('the forward acceleration of an object
|
|
2147
|
+
_('the forward acceleration of an object'),
|
|
2148
2148
|
_('the forward acceleration'),
|
|
2149
2149
|
_('Character configuration'),
|
|
2150
2150
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2166,7 +2166,7 @@ module.exports = {
|
|
|
2166
2166
|
'number',
|
|
2167
2167
|
'ForwardDeceleration',
|
|
2168
2168
|
_('Forward deceleration'),
|
|
2169
|
-
_('the forward deceleration of an object
|
|
2169
|
+
_('the forward deceleration of an object'),
|
|
2170
2170
|
_('the forward deceleration'),
|
|
2171
2171
|
_('Character configuration'),
|
|
2172
2172
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2188,7 +2188,7 @@ module.exports = {
|
|
|
2188
2188
|
'number',
|
|
2189
2189
|
'ForwardSpeedMax',
|
|
2190
2190
|
_('Forward max speed'),
|
|
2191
|
-
_('the forward max speed of the object
|
|
2191
|
+
_('the forward max speed of the object'),
|
|
2192
2192
|
_('the forward max speed'),
|
|
2193
2193
|
_('Character configuration'),
|
|
2194
2194
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2232,7 +2232,7 @@ module.exports = {
|
|
|
2232
2232
|
'number',
|
|
2233
2233
|
'SidewaysAcceleration',
|
|
2234
2234
|
_('Sideways acceleration'),
|
|
2235
|
-
_('the sideways acceleration of an object
|
|
2235
|
+
_('the sideways acceleration of an object'),
|
|
2236
2236
|
_('the sideways acceleration'),
|
|
2237
2237
|
_('Character configuration'),
|
|
2238
2238
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2254,7 +2254,7 @@ module.exports = {
|
|
|
2254
2254
|
'number',
|
|
2255
2255
|
'SidewaysDeceleration',
|
|
2256
2256
|
_('Sideways deceleration'),
|
|
2257
|
-
_('the sideways deceleration of an object
|
|
2257
|
+
_('the sideways deceleration of an object'),
|
|
2258
2258
|
_('the sideways deceleration'),
|
|
2259
2259
|
_('Character configuration'),
|
|
2260
2260
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2276,7 +2276,7 @@ module.exports = {
|
|
|
2276
2276
|
'number',
|
|
2277
2277
|
'SidewaysSpeedMax',
|
|
2278
2278
|
_('Sideways max speed'),
|
|
2279
|
-
_('the sideways max speed of the object
|
|
2279
|
+
_('the sideways max speed of the object'),
|
|
2280
2280
|
_('the sideways max speed'),
|
|
2281
2281
|
_('Character configuration'),
|
|
2282
2282
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2345,7 +2345,7 @@ module.exports = {
|
|
|
2345
2345
|
'number',
|
|
2346
2346
|
'JumpSpeed',
|
|
2347
2347
|
_('Jump speed'),
|
|
2348
|
-
_('the jump speed of an object. Its value is always positive
|
|
2348
|
+
_('the jump speed of an object. Its value is always positive'),
|
|
2349
2349
|
_('the jump speed'),
|
|
2350
2350
|
_('Character configuration'),
|
|
2351
2351
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2389,7 +2389,7 @@ module.exports = {
|
|
|
2389
2389
|
'number',
|
|
2390
2390
|
'Gravity',
|
|
2391
2391
|
_('Gravity'),
|
|
2392
|
-
_('the gravity applied on an object
|
|
2392
|
+
_('the gravity applied on an object'),
|
|
2393
2393
|
_('the gravity'),
|
|
2394
2394
|
_('Character configuration'),
|
|
2395
2395
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -2411,7 +2411,7 @@ module.exports = {
|
|
|
2411
2411
|
'number',
|
|
2412
2412
|
'FallingSpeedMax',
|
|
2413
2413
|
_('Maximum falling speed'),
|
|
2414
|
-
_('the maximum falling speed of an object
|
|
2414
|
+
_('the maximum falling speed of an object'),
|
|
2415
2415
|
_('the maximum falling speed'),
|
|
2416
2416
|
_('Character configuration'),
|
|
2417
2417
|
'JsPlatform/Extensions/physics_character3d.svg'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(n){const p=async()=>{try{const t=(await import("./jolt-physics.wasm.js")).default;if(!t)throw new Error("No default export found in Jolt.");const e=await t();window.Jolt=e}catch(u){throw console.error("Unable to load Jolt physics library.",u),u}};n.registerAsynchronouslyLoadingLibraryPromise(p());class b{constructor(t,e){this._tempVec3=new Jolt.Vec3;this._tempRVec3=new Jolt.RVec3;this._tempQuat=new Jolt.Quat;this.stepped=!1;this._physics3DHooks=[];this._registeredBehaviors=new Set,this.gravityX=e.gravityX,this.gravityY=e.gravityY,this.gravityZ=e.gravityZ,this.worldScale=e.worldScale,this.worldInvScale=1/this.worldScale;const o=new Jolt.JoltSettings;n.Physics3DSharedData.setupCollisionFiltering(o),this.jolt=new Jolt.JoltInterface(o),Jolt.destroy(o),this.physicsSystem=this.jolt.GetPhysicsSystem(),this.physicsSystem.SetGravity(this.getVec3(this.gravityX,this.gravityY,this.gravityZ)),this.bodyInterface=this.physicsSystem.GetBodyInterface(),this.contactListener=new Jolt.ContactListenerJS,this.physicsSystem.SetContactListener(this.contactListener),this.contactListener.OnContactAdded=(i,s,a,r)=>{const h=Jolt.wrapPointer(i,Jolt.Body),l=Jolt.wrapPointer(s,Jolt.Body),d=h.gdjsAssociatedBehavior,f=l.gdjsAssociatedBehavior;!d||!f||(d.onContactBegin(f),f.onContactBegin(d))},this.contactListener.OnContactRemoved=i=>{const s=Jolt.wrapPointer(i,Jolt.SubShapeIDPair),a=this.physicsSystem.GetBodyLockInterface(),r=a.TryGetBody(s.GetBody1ID()),h=a.TryGetBody(s.GetBody2ID()),l=r.gdjsAssociatedBehavior,d=h.gdjsAssociatedBehavior;!l||!d||(l.onContactEnd(d),d.onContactEnd(l))},this.contactListener.OnContactPersisted=(i,s,a,r)=>{},this.contactListener.OnContactValidate=(i,s,a,r)=>Jolt.ValidateResult_AcceptAllContactsForThisBodyPair}getVec3(t,e,o){const i=this._tempVec3;return i.Set(t,e,o),i}getRVec3(t,e,o){const i=this._tempRVec3;return i.Set(t,e,o),i}getQuat(t,e,o,i){const s=this._tempQuat;return s.Set(t,e,o,i),s}static getSharedData(t,e){if(!t.physics3DSharedData){const o=t.getInitialSharedDataForBehavior(e);t.physics3DSharedData=new n.Physics3DSharedData(t,o)}return t.physics3DSharedData}static setupCollisionFiltering(t){const e=new Jolt.ObjectLayerPairFilterMask,o=new Jolt.BroadPhaseLayer(n.Physics3DSharedData.staticBroadPhaseLayerIndex),i=new Jolt.BroadPhaseLayer(n.Physics3DSharedData.dynamicBroadPhaseLayerIndex),s=new Jolt.BroadPhaseLayerInterfaceMask(2);s.ConfigureLayer(o,n.Physics3DSharedData.staticLayersMask,0),s.ConfigureLayer(i,n.Physics3DSharedData.dynamicLayersMask,0),Jolt.destroy(o),Jolt.destroy(i),t.mObjectLayerPairFilter=e,t.mBroadPhaseLayerInterface=s,t.mObjectVsBroadPhaseLayerFilter=new Jolt.ObjectVsBroadPhaseLayerFilterMask(s)}addToBehaviorsList(t){this._registeredBehaviors.add(t)}removeFromBehaviorsList(t){this._registeredBehaviors.delete(t)}step(t){for(const o of this._registeredBehaviors)o._contactsStartedThisFrame.length=0,o._contactsEndedThisFrame.length=0;for(const o of this._registeredBehaviors)o.updateBodyFromObject();for(const o of this._physics3DHooks)o.doBeforePhysicsStep(t);const e=t>1/55?2:1;this.jolt.Step(t,e),this.stepped=!0;for(const o of this._registeredBehaviors)o.updateObjectFromBody()}registerHook(t){this._physics3DHooks.push(t)}}b.staticLayersMask=15,b.dynamicLayersMask=240,b.allLayersMask=255,b.staticBroadPhaseLayerIndex=1,b.dynamicBroadPhaseLayerIndex=1,n.Physics3DSharedData=b,n.registerRuntimeSceneUnloadedCallback(function(u){const t=u.physics3DSharedData;t&&(Jolt.destroy(t.jolt),Jolt.destroy(t.contactListener),Jolt.destroy(t._tempVec3),Jolt.destroy(t._tempRVec3),Jolt.destroy(t._tempQuat),u.physics3DSharedData=null)});class _ extends n.RuntimeBehavior{constructor(t,e,o){super(t,e,o);this.shapeScale=1;this._contactsStartedThisFrame=[];this._contactsEndedThisFrame=[];this._currentContacts=[];this._destroyedDuringFrameLogic=!1;this._body=null;this._needToRecreateBody=!1;this._needToRecreateShape=!1;this._shapeHalfDepth=0;this._objectOldX=0;this._objectOldY=0;this._objectOldZ=0;this._objectOldRotationX=0;this._objectOldRotationY=0;this._objectOldRotationZ=0;this._objectOldWidth=0;this._objectOldHeight=0;this._objectOldDepth=0;this.bodyUpdater=new n.Physics3DRuntimeBehavior.DefaultBodyUpdater(this),this.collisionChecker=new n.Physics3DRuntimeBehavior.DefaultCollisionChecker(this),this.owner3D=o,this.bodyType=e.bodyType,this.bullet=e.bullet,this.fixedRotation=e.fixedRotation,this.shape=e.shape,this.shapeOrientation=e.shapeOrientation,this.shapeDimensionA=e.shapeDimensionA,this.shapeDimensionB=e.shapeDimensionB,this.shapeDimensionC=e.shapeDimensionC,this.density=e.density,this.friction=e.friction,this.restitution=e.restitution,this.linearDamping=Math.max(0,e.linearDamping),this.angularDamping=Math.max(0,e.angularDamping),this.gravityScale=e.gravityScale,this.layers=e.layers,this.masks=e.masks,this._sharedData=b.getSharedData(t.getScene(),e.name),this._sharedData.addToBehaviorsList(this)}getVec3(t,e,o){const i=this._sharedData._tempVec3;return i.Set(t,e,o),i}getRVec3(t,e,o){const i=this._sharedData._tempRVec3;return i.Set(t,e,o),i}getQuat(t,e,o,i){const s=this._sharedData._tempQuat;return s.Set(t,e,o,i),s}updateFromBehaviorData(t,e){return t.bullet!==e.bullet&&this.setBullet(e.bullet),t.fixedRotation!==e.fixedRotation&&this.setFixedRotation(e.fixedRotation),t.shapeDimensionA!==e.shapeDimensionA&&(this.shapeDimensionA=e.shapeDimensionA,this._needToRecreateShape=!0),t.shapeDimensionB!==e.shapeDimensionB&&(this.shapeDimensionB=e.shapeDimensionB,this._needToRecreateShape=!0),t.density!==e.density&&this.setDensity(e.density),t.friction!==e.friction&&this.setFriction(e.friction),t.restitution!==e.restitution&&this.setRestitution(e.restitution),t.linearDamping!==e.linearDamping&&this.setLinearDamping(e.linearDamping),t.angularDamping!==e.angularDamping&&this.setAngularDamping(e.angularDamping),t.gravityScale!==e.gravityScale&&this.setGravityScale(e.gravityScale),!(t.layers!==e.layers||t.masks!==e.masks||t.vertices!==e.vertices||t.bodyType!==e.bodyType||t.shape!==e.shape)}getNetworkSyncData(){let t;if(this._body){const e=this._body.GetPosition(),o=this._body.GetRotation(),i=this._body.GetLinearVelocity(),s=this._body.GetAngularVelocity();t={px:e.GetX(),py:e.GetY(),pz:e.GetZ(),rx:o.GetX(),ry:o.GetY(),rz:o.GetZ(),rw:o.GetW(),lvx:i.GetX(),lvy:i.GetY(),lvz:i.GetZ(),avx:s.GetX(),avy:s.GetY(),avz:s.GetZ(),aw:this._body.IsActive()}}else t={px:void 0,py:void 0,pz:void 0,rx:void 0,ry:void 0,rz:void 0,rw:void 0,lvx:void 0,lvy:void 0,lvz:void 0,avx:void 0,avy:void 0,avz:void 0,aw:void 0};return{...super.getNetworkSyncData(),props:{...t,layers:this.layers,masks:this.masks}}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t);const e=t.props;e.px!==void 0&&e.py!==void 0&&e.pz!==void 0&&this._body&&this._sharedData.bodyInterface.SetPosition(this._body.GetID(),this.getRVec3(e.px,e.py,e.pz),Jolt.EActivation_DontActivate),e.rx!==void 0&&e.ry!==void 0&&e.rz!==void 0&&e.rw!==void 0&&this._body&&this._sharedData.bodyInterface.SetRotation(this._body.GetID(),this.getQuat(e.rx,e.ry,e.rz,e.rw),Jolt.EActivation_DontActivate),e.lvx!==void 0&&e.lvy!==void 0&&e.lvz!==void 0&&this._body&&this._sharedData.bodyInterface.SetLinearVelocity(this._body.GetID(),this.getVec3(e.lvx,e.lvy,e.lvz)),e.avx!==void 0&&e.avy!==void 0&&e.avz!==void 0&&this._body&&this._sharedData.bodyInterface.SetAngularVelocity(this._body.GetID(),this.getVec3(e.avx,e.avy,e.avz)),e.layers!==void 0&&(this.layers=e.layers),e.masks!==void 0&&(this.masks=e.masks)}onDeActivate(){this._sharedData.removeFromBehaviorsList(this),this.bodyUpdater.destroyBody(),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0}onActivate(){this._sharedData.addToBehaviorsList(this),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0,this.updateBodyFromObject()}onDestroy(){this._destroyedDuringFrameLogic=!0,this.onDeActivate()}createShape(){let t=this.owner3D.getWidth()*this._sharedData.worldInvScale,e=this.owner3D.getHeight()*this._sharedData.worldInvScale,o=this.owner3D.getDepth()*this._sharedData.worldInvScale;if(this.shapeOrientation==="X"){const c=o;o=t,t=c}else if(this.shapeOrientation==="Y"){const c=o;o=e,e=c}const i=this.shapeScale*this._sharedData.worldInvScale,s=this.shapeDimensionA*i,a=this.shapeDimensionB*i,r=this.shapeDimensionC*i,h=this._sharedData.worldInvScale;let l,d;if(this.shape==="Box"){const c=s>0?s:t>0?t:h,y=a>0?a:e>0?e:h,g=r>0?r:o>0?o:h,D=Math.min(h,Math.min(c,y,g)/4);l=new Jolt.BoxShapeSettings(this.getVec3(c/2,y/2,g/2),D),d=this.getQuat(0,0,0,1),this._shapeHalfDepth=g/2}else if(this.shape==="Capsule"){const c=s>0?s:t>0?Math.sqrt(t*e)/2:h,y=a>0?a:o>0?o:h;l=new Jolt.CapsuleShapeSettings(Math.max(0,y/2-c),c),d=this._getShapeOrientationQuat(),this._shapeHalfDepth=this.shapeOrientation!=="Z"?c:y/2}else if(this.shape==="Cylinder"){const c=s>0?s:t>0?Math.sqrt(t*e)/2:h,y=a>0?a:o>0?o:h,g=Math.min(h,Math.min(y,c)/4);l=new Jolt.CylinderShapeSettings(y/2,c,g),d=this._getShapeOrientationQuat(),this._shapeHalfDepth=this.shapeOrientation!=="Z"?c:y/2}else{const c=s>0?s:t>0?Math.pow(t*e*o,1/3)/2:h;l=new Jolt.SphereShapeSettings(c),d=this.getQuat(0,0,0,1),this._shapeHalfDepth=c}l.mDensity=this.density;const f=new Jolt.RotatedTranslatedShapeSettings(this.getVec3(0,0,0),d,l).Create().Get();return Jolt.destroy(l),f}_getShapeOrientationQuat(){return this.shapeOrientation==="X"?this.getQuat(0,0,Math.sqrt(2)/2,-Math.sqrt(2)/2):this.shapeOrientation==="Y"?this.getQuat(0,0,0,1):this.getQuat(Math.sqrt(2)/2,0,0,Math.sqrt(2)/2)}_recreateShape(){this.bodyUpdater.recreateShape(),this._objectOldWidth=this.owner3D.getWidth(),this._objectOldHeight=this.owner3D.getHeight(),this._objectOldDepth=this.owner3D.getDepth()}getShapeScale(){return this.shapeScale}setShapeScale(t){t!==this.shapeScale&&t>0&&(this.shapeScale=t,this._needToRecreateShape=!0)}getBody(){return this._body===null&&this._createBody(),this._body}_createBody(){return this._needToRecreateBody=!1,this._needToRecreateShape=!1,!this.activated()||this._destroyedDuringFrameLogic||(this._body=this.bodyUpdater.createAndAddBody(),!this._body)?!1:(this._body.gdjsAssociatedBehavior=this,this._objectOldWidth=this.owner3D.getWidth(),this._objectOldHeight=this.owner3D.getHeight(),this._objectOldDepth=this.owner3D.getDepth(),!0)}getBodyLayer(){return Jolt.ObjectLayerPairFilterMask.prototype.sGetObjectLayer(this.getLayersAccordingToBodyType(),this.getMasksAccordingToBodyType())}getLayersAccordingToBodyType(){return this.isStatic()?this.layers&n.Physics3DSharedData.staticLayersMask:this.layers&n.Physics3DSharedData.dynamicLayersMask}getMasksAccordingToBodyType(){return this.isStatic()?n.Physics3DSharedData.allLayersMask:this.masks}doStepPreEvents(t){!this._sharedData.stepped&&!t.getScene().getTimeManager().isFirstFrame()&&this._sharedData.step(t.getScene().getTimeManager().getElapsedTime()/1e3)}doStepPostEvents(t){this._sharedData.stepped=!1}onObjectHotReloaded(){this.updateBodyFromObject()}recreateBody(){if(!this._body){this._createBody();return}const t=this._sharedData.bodyInterface,e=this._body.GetLinearVelocity(),o=e.GetX(),i=e.GetY(),s=e.GetZ(),a=this._body.GetAngularVelocity(),r=a.GetX(),h=a.GetY(),l=a.GetZ();let d=this._body.GetID();t.RemoveBody(d),t.DestroyBody(d),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0,this._createBody(),!!this._body&&(d=this._body.GetID(),t.SetLinearVelocity(d,this.getVec3(o,i,s)),t.SetAngularVelocity(d,this.getVec3(r,h,l)))}updateObjectFromBody(){this.bodyUpdater.updateObjectFromBody(),this._objectOldX=this.owner3D.getX(),this._objectOldY=this.owner3D.getY(),this._objectOldZ=this.owner3D.getZ(),this._objectOldRotationX=this.owner3D.getRotationX(),this._objectOldRotationY=this.owner3D.getRotationY(),this._objectOldRotationZ=this.owner3D.getAngle()}updateBodyFromObject(){this._body===null&&!this._createBody()||(this._needToRecreateBody&&this.recreateBody(),(this._needToRecreateShape||!this.hasCustomShapeDimension()&&(this._objectOldWidth!==this.owner3D.getWidth()||this._objectOldHeight!==this.owner3D.getHeight()||this._objectOldDepth!==this.owner3D.getDepth()))&&(this._needToRecreateShape=!1,this._recreateShape()),this.bodyUpdater.updateBodyFromObject())}hasCustomShapeDimension(){return this.shapeDimensionA>0||this.shapeDimensionB>0||this.shapeDimensionC>0}getPhysicsPosition(t){return t.Set(this.owner3D.getCenterXInScene()*this._sharedData.worldInvScale,this.owner3D.getCenterYInScene()*this._sharedData.worldInvScale,this.owner3D.getCenterZInScene()*this._sharedData.worldInvScale),t}getPhysicsRotation(t){const e=this.owner3D.get3DRendererObject();return t.Set(e.quaternion.x,e.quaternion.y,e.quaternion.z,e.quaternion.w),t}moveObjectToPhysicsPosition(t){this.owner3D.setCenterXInScene(t.GetX()*this._sharedData.worldScale),this.owner3D.setCenterYInScene(t.GetY()*this._sharedData.worldScale),this.owner3D.setCenterZInScene(t.GetZ()*this._sharedData.worldScale)}moveObjectToPhysicsRotation(t){const e=this.owner3D.get3DRendererObject();e.quaternion.x=t.GetX(),e.quaternion.y=t.GetY(),e.quaternion.z=t.GetZ(),e.quaternion.w=t.GetW();const o=new THREE.Euler(0,0,0,"ZYX");o.setFromQuaternion(e.quaternion),this.owner3D.setRotationX(n.toDegrees(o.x)),this.owner3D.setRotationY(n.toDegrees(o.y)),this.owner3D.setAngle(n.toDegrees(o.z))}getWorldScale(){return this._sharedData.worldScale}getGravityX(){return this._sharedData.gravityX}getGravityY(){return this._sharedData.gravityY}getGravityZ(){return this._sharedData.gravityZ}setGravityX(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityX=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}setGravityY(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityX=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}setGravityZ(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityZ=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}isDynamic(){return this.bodyType==="Dynamic"}isStatic(){return this.bodyType==="Static"}isKinematic(){return this.bodyType==="Kinematic"}isBullet(){return this.bullet}setBullet(t){if(this.bullet===t||(this.bullet=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetMotionQuality(e.GetID(),this.bullet?Jolt.EMotionQuality_LinearCast:Jolt.EMotionQuality_Discrete)}hasFixedRotation(){return this.fixedRotation}setFixedRotation(t){this.fixedRotation!==t&&(this.fixedRotation=t,this._needToRecreateBody=!0)}getDensity(){return this.density}setDensity(t){t<0&&(t=0),this.density!==t&&(this.density=t,this._needToRecreateShape=!0)}getFriction(){return this.friction}setFriction(t){if(t<0&&(t=0),this.friction===t||(this.friction=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetFriction(e.GetID(),t)}getRestitution(){return this.restitution}setRestitution(t){if(t<0&&(t=0),this.restitution===t||(this.restitution=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetRestitution(e.GetID(),t)}getLinearDamping(){return this.linearDamping}setLinearDamping(t){if(t<0&&(t=0),this.linearDamping===t||(this.linearDamping=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetLinearDamping(t)}getAngularDamping(){return this.angularDamping}setAngularDamping(t){if(t<0&&(t=0),this.angularDamping===t||(this.angularDamping=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetAngularDamping(t)}getGravityScale(){return this.gravityScale}setGravityScale(t){if(this.gravityScale===t||(this.gravityScale=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetGravityFactor(t)}layerEnabled(t){return t=Math.floor(t),t<1||t>8?!1:!!(this.layers&1<<t-1)}enableLayer(t,e){t=Math.floor(t),!(t<1||t>8)&&(e?this.layers|=1<<t-1:this.layers&=~(1<<t-1),this._needToRecreateBody=!0)}maskEnabled(t){return t=Math.floor(t),t<1||t>16?!1:!!(this.masks&1<<t-1)}enableMask(t,e){t=Math.floor(t),!(t<1||t>16)&&(e?this.masks|=1<<t-1:this.masks&=~(1<<t-1),this._needToRecreateBody=!0)}getLinearVelocityX(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetX()*this._sharedData.worldScale}setLinearVelocityX(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(t*this._sharedData.worldInvScale,e.GetLinearVelocity().GetY(),e.GetLinearVelocity().GetZ()))}getLinearVelocityY(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetY()*this._sharedData.worldScale}setLinearVelocityY(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(e.GetLinearVelocity().GetX(),t*this._sharedData.worldInvScale,e.GetLinearVelocity().GetZ()))}getLinearVelocityZ(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetZ()*this._sharedData.worldScale}setLinearVelocityZ(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(e.GetLinearVelocity().GetX(),e.GetLinearVelocity().GetY(),t*this._sharedData.worldInvScale))}getLinearVelocityLength(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().Length()*this._sharedData.worldScale}getAngularVelocityX(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return n.toDegrees(t.GetAngularVelocity().GetX())}setAngularVelocityX(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(n.toRad(t),e.GetAngularVelocity().GetY(),e.GetAngularVelocity().GetZ()))}getAngularVelocityY(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return n.toDegrees(t.GetAngularVelocity().GetY())}setAngularVelocityY(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(e.GetAngularVelocity().GetX(),n.toRad(t),e.GetAngularVelocity().GetZ()))}getAngularVelocityZ(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return n.toDegrees(t.GetAngularVelocity().GetZ())}setAngularVelocityZ(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(e.GetAngularVelocity().GetX(),e.GetAngularVelocity().GetY(),n.toRad(t)))}applyForce(t,e,o,i,s,a){if(this._body===null&&!this._createBody())return;const r=this._body;this._sharedData.bodyInterface.AddForce(r.GetID(),this.getVec3(t,e,o),this.getRVec3(i*this._sharedData.worldInvScale,s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale),Jolt.EActivation_Activate)}applyForceAtCenter(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddForce(i.GetID(),this.getVec3(t,e,o),Jolt.EActivation_Activate)}applyForceTowardPosition(t,e,o,i){if(this._body===null&&!this._createBody())return;const s=this._body,a=e-s.GetPosition().GetX(),r=o-s.GetPosition().GetY(),h=i-s.GetPosition().GetZ(),l=a*a+r*r+h*h;if(l===0)return;const d=t/l;this._sharedData.bodyInterface.AddForce(s.GetID(),this.getVec3(a*d,r*d,h*d),Jolt.EActivation_Activate)}applyImpulse(t,e,o,i,s,a){if(this._body===null&&!this._createBody())return;const r=this._body;this._sharedData.bodyInterface.AddImpulse(r.GetID(),this.getVec3(t,e,o),this.getRVec3(i*this._sharedData.worldInvScale,s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale))}applyImpulseAtCenter(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddImpulse(i.GetID(),this.getVec3(t,e,o))}applyImpulseTowardPosition(t,e,o,i,s,a,r){if(this._body===null&&!this._createBody())return;const h=this._body,l=e-s,d=o-a,f=i-r,c=l*l+d*d+f*f;if(c===0)return;const y=t/c;this._sharedData.bodyInterface.AddImpulse(h.GetID(),this.getVec3(l*y,d*y,f*y),this.getRVec3(s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale,r*this._sharedData.worldInvScale))}applyTorque(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddTorque(i.GetID(),this.getVec3(n.toRad(t),n.toRad(e),n.toRad(o)),Jolt.EActivation_Activate)}applyAngularImpulse(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddAngularImpulse(i.GetID(),this.getVec3(n.toRad(t),n.toRad(e),n.toRad(o)))}getMass(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseMass()}getInertiaAroundX(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetX()}getInertiaAroundY(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetY()}getInertiaAroundZ(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetZ()}getMassCenterX(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetX()*this._sharedData.worldScale}getMassCenterY(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetY()*this._sharedData.worldScale}getMassCenterZ(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetZ()*this._sharedData.worldScale}onContactBegin(t){this._currentContacts.push(t);let e=this._contactsEndedThisFrame.indexOf(t);e!==-1?this._contactsEndedThisFrame.splice(e,1):this._contactsStartedThisFrame.push(t)}onContactEnd(t){this._contactsEndedThisFrame.push(t);const e=this._currentContacts.indexOf(t);e!==-1&&this._currentContacts.splice(e,1)}canCollideAgainst(t){return(this.getMasksAccordingToBodyType()&t.getLayersAccordingToBodyType())!=0}static areObjectsColliding(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.isColliding(e):!1}static hasCollisionStartedBetween(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.hasCollisionStartedWith(e):!1}static hasCollisionStoppedBetween(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.hasCollisionStoppedWith(e):!1}}n.Physics3DRuntimeBehavior=_,n.registerBehavior("Physics3D::Physics3DBehavior",n.Physics3DRuntimeBehavior),function(e){class u{constructor(i){this.behavior=i}createAndAddBody(){const{behavior:i}=this,{_sharedData:s}=i,a=i.createShape(),r=new Jolt.BodyCreationSettings(a,i.getPhysicsPosition(s.getRVec3(0,0,0)),i.getPhysicsRotation(s.getQuat(0,0,0,1)),i.bodyType==="Static"?Jolt.EMotionType_Static:i.bodyType==="Kinematic"?Jolt.EMotionType_Kinematic:Jolt.EMotionType_Dynamic,i.getBodyLayer());r.mMotionQuality=i.bullet?Jolt.EMotionQuality_LinearCast:Jolt.EMotionQuality_Discrete,r.mAllowedDOFs=i.fixedRotation?Jolt.EAllowedDOFs_TranslationX|Jolt.EAllowedDOFs_TranslationY|Jolt.EAllowedDOFs_TranslationZ:Jolt.EAllowedDOFs_All,r.mFriction=i.friction,r.mRestitution=i.restitution,r.mLinearDamping=i.linearDamping,r.mAngularDamping=i.angularDamping,r.mGravityFactor=i.gravityScale;const h=s.bodyInterface,l=h.CreateBody(r);return Jolt.destroy(r),h.AddBody(l.GetID(),Jolt.EActivation_Activate),l}updateObjectFromBody(){const{behavior:i}=this,{_body:s}=i;s!==null&&s.IsActive()&&(i.moveObjectToPhysicsPosition(s.GetPosition()),i.moveObjectToPhysicsRotation(s.GetRotation()))}updateBodyFromObject(){const{behavior:i}=this,{owner3D:s,_sharedData:a}=i;if(i._body===null&&!i._createBody())return;const r=i._body;(this.behavior._objectOldX!==s.getX()||this.behavior._objectOldY!==s.getY()||this.behavior._objectOldZ!==s.getZ()||this.behavior._objectOldRotationX!==s.getRotationX()||this.behavior._objectOldRotationY!==s.getRotationY()||this.behavior._objectOldRotationZ!==s.getAngle())&&a.bodyInterface.SetPositionAndRotationWhenChanged(r.GetID(),this.behavior.getPhysicsPosition(a.getRVec3(0,0,0)),this.behavior.getPhysicsRotation(a.getQuat(0,0,0,1)),Jolt.EActivation_Activate)}recreateShape(){const{behavior:i}=this,{_sharedData:s}=i;if(i._body===null&&!i._createBody())return;const a=i._body;s.bodyInterface.SetShape(a.GetID(),i.createShape(),!0,Jolt.EActivation_Activate)}destroyBody(){const{behavior:i}=this,{_sharedData:s}=i;i._body!==null&&(s.bodyInterface.RemoveBody(i._body.GetID()),s.bodyInterface.DestroyBody(i._body.GetID()),i._body=null)}}e.DefaultBodyUpdater=u;class t{constructor(i){this.behavior=i}isColliding(i){return this.behavior._currentContacts.some(s=>s.owner===i)?!0:this.behavior._contactsStartedThisFrame.some(s=>s.owner===i)}hasCollisionStartedWith(i){return this.behavior._contactsStartedThisFrame.some(s=>s.owner===i)}hasCollisionStoppedWith(i){return this.behavior._contactsEndedThisFrame.some(s=>s.owner===i)}}e.DefaultCollisionChecker=t}(_=n.Physics3DRuntimeBehavior||(n.Physics3DRuntimeBehavior={}))})(gdjs||(gdjs={}));
|
|
1
|
+
var gdjs;(function(r){const D=async()=>{try{const t=(await import("./jolt-physics.wasm.js")).default;if(!t)throw new Error("No default export found in Jolt.");const e=await t();window.Jolt=e}catch(u){throw console.error("Unable to load Jolt physics library.",u),u}};r.registerAsynchronouslyLoadingLibraryPromise(D());class b{constructor(t,e){this._tempVec3=new Jolt.Vec3;this._tempRVec3=new Jolt.RVec3;this._tempQuat=new Jolt.Quat;this.stepped=!1;this._physics3DHooks=[];this._registeredBehaviors=new Set,this.gravityX=e.gravityX,this.gravityY=e.gravityY,this.gravityZ=e.gravityZ,this.worldScale=e.worldScale,this.worldInvScale=1/this.worldScale;const o=new Jolt.JoltSettings;r.Physics3DSharedData.setupCollisionFiltering(o),this.jolt=new Jolt.JoltInterface(o),Jolt.destroy(o),this.physicsSystem=this.jolt.GetPhysicsSystem(),this.physicsSystem.SetGravity(this.getVec3(this.gravityX,this.gravityY,this.gravityZ)),this.bodyInterface=this.physicsSystem.GetBodyInterface(),this.contactListener=new Jolt.ContactListenerJS,this.physicsSystem.SetContactListener(this.contactListener),this.contactListener.OnContactAdded=(i,s,a,n)=>{const h=Jolt.wrapPointer(i,Jolt.Body),l=Jolt.wrapPointer(s,Jolt.Body),d=h.gdjsAssociatedBehavior,y=l.gdjsAssociatedBehavior;!d||!y||(d.onContactBegin(y),y.onContactBegin(d))},this.contactListener.OnContactRemoved=i=>{const s=Jolt.wrapPointer(i,Jolt.SubShapeIDPair),a=this.physicsSystem.GetBodyLockInterface(),n=a.TryGetBody(s.GetBody1ID()),h=a.TryGetBody(s.GetBody2ID()),l=n.gdjsAssociatedBehavior,d=h.gdjsAssociatedBehavior;!l||!d||(l.onContactEnd(d),d.onContactEnd(l))},this.contactListener.OnContactPersisted=(i,s,a,n)=>{},this.contactListener.OnContactValidate=(i,s,a,n)=>Jolt.ValidateResult_AcceptAllContactsForThisBodyPair}getVec3(t,e,o){const i=this._tempVec3;return i.Set(t,e,o),i}getRVec3(t,e,o){const i=this._tempRVec3;return i.Set(t,e,o),i}getQuat(t,e,o,i){const s=this._tempQuat;return s.Set(t,e,o,i),s}static getSharedData(t,e){if(!t.physics3DSharedData){const o=t.getInitialSharedDataForBehavior(e);t.physics3DSharedData=new r.Physics3DSharedData(t,o)}return t.physics3DSharedData}static setupCollisionFiltering(t){const e=new Jolt.ObjectLayerPairFilterMask,o=new Jolt.BroadPhaseLayer(r.Physics3DSharedData.staticBroadPhaseLayerIndex),i=new Jolt.BroadPhaseLayer(r.Physics3DSharedData.dynamicBroadPhaseLayerIndex),s=new Jolt.BroadPhaseLayerInterfaceMask(2);s.ConfigureLayer(o,r.Physics3DSharedData.staticLayersMask,0),s.ConfigureLayer(i,r.Physics3DSharedData.dynamicLayersMask,0),Jolt.destroy(o),Jolt.destroy(i),t.mObjectLayerPairFilter=e,t.mBroadPhaseLayerInterface=s,t.mObjectVsBroadPhaseLayerFilter=new Jolt.ObjectVsBroadPhaseLayerFilterMask(s)}addToBehaviorsList(t){this._registeredBehaviors.add(t)}removeFromBehaviorsList(t){this._registeredBehaviors.delete(t)}step(t){for(const o of this._registeredBehaviors)o._contactsStartedThisFrame.length=0,o._contactsEndedThisFrame.length=0;for(const o of this._registeredBehaviors)o.updateBodyFromObject();for(const o of this._physics3DHooks)o.doBeforePhysicsStep(t);const e=t>1/55?2:1;this.jolt.Step(t,e),this.stepped=!0;for(const o of this._registeredBehaviors)o.updateObjectFromBody()}registerHook(t){this._physics3DHooks.push(t)}}b.staticLayersMask=15,b.dynamicLayersMask=240,b.allLayersMask=255,b.staticBroadPhaseLayerIndex=1,b.dynamicBroadPhaseLayerIndex=1,r.Physics3DSharedData=b,r.registerRuntimeSceneUnloadedCallback(function(u){const t=u.physics3DSharedData;t&&(Jolt.destroy(t.contactListener),Jolt.destroy(t._tempVec3),Jolt.destroy(t._tempRVec3),Jolt.destroy(t._tempQuat),Jolt.destroy(t.jolt),u.physics3DSharedData=null)});class _ extends r.RuntimeBehavior{constructor(t,e,o){super(t,e,o);this.shapeScale=1;this._contactsStartedThisFrame=[];this._contactsEndedThisFrame=[];this._currentContacts=[];this._destroyedDuringFrameLogic=!1;this._body=null;this._needToRecreateBody=!1;this._needToRecreateShape=!1;this._shapeHalfDepth=0;this._objectOldX=0;this._objectOldY=0;this._objectOldZ=0;this._objectOldRotationX=0;this._objectOldRotationY=0;this._objectOldRotationZ=0;this._objectOldWidth=0;this._objectOldHeight=0;this._objectOldDepth=0;this.bodyUpdater=new r.Physics3DRuntimeBehavior.DefaultBodyUpdater(this),this.collisionChecker=new r.Physics3DRuntimeBehavior.DefaultCollisionChecker(this),this.owner3D=o,this.bodyType=e.bodyType,this.bullet=e.bullet,this.fixedRotation=e.fixedRotation,this.shape=e.shape,this.shapeOrientation=e.shape==="Box"?"Z":e.shapeOrientation,this.shapeDimensionA=e.shapeDimensionA,this.shapeDimensionB=e.shapeDimensionB,this.shapeDimensionC=e.shapeDimensionC,this.density=e.density,this.friction=e.friction,this.restitution=e.restitution,this.linearDamping=Math.max(0,e.linearDamping),this.angularDamping=Math.max(0,e.angularDamping),this.gravityScale=e.gravityScale,this.layers=e.layers,this.masks=e.masks,this._sharedData=b.getSharedData(t.getScene(),e.name),this._sharedData.addToBehaviorsList(this)}getVec3(t,e,o){const i=this._sharedData._tempVec3;return i.Set(t,e,o),i}getRVec3(t,e,o){const i=this._sharedData._tempRVec3;return i.Set(t,e,o),i}getQuat(t,e,o,i){const s=this._sharedData._tempQuat;return s.Set(t,e,o,i),s}updateFromBehaviorData(t,e){return t.bullet!==e.bullet&&this.setBullet(e.bullet),t.fixedRotation!==e.fixedRotation&&this.setFixedRotation(e.fixedRotation),t.shapeDimensionA!==e.shapeDimensionA&&(this.shapeDimensionA=e.shapeDimensionA,this._needToRecreateShape=!0),t.shapeDimensionB!==e.shapeDimensionB&&(this.shapeDimensionB=e.shapeDimensionB,this._needToRecreateShape=!0),t.density!==e.density&&this.setDensity(e.density),t.friction!==e.friction&&this.setFriction(e.friction),t.restitution!==e.restitution&&this.setRestitution(e.restitution),t.linearDamping!==e.linearDamping&&this.setLinearDamping(e.linearDamping),t.angularDamping!==e.angularDamping&&this.setAngularDamping(e.angularDamping),t.gravityScale!==e.gravityScale&&this.setGravityScale(e.gravityScale),!(t.layers!==e.layers||t.masks!==e.masks||t.vertices!==e.vertices||t.bodyType!==e.bodyType||t.shape!==e.shape)}getNetworkSyncData(){let t;if(this._body){const e=this._body.GetPosition(),o=this._body.GetRotation(),i=this._body.GetLinearVelocity(),s=this._body.GetAngularVelocity();t={px:e.GetX(),py:e.GetY(),pz:e.GetZ(),rx:o.GetX(),ry:o.GetY(),rz:o.GetZ(),rw:o.GetW(),lvx:i.GetX(),lvy:i.GetY(),lvz:i.GetZ(),avx:s.GetX(),avy:s.GetY(),avz:s.GetZ(),aw:this._body.IsActive()}}else t={px:void 0,py:void 0,pz:void 0,rx:void 0,ry:void 0,rz:void 0,rw:void 0,lvx:void 0,lvy:void 0,lvz:void 0,avx:void 0,avy:void 0,avz:void 0,aw:void 0};return{...super.getNetworkSyncData(),props:{...t,layers:this.layers,masks:this.masks}}}updateFromNetworkSyncData(t){super.updateFromNetworkSyncData(t);const e=t.props;e.px!==void 0&&e.py!==void 0&&e.pz!==void 0&&this._body&&this._sharedData.bodyInterface.SetPosition(this._body.GetID(),this.getRVec3(e.px,e.py,e.pz),Jolt.EActivation_DontActivate),e.rx!==void 0&&e.ry!==void 0&&e.rz!==void 0&&e.rw!==void 0&&this._body&&this._sharedData.bodyInterface.SetRotation(this._body.GetID(),this.getQuat(e.rx,e.ry,e.rz,e.rw),Jolt.EActivation_DontActivate),e.lvx!==void 0&&e.lvy!==void 0&&e.lvz!==void 0&&this._body&&this._sharedData.bodyInterface.SetLinearVelocity(this._body.GetID(),this.getVec3(e.lvx,e.lvy,e.lvz)),e.avx!==void 0&&e.avy!==void 0&&e.avz!==void 0&&this._body&&this._sharedData.bodyInterface.SetAngularVelocity(this._body.GetID(),this.getVec3(e.avx,e.avy,e.avz)),e.layers!==void 0&&(this.layers=e.layers),e.masks!==void 0&&(this.masks=e.masks)}onDeActivate(){this._sharedData.removeFromBehaviorsList(this),this.bodyUpdater.destroyBody(),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0}onActivate(){this._sharedData.addToBehaviorsList(this),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0,this.updateBodyFromObject()}onDestroy(){this._destroyedDuringFrameLogic=!0,this.onDeActivate()}createShape(){let t=this.owner3D.getWidth()*this._sharedData.worldInvScale,e=this.owner3D.getHeight()*this._sharedData.worldInvScale,o=this.owner3D.getDepth()*this._sharedData.worldInvScale;if(this.shapeOrientation==="X"){const c=o;o=t,t=c}else if(this.shapeOrientation==="Y"){const c=o;o=e,e=c}const i=this.shapeScale*this._sharedData.worldInvScale,s=this.shapeDimensionA*i,a=this.shapeDimensionB*i,n=this.shapeDimensionC*i,h=this._sharedData.worldInvScale;let l,d;if(this.shape==="Box"){const c=s>0?s:t>0?t:h,f=a>0?a:e>0?e:h,g=n>0?n:o>0?o:h,m=Math.min(h,Math.min(c,f,g)/4);l=new Jolt.BoxShapeSettings(this.getVec3(c/2,f/2,g/2),m),d=this.getQuat(0,0,0,1),this._shapeHalfDepth=g/2}else if(this.shape==="Capsule"){const c=s>0?s:t>0?Math.sqrt(t*e)/2:h,f=a>0?a:o>0?o:h;l=new Jolt.CapsuleShapeSettings(Math.max(0,f/2-c),c),d=this._getShapeOrientationQuat(),this._shapeHalfDepth=this.shapeOrientation!=="Z"?c:f/2}else if(this.shape==="Cylinder"){const c=s>0?s:t>0?Math.sqrt(t*e)/2:h,f=a>0?a:o>0?o:h,g=Math.min(h,Math.min(f,c)/4);l=new Jolt.CylinderShapeSettings(f/2,c,g),d=this._getShapeOrientationQuat(),this._shapeHalfDepth=this.shapeOrientation!=="Z"?c:f/2}else{const c=s>0?s:t>0?Math.pow(t*e*o,1/3)/2:h;l=new Jolt.SphereShapeSettings(c),d=this.getQuat(0,0,0,1),this._shapeHalfDepth=c}l.mDensity=this.density;const y=new Jolt.RotatedTranslatedShapeSettings(this.getVec3(0,0,0),d,l),p=y.Create().Get();return Jolt.destroy(y),p}_getShapeOrientationQuat(){return this.shapeOrientation==="X"?this.getQuat(0,0,Math.sqrt(2)/2,-Math.sqrt(2)/2):this.shapeOrientation==="Y"?this.getQuat(0,0,0,1):this.getQuat(Math.sqrt(2)/2,0,0,Math.sqrt(2)/2)}_recreateShape(){this.bodyUpdater.recreateShape(),this._objectOldWidth=this.owner3D.getWidth(),this._objectOldHeight=this.owner3D.getHeight(),this._objectOldDepth=this.owner3D.getDepth()}getShapeScale(){return this.shapeScale}setShapeScale(t){t!==this.shapeScale&&t>0&&(this.shapeScale=t,this._needToRecreateShape=!0)}getBody(){return this._body===null&&this._createBody(),this._body}_createBody(){return this._needToRecreateBody=!1,this._needToRecreateShape=!1,!this.activated()||this._destroyedDuringFrameLogic||(this._body=this.bodyUpdater.createAndAddBody(),!this._body)?!1:(this._body.gdjsAssociatedBehavior=this,this._objectOldWidth=this.owner3D.getWidth(),this._objectOldHeight=this.owner3D.getHeight(),this._objectOldDepth=this.owner3D.getDepth(),!0)}getBodyLayer(){return Jolt.ObjectLayerPairFilterMask.prototype.sGetObjectLayer(this.getLayersAccordingToBodyType(),this.getMasksAccordingToBodyType())}getLayersAccordingToBodyType(){return this.isStatic()?this.layers&r.Physics3DSharedData.staticLayersMask:this.layers&r.Physics3DSharedData.dynamicLayersMask}getMasksAccordingToBodyType(){return this.isStatic()?r.Physics3DSharedData.allLayersMask:this.masks}doStepPreEvents(t){!this._sharedData.stepped&&!t.getScene().getTimeManager().isFirstFrame()&&this._sharedData.step(t.getScene().getTimeManager().getElapsedTime()/1e3)}doStepPostEvents(t){this._sharedData.stepped=!1}onObjectHotReloaded(){this.updateBodyFromObject()}recreateBody(){if(!this._body){this._createBody();return}const t=this._sharedData.bodyInterface,e=this._body.GetLinearVelocity(),o=e.GetX(),i=e.GetY(),s=e.GetZ(),a=this._body.GetAngularVelocity(),n=a.GetX(),h=a.GetY(),l=a.GetZ();let d=this._body.GetID();t.RemoveBody(d),t.DestroyBody(d),this._contactsEndedThisFrame.length=0,this._contactsStartedThisFrame.length=0,this._currentContacts.length=0,this._createBody(),!!this._body&&(d=this._body.GetID(),t.SetLinearVelocity(d,this.getVec3(o,i,s)),t.SetAngularVelocity(d,this.getVec3(n,h,l)))}updateObjectFromBody(){this.bodyUpdater.updateObjectFromBody(),this._objectOldX=this.owner3D.getX(),this._objectOldY=this.owner3D.getY(),this._objectOldZ=this.owner3D.getZ(),this._objectOldRotationX=this.owner3D.getRotationX(),this._objectOldRotationY=this.owner3D.getRotationY(),this._objectOldRotationZ=this.owner3D.getAngle()}updateBodyFromObject(){this._body===null&&!this._createBody()||(this._needToRecreateBody&&this.recreateBody(),(this._needToRecreateShape||!this.hasCustomShapeDimension()&&(this._objectOldWidth!==this.owner3D.getWidth()||this._objectOldHeight!==this.owner3D.getHeight()||this._objectOldDepth!==this.owner3D.getDepth()))&&(this._needToRecreateShape=!1,this._recreateShape()),this.bodyUpdater.updateBodyFromObject())}hasCustomShapeDimension(){return this.shapeDimensionA>0||this.shapeDimensionB>0||this.shapeDimensionC>0}getPhysicsPosition(t){return t.Set(this.owner3D.getCenterXInScene()*this._sharedData.worldInvScale,this.owner3D.getCenterYInScene()*this._sharedData.worldInvScale,this.owner3D.getCenterZInScene()*this._sharedData.worldInvScale),t}getPhysicsRotation(t){const e=this.owner3D.get3DRendererObject();return t.Set(e.quaternion.x,e.quaternion.y,e.quaternion.z,e.quaternion.w),t}moveObjectToPhysicsPosition(t){this.owner3D.setCenterXInScene(t.GetX()*this._sharedData.worldScale),this.owner3D.setCenterYInScene(t.GetY()*this._sharedData.worldScale),this.owner3D.setCenterZInScene(t.GetZ()*this._sharedData.worldScale)}moveObjectToPhysicsRotation(t){const e=this.owner3D.get3DRendererObject();e.quaternion.x=t.GetX(),e.quaternion.y=t.GetY(),e.quaternion.z=t.GetZ(),e.quaternion.w=t.GetW();const o=new THREE.Euler(0,0,0,"ZYX");o.setFromQuaternion(e.quaternion),this.owner3D.setRotationX(r.toDegrees(o.x)),this.owner3D.setRotationY(r.toDegrees(o.y)),this.owner3D.setAngle(r.toDegrees(o.z))}getWorldScale(){return this._sharedData.worldScale}getGravityX(){return this._sharedData.gravityX}getGravityY(){return this._sharedData.gravityY}getGravityZ(){return this._sharedData.gravityZ}setGravityX(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityX=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}setGravityY(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityX=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}setGravityZ(t){this._sharedData.gravityX!==t&&(this._sharedData.gravityZ=t,this._sharedData.physicsSystem.SetGravity(this.getVec3(this._sharedData.gravityX,this._sharedData.gravityY,this._sharedData.gravityZ)))}isDynamic(){return this.bodyType==="Dynamic"}isStatic(){return this.bodyType==="Static"}isKinematic(){return this.bodyType==="Kinematic"}isBullet(){return this.bullet}setBullet(t){if(this.bullet===t||(this.bullet=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetMotionQuality(e.GetID(),this.bullet?Jolt.EMotionQuality_LinearCast:Jolt.EMotionQuality_Discrete)}hasFixedRotation(){return this.fixedRotation}setFixedRotation(t){this.fixedRotation!==t&&(this.fixedRotation=t,this._needToRecreateBody=!0)}getDensity(){return this.density}setDensity(t){t<0&&(t=0),this.density!==t&&(this.density=t,this._needToRecreateShape=!0)}getFriction(){return this.friction}setFriction(t){if(t<0&&(t=0),this.friction===t||(this.friction=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetFriction(e.GetID(),t)}getRestitution(){return this.restitution}setRestitution(t){if(t<0&&(t=0),this.restitution===t||(this.restitution=t,this._body===null&&!this._createBody()))return;const e=this._body;this._sharedData.bodyInterface.SetRestitution(e.GetID(),t)}getLinearDamping(){return this.linearDamping}setLinearDamping(t){if(t<0&&(t=0),this.linearDamping===t||(this.linearDamping=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetLinearDamping(t)}getAngularDamping(){return this.angularDamping}setAngularDamping(t){if(t<0&&(t=0),this.angularDamping===t||(this.angularDamping=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetAngularDamping(t)}getGravityScale(){return this.gravityScale}setGravityScale(t){if(this.gravityScale===t||(this.gravityScale=t,this._body===null&&!this._createBody()))return;this._body.GetMotionProperties().SetGravityFactor(t)}layerEnabled(t){return t=Math.floor(t),t<1||t>8?!1:!!(this.layers&1<<t-1)}enableLayer(t,e){t=Math.floor(t),!(t<1||t>8)&&(e?this.layers|=1<<t-1:this.layers&=~(1<<t-1),this._needToRecreateBody=!0)}maskEnabled(t){return t=Math.floor(t),t<1||t>16?!1:!!(this.masks&1<<t-1)}enableMask(t,e){t=Math.floor(t),!(t<1||t>16)&&(e?this.masks|=1<<t-1:this.masks&=~(1<<t-1),this._needToRecreateBody=!0)}getLinearVelocityX(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetX()*this._sharedData.worldScale}setLinearVelocityX(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(t*this._sharedData.worldInvScale,e.GetLinearVelocity().GetY(),e.GetLinearVelocity().GetZ()))}getLinearVelocityY(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetY()*this._sharedData.worldScale}setLinearVelocityY(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(e.GetLinearVelocity().GetX(),t*this._sharedData.worldInvScale,e.GetLinearVelocity().GetZ()))}getLinearVelocityZ(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().GetZ()*this._sharedData.worldScale}setLinearVelocityZ(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetLinearVelocity(e.GetID(),this.getVec3(e.GetLinearVelocity().GetX(),e.GetLinearVelocity().GetY(),t*this._sharedData.worldInvScale))}getLinearVelocityLength(){return this._body===null&&!this._createBody()?0:this._body.GetLinearVelocity().Length()*this._sharedData.worldScale}getAngularVelocityX(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return r.toDegrees(t.GetAngularVelocity().GetX())}setAngularVelocityX(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(r.toRad(t),e.GetAngularVelocity().GetY(),e.GetAngularVelocity().GetZ()))}getAngularVelocityY(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return r.toDegrees(t.GetAngularVelocity().GetY())}setAngularVelocityY(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(e.GetAngularVelocity().GetX(),r.toRad(t),e.GetAngularVelocity().GetZ()))}getAngularVelocityZ(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return r.toDegrees(t.GetAngularVelocity().GetZ())}setAngularVelocityZ(t){if(this._body===null&&!this._createBody())return;const e=this._body;this._sharedData.bodyInterface.SetAngularVelocity(e.GetID(),this.getVec3(e.GetAngularVelocity().GetX(),e.GetAngularVelocity().GetY(),r.toRad(t)))}applyForce(t,e,o,i,s,a){if(this._body===null&&!this._createBody())return;const n=this._body;this._sharedData.bodyInterface.AddForce(n.GetID(),this.getVec3(t,e,o),this.getRVec3(i*this._sharedData.worldInvScale,s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale),Jolt.EActivation_Activate)}applyForceAtCenter(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddForce(i.GetID(),this.getVec3(t,e,o),Jolt.EActivation_Activate)}applyForceTowardPosition(t,e,o,i){if(this._body===null&&!this._createBody())return;const s=this._body,a=e-s.GetPosition().GetX(),n=o-s.GetPosition().GetY(),h=i-s.GetPosition().GetZ(),l=a*a+n*n+h*h;if(l===0)return;const d=t/Math.sqrt(l);this._sharedData.bodyInterface.AddForce(s.GetID(),this.getVec3(a*d,n*d,h*d),Jolt.EActivation_Activate)}applyImpulse(t,e,o,i,s,a){if(this._body===null&&!this._createBody())return;const n=this._body;this._sharedData.bodyInterface.AddImpulse(n.GetID(),this.getVec3(t,e,o),this.getRVec3(i*this._sharedData.worldInvScale,s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale))}applyImpulseAtCenter(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddImpulse(i.GetID(),this.getVec3(t,e,o))}applyImpulseTowardPosition(t,e,o,i,s,a,n){if(this._body===null&&!this._createBody())return;const h=this._body,l=e-s,d=o-a,y=i-n,p=l*l+d*d+y*y;if(p===0)return;const c=t/Math.sqrt(p);this._sharedData.bodyInterface.AddImpulse(h.GetID(),this.getVec3(l*c,d*c,y*c),this.getRVec3(s*this._sharedData.worldInvScale,a*this._sharedData.worldInvScale,n*this._sharedData.worldInvScale))}applyTorque(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddTorque(i.GetID(),this.getVec3(r.toRad(t),r.toRad(e),r.toRad(o)),Jolt.EActivation_Activate)}applyAngularImpulse(t,e,o){if(this._body===null&&!this._createBody())return;const i=this._body;this._sharedData.bodyInterface.AddAngularImpulse(i.GetID(),this.getVec3(r.toRad(t),r.toRad(e),r.toRad(o)))}getMass(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseMass()}getInertiaAroundX(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetX()}getInertiaAroundY(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetY()}getInertiaAroundZ(){if(this._body===null&&!this._createBody())return 0;const t=this._body;return 1/t.GetMotionProperties().GetInverseInertiaDiagonal().GetZ()}getMassCenterX(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetX()*this._sharedData.worldScale}getMassCenterY(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetY()*this._sharedData.worldScale}getMassCenterZ(){return this._body===null&&!this._createBody()?0:this._body.GetCenterOfMassPosition().GetZ()*this._sharedData.worldScale}onContactBegin(t){this._currentContacts.push(t);let e=this._contactsEndedThisFrame.indexOf(t);e!==-1?this._contactsEndedThisFrame.splice(e,1):this._contactsStartedThisFrame.push(t)}onContactEnd(t){this._contactsEndedThisFrame.push(t);const e=this._currentContacts.indexOf(t);e!==-1&&this._currentContacts.splice(e,1)}canCollideAgainst(t){return(this.getMasksAccordingToBodyType()&t.getLayersAccordingToBodyType())!=0}static areObjectsColliding(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.isColliding(e):!1}static hasCollisionStartedBetween(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.hasCollisionStartedWith(e):!1}static hasCollisionStoppedBetween(t,e,o){const i=t.getBehavior(o);return i?i.collisionChecker.hasCollisionStoppedWith(e):!1}}r.Physics3DRuntimeBehavior=_,r.registerBehavior("Physics3D::Physics3DBehavior",r.Physics3DRuntimeBehavior),function(e){class u{constructor(i){this.behavior=i}createAndAddBody(){const{behavior:i}=this,{_sharedData:s}=i,a=i.createShape(),n=new Jolt.BodyCreationSettings(a,i.getPhysicsPosition(s.getRVec3(0,0,0)),i.getPhysicsRotation(s.getQuat(0,0,0,1)),i.bodyType==="Static"?Jolt.EMotionType_Static:i.bodyType==="Kinematic"?Jolt.EMotionType_Kinematic:Jolt.EMotionType_Dynamic,i.getBodyLayer());n.mMotionQuality=i.bullet?Jolt.EMotionQuality_LinearCast:Jolt.EMotionQuality_Discrete,n.mAllowedDOFs=i.fixedRotation?Jolt.EAllowedDOFs_TranslationX|Jolt.EAllowedDOFs_TranslationY|Jolt.EAllowedDOFs_TranslationZ:Jolt.EAllowedDOFs_All,n.mFriction=i.friction,n.mRestitution=i.restitution,n.mLinearDamping=i.linearDamping,n.mAngularDamping=i.angularDamping,n.mGravityFactor=i.gravityScale;const h=s.bodyInterface,l=h.CreateBody(n);return Jolt.destroy(n),h.AddBody(l.GetID(),Jolt.EActivation_Activate),l}updateObjectFromBody(){const{behavior:i}=this,{_body:s}=i;s!==null&&s.IsActive()&&(i.moveObjectToPhysicsPosition(s.GetPosition()),i.moveObjectToPhysicsRotation(s.GetRotation()))}updateBodyFromObject(){const{behavior:i}=this,{owner3D:s,_sharedData:a}=i;if(i._body===null&&!i._createBody())return;const n=i._body;(this.behavior._objectOldX!==s.getX()||this.behavior._objectOldY!==s.getY()||this.behavior._objectOldZ!==s.getZ()||this.behavior._objectOldRotationX!==s.getRotationX()||this.behavior._objectOldRotationY!==s.getRotationY()||this.behavior._objectOldRotationZ!==s.getAngle())&&a.bodyInterface.SetPositionAndRotationWhenChanged(n.GetID(),this.behavior.getPhysicsPosition(a.getRVec3(0,0,0)),this.behavior.getPhysicsRotation(a.getQuat(0,0,0,1)),Jolt.EActivation_Activate)}recreateShape(){const{behavior:i}=this,{_sharedData:s}=i;if(i._body===null&&!i._createBody())return;const a=i._body;s.bodyInterface.SetShape(a.GetID(),i.createShape(),!0,Jolt.EActivation_Activate)}destroyBody(){const{behavior:i}=this,{_sharedData:s}=i;i._body!==null&&(s.bodyInterface.RemoveBody(i._body.GetID()),s.bodyInterface.DestroyBody(i._body.GetID()),i._body=null)}}e.DefaultBodyUpdater=u;class t{constructor(i){this.behavior=i}isColliding(i){return this.behavior._currentContacts.some(s=>s.owner===i)?!0:this.behavior._contactsStartedThisFrame.some(s=>s.owner===i)}hasCollisionStartedWith(i){return this.behavior._contactsStartedThisFrame.some(s=>s.owner===i)}hasCollisionStoppedWith(i){return this.behavior._contactsEndedThisFrame.some(s=>s.owner===i)}}e.DefaultCollisionChecker=t}(_=r.Physics3DRuntimeBehavior||(r.Physics3DRuntimeBehavior={}))})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=Physics3DRuntimeBehavior.js.map
|