gdcore-tools 2.0.0-gd-v5.5.232-autobuild → 2.0.0-gd-v5.5.234-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/Extensions/3D/Cube3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/3D/DirectionalLight.js +1 -1
- package/dist/Runtime/Extensions/3D/DirectionalLight.js.map +2 -2
- package/dist/Runtime/Extensions/3D/JsExtension.js +60 -9
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject.js.map +2 -2
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js +1 -1
- package/dist/Runtime/Extensions/3D/Model3DRuntimeObject3DRenderer.js.map +2 -2
- package/dist/Runtime/Extensions/BBText/JsExtension.js +6 -6
- package/dist/Runtime/Extensions/BitmapText/JsExtension.js +6 -6
- package/dist/Runtime/Extensions/Physics2Behavior/JsExtension.js +10 -10
- package/dist/Runtime/Extensions/Physics3DBehavior/JsExtension.js +20 -7
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/Physics3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js +1 -1
- package/dist/Runtime/Extensions/Physics3DBehavior/PhysicsCar3DRuntimeBehavior.js.map +2 -2
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js +1 -1
- package/dist/Runtime/Extensions/PlatformBehavior/platformerobjectruntimebehavior.js.map +2 -2
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js +1 -1
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-atlas-manager.js.map +2 -2
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js +1 -1
- package/dist/Runtime/Extensions/Spine/managers/pixi-spine-manager.js.map +2 -2
- package/dist/Runtime/Extensions/TextInput/JsExtension.js +11 -11
- package/dist/Runtime/Extensions/TileMap/JsExtension.js +3 -3
- package/dist/Runtime/Model3DManager.js +1 -1
- package/dist/Runtime/Model3DManager.js.map +2 -2
- package/dist/Runtime/ResourceLoader.js +1 -1
- package/dist/Runtime/ResourceLoader.js.map +2 -2
- package/dist/Runtime/RuntimeLayer.js +1 -1
- package/dist/Runtime/RuntimeLayer.js.map +2 -2
- package/dist/Runtime/events-tools/objecttools.js +1 -1
- package/dist/Runtime/events-tools/objecttools.js.map +2 -2
- package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js +1 -1
- package/dist/Runtime/fontfaceobserver-font-manager/fontfaceobserver-font-manager.js.map +2 -2
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js +1 -1
- package/dist/Runtime/howler-sound-manager/howler-sound-manager.js.map +2 -2
- package/dist/Runtime/jsonmanager.js +1 -1
- package/dist/Runtime/jsonmanager.js.map +2 -2
- package/dist/Runtime/logger.js +1 -1
- package/dist/Runtime/logger.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-bitmapfont-manager.js +1 -1
- package/dist/Runtime/pixi-renderers/pixi-bitmapfont-manager.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-effects-manager.js.map +2 -2
- package/dist/Runtime/pixi-renderers/pixi-image-manager.js +1 -1
- package/dist/Runtime/pixi-renderers/pixi-image-manager.js.map +2 -2
- package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js +1 -1
- package/dist/Runtime/pixi-renderers/runtimegame-pixi-renderer.js.map +2 -2
- package/dist/Runtime/runtimegame.js +1 -1
- package/dist/Runtime/runtimegame.js.map +2 -2
- package/dist/Runtime/runtimescene.js +1 -1
- package/dist/Runtime/runtimescene.js.map +2 -2
- package/dist/Runtime/scenestack.js +1 -1
- package/dist/Runtime/scenestack.js.map +2 -2
- package/dist/Runtime/types/project-data.d.ts +6 -1
- package/dist/lib/libGD.cjs +1 -1
- package/dist/lib/libGD.wasm +0 -0
- package/gd.d.ts +21 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(n){const i={front:0,back:1,left:2,right:3,top:4,bottom:5};class
|
|
1
|
+
var gdjs;(function(n){const i={front:0,back:1,left:2,right:3,top:4,bottom:5};class r extends n.RuntimeObject3D{constructor(t,e){super(t,e);this._materialType=n.Cube3DRuntimeObject.MaterialType.StandardWithoutMetalness;this._isCastingShadow=!0;this._isReceivingShadow=!0;this._shouldUseTransparentTexture=e.content.enableTextureTransparency||!1,this._facesOrientation=e.content.facesOrientation||"Y",this._visibleFacesBitmask=0,e.content.frontFaceVisible&&(this._visibleFacesBitmask|=1<<i.front),e.content.backFaceVisible&&(this._visibleFacesBitmask|=1<<i.back),e.content.leftFaceVisible&&(this._visibleFacesBitmask|=1<<i.left),e.content.rightFaceVisible&&(this._visibleFacesBitmask|=1<<i.right),e.content.topFaceVisible&&(this._visibleFacesBitmask|=1<<i.top),e.content.bottomFaceVisible&&(this._visibleFacesBitmask|=1<<i.bottom),this._textureRepeatFacesBitmask=0,e.content.frontFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.front),e.content.backFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.back),e.content.leftFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.left),e.content.rightFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.right),e.content.topFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.top),e.content.bottomFaceResourceRepeat&&(this._textureRepeatFacesBitmask|=1<<i.bottom),this._backFaceUpThroughWhichAxisRotation=e.content.backFaceUpThroughWhichAxisRotation||"X",this._faceResourceNames=[e.content.frontFaceResourceName,e.content.backFaceResourceName,e.content.leftFaceResourceName,e.content.rightFaceResourceName,e.content.topFaceResourceName,e.content.bottomFaceResourceName],this._tint=e.content.tint||"255;255;255",this._isCastingShadow=e.content.isCastingShadow||!1,this._isReceivingShadow=e.content.isReceivingShadow||!1,this._materialType=this._convertMaterialType(e.content.materialType),this._renderer=new n.Cube3DRuntimeObjectRenderer(this,t),this.onCreated()}setFaceVisibility(t,e){const s=i[t];s!==void 0&&e!==this.isFaceAtIndexVisible(s)&&(e?this._visibleFacesBitmask|=1<<s:this._visibleFacesBitmask&=~(1<<s),this._renderer.updateFace(s))}setRepeatTextureOnFace(t,e){const s=i[t];s!==void 0&&e!==this.shouldRepeatTextureOnFaceAtIndex(s)&&(e?this._textureRepeatFacesBitmask|=1<<s:this._textureRepeatFacesBitmask&=~(1<<s),this._renderer.updateFace(s))}isFaceVisible(t){const e=i[t];return e===void 0?!1:this.isFaceAtIndexVisible(e)}isFaceAtIndexVisible(t){return(this._visibleFacesBitmask&1<<t)!=0}shouldRepeatTextureOnFaceAtIndex(t){return(this._textureRepeatFacesBitmask&1<<t)!=0}setFaceResourceName(t,e){const s=i[t];s!==void 0&&this._faceResourceNames[s]!==e&&(this._faceResourceNames[s]=e,this._renderer.updateFace(s))}setColor(t){this._tint!==t&&(this._tint=t,this._renderer.updateTint())}getColor(){return this._tint}getFaceAtIndexResourceName(t){return this._faceResourceNames[t]}getRenderer(){return this._renderer}getBackFaceUpThroughWhichAxisRotation(){return this._backFaceUpThroughWhichAxisRotation}setBackFaceUpThroughWhichAxisRotation(t){this._backFaceUpThroughWhichAxisRotation=t,this._renderer.updateFace(i.back)}getFacesOrientation(){return this._facesOrientation}setFacesOrientation(t){this._facesOrientation=t,this._renderer.updateFace(i.left),this._renderer.updateFace(i.right),this._renderer.updateFace(i.top)}updateFromObjectData(t,e){return super.updateFromObjectData(t,e),t.content.frontFaceVisible!==e.content.frontFaceVisible&&this.setFaceVisibility("front",e.content.frontFaceVisible),t.content.backFaceVisible!==e.content.backFaceVisible&&this.setFaceVisibility("back",e.content.backFaceVisible),t.content.leftFaceVisible!==e.content.leftFaceVisible&&this.setFaceVisibility("left",e.content.leftFaceVisible),t.content.rightFaceVisible!==e.content.rightFaceVisible&&this.setFaceVisibility("right",e.content.rightFaceVisible),t.content.topFaceVisible!==e.content.topFaceVisible&&this.setFaceVisibility("top",e.content.topFaceVisible),t.content.bottomFaceVisible!==e.content.bottomFaceVisible&&this.setFaceVisibility("bottom",e.content.bottomFaceVisible),t.content.frontFaceResourceName!==e.content.frontFaceResourceName&&this.setFaceResourceName("front",e.content.frontFaceResourceName),t.content.tint!==e.content.tint&&this.setColor(e.content.tint||"255;255;255"),t.content.backFaceResourceName!==e.content.backFaceResourceName&&this.setFaceResourceName("back",e.content.backFaceResourceName),t.content.leftFaceResourceName!==e.content.leftFaceResourceName&&this.setFaceResourceName("left",e.content.leftFaceResourceName),t.content.rightFaceResourceName!==e.content.rightFaceResourceName&&this.setFaceResourceName("right",e.content.rightFaceResourceName),t.content.topFaceResourceName!==e.content.topFaceResourceName&&this.setFaceResourceName("top",e.content.topFaceResourceName),t.content.bottomFaceResourceName!==e.content.bottomFaceResourceName&&this.setFaceResourceName("bottom",e.content.bottomFaceResourceName),t.content.frontFaceResourceRepeat!==e.content.frontFaceResourceRepeat&&this.setRepeatTextureOnFace("front",e.content.frontFaceResourceRepeat||!1),t.content.backFaceResourceRepeat!==e.content.backFaceResourceRepeat&&this.setRepeatTextureOnFace("back",e.content.backFaceResourceRepeat||!1),t.content.leftFaceResourceRepeat!==e.content.leftFaceResourceRepeat&&this.setRepeatTextureOnFace("left",e.content.leftFaceResourceRepeat||!1),t.content.rightFaceResourceRepeat!==e.content.rightFaceResourceRepeat&&this.setRepeatTextureOnFace("right",e.content.rightFaceResourceRepeat||!1),t.content.topFaceResourceRepeat!==e.content.topFaceResourceRepeat&&this.setRepeatTextureOnFace("top",e.content.topFaceResourceRepeat||!1),t.content.bottomFaceResourceRepeat!==e.content.bottomFaceResourceRepeat&&this.setRepeatTextureOnFace("bottom",e.content.bottomFaceResourceRepeat||!1),t.content.backFaceUpThroughWhichAxisRotation!==e.content.backFaceUpThroughWhichAxisRotation&&this.setBackFaceUpThroughWhichAxisRotation(e.content.backFaceUpThroughWhichAxisRotation||"X"),t.content.facesOrientation!==e.content.facesOrientation&&this.setFacesOrientation(e.content.facesOrientation||"Y"),t.content.materialType!==e.content.materialType&&this.setMaterialType(e.content.materialType),t.content.isCastingShadow!==e.content.isCastingShadow&&this.updateShadowCasting(e.content.isCastingShadow),t.content.isReceivingShadow!==e.content.isReceivingShadow&&this.updateShadowReceiving(e.content.isReceivingShadow),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),mt:this._materialType,fo:this._facesOrientation,bfu:this._backFaceUpThroughWhichAxisRotation,vfb:this._visibleFacesBitmask,trfb:this._textureRepeatFacesBitmask,frn:this._faceResourceNames,tint:this._tint}}updateFromNetworkSyncData(t){if(super.updateFromNetworkSyncData(t),t.mt!==void 0&&(this._materialType=t.mt),t.fo!==void 0&&this._facesOrientation!==t.fo&&this.setFacesOrientation(t.fo),t.bfu!==void 0&&this._backFaceUpThroughWhichAxisRotation!==t.bfu&&this.setBackFaceUpThroughWhichAxisRotation(t.bfu),t.vfb!==void 0&&this._visibleFacesBitmask!==t.vfb){this._visibleFacesBitmask=t.vfb;for(let e=0;e<this._faceResourceNames.length;e++)this._renderer.updateFace(e)}if(t.trfb!==void 0&&this._textureRepeatFacesBitmask!==t.trfb){this._textureRepeatFacesBitmask=t.trfb;for(let e=0;e<this._faceResourceNames.length;e++)this._renderer.updateFace(e)}if(t.frn!==void 0&&!this._faceResourceNames.every((e,s)=>e===t.frn[s])){this._faceResourceNames=t.frn;for(let e=0;e<this._faceResourceNames.length;e++)this._renderer.updateFace(e)}t.tint!==void 0&&this._tint!==t.tint&&(this._tint=t.tint,this._renderer.updateTint())}shouldUseTransparentTexture(){return this._shouldUseTransparentTexture}_convertMaterialType(t){return t==="StandardWithoutMetalness"?n.Cube3DRuntimeObject.MaterialType.StandardWithoutMetalness:n.Cube3DRuntimeObject.MaterialType.Basic}setMaterialType(t){const e=this._convertMaterialType(t);this._materialType!==e&&(this._materialType=e,this._renderer._updateMaterials())}updateShadowCasting(t){this._isCastingShadow=t,this._renderer.updateShadowCasting()}updateShadowReceiving(t){this._isReceivingShadow=t,this._renderer.updateShadowReceiving()}}n.Cube3DRuntimeObject=r,function(t){let a;(function(o){o[o.Basic=0]="Basic",o[o.StandardWithoutMetalness=1]="StandardWithoutMetalness"})(a=t.MaterialType||(t.MaterialType={}))}(r=n.Cube3DRuntimeObject||(n.Cube3DRuntimeObject={})),n.registerObject("Scene3D::Cube3DObject",n.Cube3DRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=Cube3DRuntimeObject.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/3D/Cube3DRuntimeObject.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.Cube3DRuntimeObject} */\n export interface Cube3DObjectData extends Object3DData {\n /** The base parameters of the Cube3D object */\n content: Object3DDataContent & {\n enableTextureTransparency: boolean | undefined;\n facesOrientation: 'Y' | 'Z' | undefined;\n frontFaceResourceName: string;\n backFaceResourceName: string;\n backFaceUpThroughWhichAxisRotation: 'X' | 'Y' | undefined;\n leftFaceResourceName: string;\n rightFaceResourceName: string;\n topFaceResourceName: string;\n bottomFaceResourceName: string;\n frontFaceResourceRepeat: boolean | undefined;\n backFaceResourceRepeat: boolean | undefined;\n leftFaceResourceRepeat: boolean | undefined;\n rightFaceResourceRepeat: boolean | undefined;\n topFaceResourceRepeat: boolean | undefined;\n bottomFaceResourceRepeat: boolean | undefined;\n frontFaceVisible: boolean;\n backFaceVisible: boolean;\n leftFaceVisible: boolean;\n rightFaceVisible: boolean;\n topFaceVisible: boolean;\n bottomFaceVisible: boolean;\n tint: string | undefined;\n materialType: 'Basic' | 'StandardWithoutMetalness';\n };\n }\n type FaceName = 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';\n const faceNameToBitmaskIndex = {\n front: 0,\n back: 1,\n left: 2,\n right: 3,\n top: 4,\n bottom: 5,\n };\n\n type Cube3DObjectNetworkSyncDataType = {\n fo: 'Y' | 'Z';\n bfu: 'X' | 'Y';\n vfb: integer;\n trfb: integer;\n frn: [string, string, string, string, string, string];\n mt: number;\n tint: string;\n };\n\n type Cube3DObjectNetworkSyncData = Object3DNetworkSyncData &\n Cube3DObjectNetworkSyncDataType;\n\n /**\n * Shows a 3D box object.\n */\n export class Cube3DRuntimeObject extends gdjs.RuntimeObject3D {\n private _renderer: Cube3DRuntimeObjectRenderer;\n private _facesOrientation: 'Y' | 'Z';\n private _backFaceUpThroughWhichAxisRotation: 'X' | 'Y';\n private _shouldUseTransparentTexture: boolean;\n // `_rotationZ` is `angle` from `gdjs.RuntimeObject`.\n private _visibleFacesBitmask: integer;\n private _textureRepeatFacesBitmask: integer;\n private _faceResourceNames: [\n string,\n string,\n string,\n string,\n string,\n string,\n ];\n _materialType: gdjs.Cube3DRuntimeObject.MaterialType =\n gdjs.Cube3DRuntimeObject.MaterialType.Basic;\n _tint: string;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: Cube3DObjectData\n ) {\n super(instanceContainer, objectData);\n this._shouldUseTransparentTexture =\n objectData.content.enableTextureTransparency || false;\n this._facesOrientation = objectData.content.facesOrientation || 'Y';\n this._visibleFacesBitmask = 0;\n if (objectData.content.frontFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['front'];\n if (objectData.content.backFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['back'];\n if (objectData.content.leftFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['left'];\n if (objectData.content.rightFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['right'];\n if (objectData.content.topFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['top'];\n if (objectData.content.bottomFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['bottom'];\n this._textureRepeatFacesBitmask = 0;\n if (objectData.content.frontFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['front'];\n if (objectData.content.backFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['back'];\n if (objectData.content.leftFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['left'];\n if (objectData.content.rightFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['right'];\n if (objectData.content.topFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['top'];\n if (objectData.content.bottomFaceResourceRepeat)\n this._textureRepeatFacesBitmask |=\n 1 << faceNameToBitmaskIndex['bottom'];\n this._backFaceUpThroughWhichAxisRotation =\n objectData.content.backFaceUpThroughWhichAxisRotation || 'X';\n this._faceResourceNames = [\n objectData.content.frontFaceResourceName,\n objectData.content.backFaceResourceName,\n objectData.content.leftFaceResourceName,\n objectData.content.rightFaceResourceName,\n objectData.content.topFaceResourceName,\n objectData.content.bottomFaceResourceName,\n ];\n\n this._tint = objectData.content.tint || '255;255;255';\n\n this._materialType = this._convertMaterialType(\n objectData.content.materialType\n );\n\n this._renderer = new gdjs.Cube3DRuntimeObjectRenderer(\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 /**\n * Sets the visibility of a face of the 3D box.\n *\n * @param faceName - The name of the face to set visibility for.\n * @param enable - The visibility value to set.\n */\n setFaceVisibility(faceName: FaceName, enable: boolean) {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (enable === this.isFaceAtIndexVisible(faceIndex)) {\n return;\n }\n\n if (enable) {\n this._visibleFacesBitmask |= 1 << faceIndex;\n } else {\n this._visibleFacesBitmask &= ~(1 << faceIndex);\n }\n this._renderer.updateFace(faceIndex);\n }\n\n /**\n * Sets the texture repeat of a face of the 3D box.\n *\n * @param faceName - The name of the face to set visibility for.\n * @param enable - The visibility value to set.\n */\n setRepeatTextureOnFace(faceName: FaceName, enable: boolean) {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (enable === this.shouldRepeatTextureOnFaceAtIndex(faceIndex)) {\n return;\n }\n\n if (enable) {\n this._textureRepeatFacesBitmask |= 1 << faceIndex;\n } else {\n this._textureRepeatFacesBitmask &= ~(1 << faceIndex);\n }\n this._renderer.updateFace(faceIndex);\n }\n\n isFaceVisible(faceName: FaceName): boolean {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return false;\n }\n\n return this.isFaceAtIndexVisible(faceIndex);\n }\n\n /** @internal */\n isFaceAtIndexVisible(faceIndex): boolean {\n return (this._visibleFacesBitmask & (1 << faceIndex)) !== 0;\n }\n\n /** @internal */\n shouldRepeatTextureOnFaceAtIndex(faceIndex): boolean {\n return (this._textureRepeatFacesBitmask & (1 << faceIndex)) !== 0;\n }\n\n setFaceResourceName(faceName: FaceName, resourceName: string): void {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (this._faceResourceNames[faceIndex] === resourceName) {\n return;\n }\n this._faceResourceNames[faceIndex] = resourceName;\n this._renderer.updateFace(faceIndex);\n }\n\n setColor(tint: string): void {\n if (this._tint === tint) {\n return;\n }\n this._tint = tint;\n this._renderer.updateTint();\n }\n\n getColor(): string {\n return this._tint;\n }\n\n /** @internal */\n getFaceAtIndexResourceName(faceIndex: integer): string {\n return this._faceResourceNames[faceIndex];\n }\n\n getRenderer(): gdjs.RuntimeObject3DRenderer {\n return this._renderer;\n }\n\n getBackFaceUpThroughWhichAxisRotation(): 'X' | 'Y' {\n return this._backFaceUpThroughWhichAxisRotation;\n }\n\n setBackFaceUpThroughWhichAxisRotation(axis: 'X' | 'Y'): void {\n this._backFaceUpThroughWhichAxisRotation = axis;\n this._renderer.updateFace(faceNameToBitmaskIndex['back']);\n }\n\n getFacesOrientation(): 'Y' | 'Z' {\n return this._facesOrientation;\n }\n\n setFacesOrientation(orientation: 'Y' | 'Z'): void {\n this._facesOrientation = orientation;\n this._renderer.updateFace(faceNameToBitmaskIndex['left']);\n this._renderer.updateFace(faceNameToBitmaskIndex['right']);\n this._renderer.updateFace(faceNameToBitmaskIndex['top']);\n // Bottom texture should not change based on that setting.\n }\n\n updateFromObjectData(\n oldObjectData: Cube3DObjectData,\n newObjectData: Cube3DObjectData\n ): boolean {\n super.updateFromObjectData(oldObjectData, newObjectData);\n if (\n oldObjectData.content.frontFaceVisible !==\n newObjectData.content.frontFaceVisible\n ) {\n this.setFaceVisibility('front', newObjectData.content.frontFaceVisible);\n }\n if (\n oldObjectData.content.backFaceVisible !==\n newObjectData.content.backFaceVisible\n ) {\n this.setFaceVisibility('back', newObjectData.content.backFaceVisible);\n }\n if (\n oldObjectData.content.leftFaceVisible !==\n newObjectData.content.leftFaceVisible\n ) {\n this.setFaceVisibility('left', newObjectData.content.leftFaceVisible);\n }\n if (\n oldObjectData.content.rightFaceVisible !==\n newObjectData.content.rightFaceVisible\n ) {\n this.setFaceVisibility('right', newObjectData.content.rightFaceVisible);\n }\n if (\n oldObjectData.content.topFaceVisible !==\n newObjectData.content.topFaceVisible\n ) {\n this.setFaceVisibility('top', newObjectData.content.topFaceVisible);\n }\n if (\n oldObjectData.content.bottomFaceVisible !==\n newObjectData.content.bottomFaceVisible\n ) {\n this.setFaceVisibility(\n 'bottom',\n newObjectData.content.bottomFaceVisible\n );\n }\n if (\n oldObjectData.content.frontFaceResourceName !==\n newObjectData.content.frontFaceResourceName\n ) {\n this.setFaceResourceName(\n 'front',\n newObjectData.content.frontFaceResourceName\n );\n }\n if (oldObjectData.content.tint !== newObjectData.content.tint) {\n this.setColor(newObjectData.content.tint || '255;255;255');\n }\n\n if (\n oldObjectData.content.backFaceResourceName !==\n newObjectData.content.backFaceResourceName\n ) {\n this.setFaceResourceName(\n 'back',\n newObjectData.content.backFaceResourceName\n );\n }\n if (\n oldObjectData.content.leftFaceResourceName !==\n newObjectData.content.leftFaceResourceName\n ) {\n this.setFaceResourceName(\n 'left',\n newObjectData.content.leftFaceResourceName\n );\n }\n if (\n oldObjectData.content.rightFaceResourceName !==\n newObjectData.content.rightFaceResourceName\n ) {\n this.setFaceResourceName(\n 'right',\n newObjectData.content.rightFaceResourceName\n );\n }\n if (\n oldObjectData.content.topFaceResourceName !==\n newObjectData.content.topFaceResourceName\n ) {\n this.setFaceResourceName(\n 'top',\n newObjectData.content.topFaceResourceName\n );\n }\n if (\n oldObjectData.content.bottomFaceResourceName !==\n newObjectData.content.bottomFaceResourceName\n ) {\n this.setFaceResourceName(\n 'bottom',\n newObjectData.content.bottomFaceResourceName\n );\n }\n if (\n oldObjectData.content.frontFaceResourceRepeat !==\n newObjectData.content.frontFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'front',\n newObjectData.content.frontFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.backFaceResourceRepeat !==\n newObjectData.content.backFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'back',\n newObjectData.content.backFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.leftFaceResourceRepeat !==\n newObjectData.content.leftFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'left',\n newObjectData.content.leftFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.rightFaceResourceRepeat !==\n newObjectData.content.rightFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'right',\n newObjectData.content.rightFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.topFaceResourceRepeat !==\n newObjectData.content.topFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'top',\n newObjectData.content.topFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.bottomFaceResourceRepeat !==\n newObjectData.content.bottomFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'bottom',\n newObjectData.content.bottomFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.backFaceUpThroughWhichAxisRotation !==\n newObjectData.content.backFaceUpThroughWhichAxisRotation\n ) {\n this.setBackFaceUpThroughWhichAxisRotation(\n newObjectData.content.backFaceUpThroughWhichAxisRotation || 'X'\n );\n }\n if (\n oldObjectData.content.facesOrientation !==\n newObjectData.content.facesOrientation\n ) {\n this.setFacesOrientation(newObjectData.content.facesOrientation || 'Y');\n }\n if (\n oldObjectData.content.materialType !==\n newObjectData.content.materialType\n ) {\n this.setMaterialType(newObjectData.content.materialType);\n }\n\n return true;\n }\n\n getNetworkSyncData(): Cube3DObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n mt: this._materialType,\n fo: this._facesOrientation,\n bfu: this._backFaceUpThroughWhichAxisRotation,\n vfb: this._visibleFacesBitmask,\n trfb: this._textureRepeatFacesBitmask,\n frn: this._faceResourceNames,\n tint: this._tint,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: Cube3DObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n if (networkSyncData.mt !== undefined) {\n this._materialType = networkSyncData.mt;\n }\n if (networkSyncData.fo !== undefined) {\n if (this._facesOrientation !== networkSyncData.fo) {\n this.setFacesOrientation(networkSyncData.fo);\n }\n }\n if (networkSyncData.bfu !== undefined) {\n if (this._backFaceUpThroughWhichAxisRotation !== networkSyncData.bfu) {\n this.setBackFaceUpThroughWhichAxisRotation(networkSyncData.bfu);\n }\n }\n if (networkSyncData.vfb !== undefined) {\n // If it is different, update all the faces.\n if (this._visibleFacesBitmask !== networkSyncData.vfb) {\n this._visibleFacesBitmask = networkSyncData.vfb;\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.trfb !== undefined) {\n // If it is different, update all the faces.\n if (this._textureRepeatFacesBitmask !== networkSyncData.trfb) {\n this._textureRepeatFacesBitmask = networkSyncData.trfb;\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.frn !== undefined) {\n // If one element is different, update all the faces.\n if (\n !this._faceResourceNames.every(\n (value, index) => value === networkSyncData.frn[index]\n )\n ) {\n this._faceResourceNames = networkSyncData.frn;\n // Update all faces. (Could optimize to only update the changed ones)\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.tint !== undefined) {\n if (this._tint !== networkSyncData.tint) {\n this._tint = networkSyncData.tint;\n this._renderer.updateTint();\n }\n }\n }\n\n /**\n * Return true if the texture transparency should be enabled.\n */\n shouldUseTransparentTexture(): boolean {\n return this._shouldUseTransparentTexture;\n }\n\n _convertMaterialType(\n materialTypeString: string\n ): gdjs.Cube3DRuntimeObject.MaterialType {\n if (materialTypeString === 'StandardWithoutMetalness') {\n return gdjs.Cube3DRuntimeObject.MaterialType.StandardWithoutMetalness;\n } else {\n return gdjs.Cube3DRuntimeObject.MaterialType.Basic;\n }\n }\n\n setMaterialType(materialTypeString: string) {\n const newMaterialType = this._convertMaterialType(materialTypeString);\n if (this._materialType === newMaterialType) {\n return;\n }\n\n this._materialType = newMaterialType;\n this._renderer._updateMaterials();\n }\n }\n\n export namespace Cube3DRuntimeObject {\n export enum MaterialType {\n Basic,\n StandardWithoutMetalness,\n }\n }\n gdjs.registerObject('Scene3D::Cube3DObject', gdjs.Cube3DRuntimeObject);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n /** Base parameters for {@link gdjs.Cube3DRuntimeObject} */\n export interface Cube3DObjectData extends Object3DData {\n /** The base parameters of the Cube3D object */\n content: Object3DDataContent & {\n enableTextureTransparency: boolean | undefined;\n facesOrientation: 'Y' | 'Z' | undefined;\n frontFaceResourceName: string;\n backFaceResourceName: string;\n backFaceUpThroughWhichAxisRotation: 'X' | 'Y' | undefined;\n leftFaceResourceName: string;\n rightFaceResourceName: string;\n topFaceResourceName: string;\n bottomFaceResourceName: string;\n frontFaceResourceRepeat: boolean | undefined;\n backFaceResourceRepeat: boolean | undefined;\n leftFaceResourceRepeat: boolean | undefined;\n rightFaceResourceRepeat: boolean | undefined;\n topFaceResourceRepeat: boolean | undefined;\n bottomFaceResourceRepeat: boolean | undefined;\n frontFaceVisible: boolean;\n backFaceVisible: boolean;\n leftFaceVisible: boolean;\n rightFaceVisible: boolean;\n topFaceVisible: boolean;\n bottomFaceVisible: boolean;\n tint: string | undefined;\n isCastingShadow: boolean;\n isReceivingShadow: boolean;\n materialType: 'Basic' | 'StandardWithoutMetalness';\n };\n }\n type FaceName = 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';\n const faceNameToBitmaskIndex = {\n front: 0,\n back: 1,\n left: 2,\n right: 3,\n top: 4,\n bottom: 5,\n };\n\n type Cube3DObjectNetworkSyncDataType = {\n fo: 'Y' | 'Z';\n bfu: 'X' | 'Y';\n vfb: integer;\n trfb: integer;\n frn: [string, string, string, string, string, string];\n mt: number;\n tint: string;\n };\n\n type Cube3DObjectNetworkSyncData = Object3DNetworkSyncData &\n Cube3DObjectNetworkSyncDataType;\n\n /**\n * Shows a 3D box object.\n */\n export class Cube3DRuntimeObject extends gdjs.RuntimeObject3D {\n private _renderer: Cube3DRuntimeObjectRenderer;\n private _facesOrientation: 'Y' | 'Z';\n private _backFaceUpThroughWhichAxisRotation: 'X' | 'Y';\n private _shouldUseTransparentTexture: boolean;\n // `_rotationZ` is `angle` from `gdjs.RuntimeObject`.\n private _visibleFacesBitmask: integer;\n private _textureRepeatFacesBitmask: integer;\n private _faceResourceNames: [\n string,\n string,\n string,\n string,\n string,\n string,\n ];\n _materialType: gdjs.Cube3DRuntimeObject.MaterialType =\n gdjs.Cube3DRuntimeObject.MaterialType.StandardWithoutMetalness;\n _tint: string;\n _isCastingShadow: boolean = true;\n _isReceivingShadow: boolean = true;\n\n constructor(\n instanceContainer: gdjs.RuntimeInstanceContainer,\n objectData: Cube3DObjectData\n ) {\n super(instanceContainer, objectData);\n this._shouldUseTransparentTexture =\n objectData.content.enableTextureTransparency || false;\n this._facesOrientation = objectData.content.facesOrientation || 'Y';\n this._visibleFacesBitmask = 0;\n if (objectData.content.frontFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['front'];\n if (objectData.content.backFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['back'];\n if (objectData.content.leftFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['left'];\n if (objectData.content.rightFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['right'];\n if (objectData.content.topFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['top'];\n if (objectData.content.bottomFaceVisible)\n this._visibleFacesBitmask |= 1 << faceNameToBitmaskIndex['bottom'];\n this._textureRepeatFacesBitmask = 0;\n if (objectData.content.frontFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['front'];\n if (objectData.content.backFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['back'];\n if (objectData.content.leftFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['left'];\n if (objectData.content.rightFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['right'];\n if (objectData.content.topFaceResourceRepeat)\n this._textureRepeatFacesBitmask |= 1 << faceNameToBitmaskIndex['top'];\n if (objectData.content.bottomFaceResourceRepeat)\n this._textureRepeatFacesBitmask |=\n 1 << faceNameToBitmaskIndex['bottom'];\n this._backFaceUpThroughWhichAxisRotation =\n objectData.content.backFaceUpThroughWhichAxisRotation || 'X';\n this._faceResourceNames = [\n objectData.content.frontFaceResourceName,\n objectData.content.backFaceResourceName,\n objectData.content.leftFaceResourceName,\n objectData.content.rightFaceResourceName,\n objectData.content.topFaceResourceName,\n objectData.content.bottomFaceResourceName,\n ];\n\n this._tint = objectData.content.tint || '255;255;255';\n this._isCastingShadow = objectData.content.isCastingShadow || false;\n this._isReceivingShadow = objectData.content.isReceivingShadow || false;\n\n this._materialType = this._convertMaterialType(\n objectData.content.materialType\n );\n\n this._renderer = new gdjs.Cube3DRuntimeObjectRenderer(\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 /**\n * Sets the visibility of a face of the 3D box.\n *\n * @param faceName - The name of the face to set visibility for.\n * @param enable - The visibility value to set.\n */\n setFaceVisibility(faceName: FaceName, enable: boolean) {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (enable === this.isFaceAtIndexVisible(faceIndex)) {\n return;\n }\n\n if (enable) {\n this._visibleFacesBitmask |= 1 << faceIndex;\n } else {\n this._visibleFacesBitmask &= ~(1 << faceIndex);\n }\n this._renderer.updateFace(faceIndex);\n }\n\n /**\n * Sets the texture repeat of a face of the 3D box.\n *\n * @param faceName - The name of the face to set visibility for.\n * @param enable - The visibility value to set.\n */\n setRepeatTextureOnFace(faceName: FaceName, enable: boolean) {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (enable === this.shouldRepeatTextureOnFaceAtIndex(faceIndex)) {\n return;\n }\n\n if (enable) {\n this._textureRepeatFacesBitmask |= 1 << faceIndex;\n } else {\n this._textureRepeatFacesBitmask &= ~(1 << faceIndex);\n }\n this._renderer.updateFace(faceIndex);\n }\n\n isFaceVisible(faceName: FaceName): boolean {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return false;\n }\n\n return this.isFaceAtIndexVisible(faceIndex);\n }\n\n /** @internal */\n isFaceAtIndexVisible(faceIndex): boolean {\n return (this._visibleFacesBitmask & (1 << faceIndex)) !== 0;\n }\n\n /** @internal */\n shouldRepeatTextureOnFaceAtIndex(faceIndex): boolean {\n return (this._textureRepeatFacesBitmask & (1 << faceIndex)) !== 0;\n }\n\n setFaceResourceName(faceName: FaceName, resourceName: string): void {\n const faceIndex = faceNameToBitmaskIndex[faceName];\n if (faceIndex === undefined) {\n return;\n }\n if (this._faceResourceNames[faceIndex] === resourceName) {\n return;\n }\n this._faceResourceNames[faceIndex] = resourceName;\n this._renderer.updateFace(faceIndex);\n }\n\n setColor(tint: string): void {\n if (this._tint === tint) {\n return;\n }\n this._tint = tint;\n this._renderer.updateTint();\n }\n\n getColor(): string {\n return this._tint;\n }\n\n /** @internal */\n getFaceAtIndexResourceName(faceIndex: integer): string {\n return this._faceResourceNames[faceIndex];\n }\n\n getRenderer(): gdjs.RuntimeObject3DRenderer {\n return this._renderer;\n }\n\n getBackFaceUpThroughWhichAxisRotation(): 'X' | 'Y' {\n return this._backFaceUpThroughWhichAxisRotation;\n }\n\n setBackFaceUpThroughWhichAxisRotation(axis: 'X' | 'Y'): void {\n this._backFaceUpThroughWhichAxisRotation = axis;\n this._renderer.updateFace(faceNameToBitmaskIndex['back']);\n }\n\n getFacesOrientation(): 'Y' | 'Z' {\n return this._facesOrientation;\n }\n\n setFacesOrientation(orientation: 'Y' | 'Z'): void {\n this._facesOrientation = orientation;\n this._renderer.updateFace(faceNameToBitmaskIndex['left']);\n this._renderer.updateFace(faceNameToBitmaskIndex['right']);\n this._renderer.updateFace(faceNameToBitmaskIndex['top']);\n // Bottom texture should not change based on that setting.\n }\n\n updateFromObjectData(\n oldObjectData: Cube3DObjectData,\n newObjectData: Cube3DObjectData\n ): boolean {\n super.updateFromObjectData(oldObjectData, newObjectData);\n if (\n oldObjectData.content.frontFaceVisible !==\n newObjectData.content.frontFaceVisible\n ) {\n this.setFaceVisibility('front', newObjectData.content.frontFaceVisible);\n }\n if (\n oldObjectData.content.backFaceVisible !==\n newObjectData.content.backFaceVisible\n ) {\n this.setFaceVisibility('back', newObjectData.content.backFaceVisible);\n }\n if (\n oldObjectData.content.leftFaceVisible !==\n newObjectData.content.leftFaceVisible\n ) {\n this.setFaceVisibility('left', newObjectData.content.leftFaceVisible);\n }\n if (\n oldObjectData.content.rightFaceVisible !==\n newObjectData.content.rightFaceVisible\n ) {\n this.setFaceVisibility('right', newObjectData.content.rightFaceVisible);\n }\n if (\n oldObjectData.content.topFaceVisible !==\n newObjectData.content.topFaceVisible\n ) {\n this.setFaceVisibility('top', newObjectData.content.topFaceVisible);\n }\n if (\n oldObjectData.content.bottomFaceVisible !==\n newObjectData.content.bottomFaceVisible\n ) {\n this.setFaceVisibility(\n 'bottom',\n newObjectData.content.bottomFaceVisible\n );\n }\n if (\n oldObjectData.content.frontFaceResourceName !==\n newObjectData.content.frontFaceResourceName\n ) {\n this.setFaceResourceName(\n 'front',\n newObjectData.content.frontFaceResourceName\n );\n }\n if (oldObjectData.content.tint !== newObjectData.content.tint) {\n this.setColor(newObjectData.content.tint || '255;255;255');\n }\n\n if (\n oldObjectData.content.backFaceResourceName !==\n newObjectData.content.backFaceResourceName\n ) {\n this.setFaceResourceName(\n 'back',\n newObjectData.content.backFaceResourceName\n );\n }\n if (\n oldObjectData.content.leftFaceResourceName !==\n newObjectData.content.leftFaceResourceName\n ) {\n this.setFaceResourceName(\n 'left',\n newObjectData.content.leftFaceResourceName\n );\n }\n if (\n oldObjectData.content.rightFaceResourceName !==\n newObjectData.content.rightFaceResourceName\n ) {\n this.setFaceResourceName(\n 'right',\n newObjectData.content.rightFaceResourceName\n );\n }\n if (\n oldObjectData.content.topFaceResourceName !==\n newObjectData.content.topFaceResourceName\n ) {\n this.setFaceResourceName(\n 'top',\n newObjectData.content.topFaceResourceName\n );\n }\n if (\n oldObjectData.content.bottomFaceResourceName !==\n newObjectData.content.bottomFaceResourceName\n ) {\n this.setFaceResourceName(\n 'bottom',\n newObjectData.content.bottomFaceResourceName\n );\n }\n if (\n oldObjectData.content.frontFaceResourceRepeat !==\n newObjectData.content.frontFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'front',\n newObjectData.content.frontFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.backFaceResourceRepeat !==\n newObjectData.content.backFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'back',\n newObjectData.content.backFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.leftFaceResourceRepeat !==\n newObjectData.content.leftFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'left',\n newObjectData.content.leftFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.rightFaceResourceRepeat !==\n newObjectData.content.rightFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'right',\n newObjectData.content.rightFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.topFaceResourceRepeat !==\n newObjectData.content.topFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'top',\n newObjectData.content.topFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.bottomFaceResourceRepeat !==\n newObjectData.content.bottomFaceResourceRepeat\n ) {\n this.setRepeatTextureOnFace(\n 'bottom',\n newObjectData.content.bottomFaceResourceRepeat || false\n );\n }\n if (\n oldObjectData.content.backFaceUpThroughWhichAxisRotation !==\n newObjectData.content.backFaceUpThroughWhichAxisRotation\n ) {\n this.setBackFaceUpThroughWhichAxisRotation(\n newObjectData.content.backFaceUpThroughWhichAxisRotation || 'X'\n );\n }\n if (\n oldObjectData.content.facesOrientation !==\n newObjectData.content.facesOrientation\n ) {\n this.setFacesOrientation(newObjectData.content.facesOrientation || 'Y');\n }\n if (\n oldObjectData.content.materialType !==\n newObjectData.content.materialType\n ) {\n this.setMaterialType(newObjectData.content.materialType);\n }\n if (\n oldObjectData.content.isCastingShadow !==\n newObjectData.content.isCastingShadow\n ) {\n this.updateShadowCasting(newObjectData.content.isCastingShadow);\n }\n if (\n oldObjectData.content.isReceivingShadow !==\n newObjectData.content.isReceivingShadow\n ) {\n this.updateShadowReceiving(newObjectData.content.isReceivingShadow);\n }\n\n return true;\n }\n\n getNetworkSyncData(): Cube3DObjectNetworkSyncData {\n return {\n ...super.getNetworkSyncData(),\n mt: this._materialType,\n fo: this._facesOrientation,\n bfu: this._backFaceUpThroughWhichAxisRotation,\n vfb: this._visibleFacesBitmask,\n trfb: this._textureRepeatFacesBitmask,\n frn: this._faceResourceNames,\n tint: this._tint,\n };\n }\n\n updateFromNetworkSyncData(\n networkSyncData: Cube3DObjectNetworkSyncData\n ): void {\n super.updateFromNetworkSyncData(networkSyncData);\n\n if (networkSyncData.mt !== undefined) {\n this._materialType = networkSyncData.mt;\n }\n if (networkSyncData.fo !== undefined) {\n if (this._facesOrientation !== networkSyncData.fo) {\n this.setFacesOrientation(networkSyncData.fo);\n }\n }\n if (networkSyncData.bfu !== undefined) {\n if (this._backFaceUpThroughWhichAxisRotation !== networkSyncData.bfu) {\n this.setBackFaceUpThroughWhichAxisRotation(networkSyncData.bfu);\n }\n }\n if (networkSyncData.vfb !== undefined) {\n // If it is different, update all the faces.\n if (this._visibleFacesBitmask !== networkSyncData.vfb) {\n this._visibleFacesBitmask = networkSyncData.vfb;\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.trfb !== undefined) {\n // If it is different, update all the faces.\n if (this._textureRepeatFacesBitmask !== networkSyncData.trfb) {\n this._textureRepeatFacesBitmask = networkSyncData.trfb;\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.frn !== undefined) {\n // If one element is different, update all the faces.\n if (\n !this._faceResourceNames.every(\n (value, index) => value === networkSyncData.frn[index]\n )\n ) {\n this._faceResourceNames = networkSyncData.frn;\n // Update all faces. (Could optimize to only update the changed ones)\n for (let i = 0; i < this._faceResourceNames.length; i++) {\n this._renderer.updateFace(i);\n }\n }\n }\n if (networkSyncData.tint !== undefined) {\n if (this._tint !== networkSyncData.tint) {\n this._tint = networkSyncData.tint;\n this._renderer.updateTint();\n }\n }\n }\n\n /**\n * Return true if the texture transparency should be enabled.\n */\n shouldUseTransparentTexture(): boolean {\n return this._shouldUseTransparentTexture;\n }\n\n _convertMaterialType(\n materialTypeString: string\n ): gdjs.Cube3DRuntimeObject.MaterialType {\n if (materialTypeString === 'StandardWithoutMetalness') {\n return gdjs.Cube3DRuntimeObject.MaterialType.StandardWithoutMetalness;\n } else {\n return gdjs.Cube3DRuntimeObject.MaterialType.Basic;\n }\n }\n\n setMaterialType(materialTypeString: string) {\n const newMaterialType = this._convertMaterialType(materialTypeString);\n if (this._materialType === newMaterialType) {\n return;\n }\n\n this._materialType = newMaterialType;\n this._renderer._updateMaterials();\n }\n updateShadowCasting(value: boolean) {\n this._isCastingShadow = value;\n this._renderer.updateShadowCasting();\n }\n updateShadowReceiving(value: boolean) {\n this._isReceivingShadow = value;\n this._renderer.updateShadowReceiving();\n }\n }\n\n export namespace Cube3DRuntimeObject {\n export enum MaterialType {\n Basic,\n StandardWithoutMetalness,\n }\n }\n gdjs.registerObject('Scene3D::Cube3DObject', gdjs.Cube3DRuntimeObject);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(
|
|
1
|
+
var gdjs;(function(l){const g={3:0,2:1,5:2,4:3,0:4,1:5},M={0:3,1:2,2:5,3:4,4:0,5:1},h={0:[0,0],1:[1,0],2:[0,1],3:[1,1]},R={0:[0,1],1:[0,0],2:[1,1],3:[1,0]};let x;const T=()=>(x||(x=new THREE.MeshBasicMaterial({transparent:!0,opacity:0,alphaTest:1})),x),_=(n,i)=>n.isFaceAtIndexVisible(i)?n.getInstanceContainer().getGame().getImageManager().getThreeMaterial(n.getFaceAtIndexResourceName(i),{useTransparentTexture:n.shouldUseTransparentTexture(),forceBasicMaterial:n._materialType===l.Cube3DRuntimeObject.MaterialType.Basic,vertexColors:!0}):T();class f extends l.RuntimeObject3DRenderer{constructor(i,t){const r=new THREE.BoxGeometry(1,1,1),m=new Array(6).fill(0).map((e,b)=>_(i,M[b])),c=new THREE.Mesh(r,m);super(i,t,c);this._boxMesh=c,this._cube3DRuntimeObject=i,c.receiveShadow=this._cube3DRuntimeObject._isCastingShadow,c.castShadow=this._cube3DRuntimeObject._isReceivingShadow,this.updateSize(),this.updatePosition(),this.updateRotation(),this.updateTint()}updateTint(){const i=[],t=l.rgbOrHexToRGBColor(this._cube3DRuntimeObject.getColor()).map(r=>r/255);for(let r=0;r<this._boxMesh.geometry.attributes.position.count;r++)i.push(...t);this._boxMesh.geometry.setAttribute("color",new THREE.BufferAttribute(new Float32Array(i),3))}updateShadowCasting(){this._boxMesh.castShadow=this._cube3DRuntimeObject._isCastingShadow}updateShadowReceiving(){this._boxMesh.receiveShadow=this._cube3DRuntimeObject._isReceivingShadow}updateFace(i){const t=g[i];t!==void 0&&(this._boxMesh.material[t]=_(this._cube3DRuntimeObject,i),this._cube3DRuntimeObject.isFaceAtIndexVisible(i)&&this.updateTextureUvMapping(i))}updateSize(){super.updateSize(),this.updateTextureUvMapping()}updateTextureUvMapping(i){const t=this._boxMesh.geometry.getAttribute("position"),r=this._boxMesh.geometry.getAttribute("uv"),m=i===void 0?0:g[i]*4,c=i===void 0?23:g[i]*4+3;for(let e=m;e<=c;e++){const b=Math.floor(e/4),o=this._boxMesh.material[b];if(!o||!o.map)continue;const u=this._cube3DRuntimeObject.shouldRepeatTextureOnFaceAtIndex(M[b]),d=this._cube3DRuntimeObject.getFacesOrientation()==="Y";let a,s;switch(b){case 0:u?d?(a=-(this._boxMesh.scale.z/o.map.source.data.width)*(t.getZ(e)-.5),s=-(this._boxMesh.scale.y/o.map.source.data.height)*(t.getY(e)+.5)):(a=-(this._boxMesh.scale.y/o.map.source.data.width)*(t.getY(e)-.5),s=this._boxMesh.scale.z/o.map.source.data.height*(t.getZ(e)-.5)):d?[a,s]=h[e%4]:[a,s]=R[e%4];break;case 1:u?d?(a=this._boxMesh.scale.z/o.map.source.data.width*(t.getZ(e)+.5),s=-(this._boxMesh.scale.y/o.map.source.data.height)*(t.getY(e)+.5)):(a=this._boxMesh.scale.y/o.map.source.data.width*(t.getY(e)+.5),s=this._boxMesh.scale.z/o.map.source.data.height*(t.getZ(e)-.5)):d?[a,s]=h[e%4]:([a,s]=R[e%4],a=-a,s=-s);break;case 2:u?(a=this._boxMesh.scale.x/o.map.source.data.width*(t.getX(e)+.5),s=this._boxMesh.scale.z/o.map.source.data.height*(t.getZ(e)-.5)):[a,s]=h[e%4];break;case 3:u?d?(a=this._boxMesh.scale.x/o.map.source.data.width*(t.getX(e)+.5),s=-(this._boxMesh.scale.z/o.map.source.data.height)*(t.getZ(e)+.5)):(a=-(this._boxMesh.scale.x/o.map.source.data.width)*(t.getX(e)-.5),s=this._boxMesh.scale.z/o.map.source.data.height*(t.getZ(e)-.5)):([a,s]=h[e%4],d||(a=-a,s=-s));break;case 4:u?(a=this._boxMesh.scale.x/o.map.source.data.width*(t.getX(e)+.5),s=-(this._boxMesh.scale.y/o.map.source.data.height)*(t.getY(e)+.5)):[a,s]=h[e%4];break;case 5:const p=this._cube3DRuntimeObject.getBackFaceUpThroughWhichAxisRotation()==="X";u?(a=(p?1:-1)*(this._boxMesh.scale.x/o.map.source.data.width)*(t.getX(e)+(p?1:-1)*.5),s=(p?1:-1)*(this._boxMesh.scale.y/o.map.source.data.height)*(t.getY(e)+(p?-1:1)*.5)):([a,s]=h[e%4],p&&(a=-a,s=-s));break;default:[a,s]=h[e%4]}r.setXY(e,a,s)}r.needsUpdate=!0}_updateMaterials(){for(let i=0;i<6;i++)this.updateFace(i)}}l.Cube3DRuntimeObjectRenderer=f})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=Cube3DRuntimeObjectPixiRenderer.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/3D/Cube3DRuntimeObjectPixiRenderer.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n // Three.js materials for a cube and the order of faces in the object is different,\n // so we keep the mapping from one to the other.\n const faceIndexToMaterialIndex = {\n 3: 0, // right\n 2: 1, // left\n 5: 2, // bottom\n 4: 3, // top\n 0: 4, // front\n 1: 5, // back\n };\n const materialIndexToFaceIndex = {\n 0: 3,\n 1: 2,\n 2: 5,\n 3: 4,\n 4: 0,\n 5: 1,\n };\n\n const noRepeatTextureVertexIndexToUvMapping = {\n 0: [0, 0],\n 1: [1, 0],\n 2: [0, 1],\n 3: [1, 1],\n };\n\n const noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ = {\n 0: [0, 1],\n 1: [0, 0],\n 2: [1, 1],\n 3: [1, 0],\n };\n\n let transparentMaterial: THREE.MeshBasicMaterial;\n const getTransparentMaterial = () => {\n if (!transparentMaterial)\n transparentMaterial = new THREE.MeshBasicMaterial({\n transparent: true,\n opacity: 0,\n // Set the alpha test to to ensure the faces behind are rendered\n // (no \"back face culling\" that would still be done if alphaTest is not set).\n alphaTest: 1,\n });\n\n return transparentMaterial;\n };\n\n const getFaceMaterial = (\n runtimeObject: gdjs.Cube3DRuntimeObject,\n faceIndex: integer\n ) => {\n if (!runtimeObject.isFaceAtIndexVisible(faceIndex))\n return getTransparentMaterial();\n\n return runtimeObject\n .getInstanceContainer()\n .getGame()\n .getImageManager()\n .getThreeMaterial(runtimeObject.getFaceAtIndexResourceName(faceIndex), {\n useTransparentTexture: runtimeObject.shouldUseTransparentTexture(),\n forceBasicMaterial:\n runtimeObject._materialType ===\n gdjs.Cube3DRuntimeObject.MaterialType.Basic,\n vertexColors: true,\n });\n };\n\n class Cube3DRuntimeObjectPixiRenderer extends gdjs.RuntimeObject3DRenderer {\n private _cube3DRuntimeObject: gdjs.Cube3DRuntimeObject;\n private _boxMesh: THREE.Mesh;\n\n constructor(\n runtimeObject: gdjs.Cube3DRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n const geometry = new THREE.BoxGeometry(1, 1, 1);\n\n const materials: THREE.Material[] = new Array(6)\n .fill(0)\n .map((_, index) =>\n getFaceMaterial(runtimeObject, materialIndexToFaceIndex[index])\n );\n\n const boxMesh = new THREE.Mesh(geometry, materials);\n\n super(runtimeObject, instanceContainer, boxMesh);\n this._boxMesh = boxMesh;\n this._cube3DRuntimeObject = runtimeObject;\n\n this.updateSize();\n this.updatePosition();\n this.updateRotation();\n this.updateTint();\n }\n\n updateTint() {\n const tints: number[] = [];\n\n const normalizedTint = gdjs\n .rgbOrHexToRGBColor(this._cube3DRuntimeObject.getColor())\n .map((component) => component / 255);\n\n for (\n let i = 0;\n i < this._boxMesh.geometry.attributes.position.count;\n i++\n ) {\n tints.push(...normalizedTint);\n }\n\n this._boxMesh.geometry.setAttribute(\n 'color',\n new THREE.BufferAttribute(new Float32Array(tints), 3)\n );\n }\n\n updateFace(faceIndex: integer) {\n const materialIndex = faceIndexToMaterialIndex[faceIndex];\n if (materialIndex === undefined) return;\n\n this._boxMesh.material[materialIndex] = getFaceMaterial(\n this._cube3DRuntimeObject,\n faceIndex\n );\n if (this._cube3DRuntimeObject.isFaceAtIndexVisible(faceIndex)) {\n this.updateTextureUvMapping(faceIndex);\n }\n }\n\n updateSize(): void {\n super.updateSize();\n this.updateTextureUvMapping();\n }\n\n /**\n * Updates the UV mapping of the geometry in order to repeat a material\n * over the different faces of the cube.\n * The mesh must be configured with a list of materials in order\n * for the method to work.\n * @param faceIndex The face index to update. If undefined, updates all the faces.\n */\n updateTextureUvMapping(faceIndex?: number) {\n // @ts-ignore - position is stored as a Float32BufferAttribute\n const pos: THREE.BufferAttribute =\n this._boxMesh.geometry.getAttribute('position');\n // @ts-ignore - uv is stored as a Float32BufferAttribute\n const uvMapping: THREE.BufferAttribute =\n this._boxMesh.geometry.getAttribute('uv');\n const startIndex =\n faceIndex === undefined ? 0 : faceIndexToMaterialIndex[faceIndex] * 4;\n const endIndex =\n faceIndex === undefined\n ? 23\n : faceIndexToMaterialIndex[faceIndex] * 4 + 3;\n for (\n let vertexIndex = startIndex;\n vertexIndex <= endIndex;\n vertexIndex++\n ) {\n const materialIndex = Math.floor(\n vertexIndex /\n // Each face of the cube has 4 points\n 4\n );\n const material = this._boxMesh.material[materialIndex];\n if (!material || !material.map) {\n continue;\n }\n\n const shouldRepeatTexture =\n this._cube3DRuntimeObject.shouldRepeatTextureOnFaceAtIndex(\n materialIndexToFaceIndex[materialIndex]\n );\n\n const shouldOrientateFacesTowardsY =\n this._cube3DRuntimeObject.getFacesOrientation() === 'Y';\n\n let x: float, y: float;\n switch (materialIndex) {\n case 0:\n // Right face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n -(this._boxMesh.scale.z / material.map.source.data.width) *\n (pos.getZ(vertexIndex) - 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n x =\n -(this._boxMesh.scale.y / material.map.source.data.width) *\n (pos.getY(vertexIndex) - 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n if (shouldOrientateFacesTowardsY) {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n } else {\n [x, y] =\n noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ[\n vertexIndex % 4\n ];\n }\n }\n break;\n case 1:\n // Left face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n (this._boxMesh.scale.z / material.map.source.data.width) *\n (pos.getZ(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n x =\n (this._boxMesh.scale.y / material.map.source.data.width) *\n (pos.getY(vertexIndex) + 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n if (shouldOrientateFacesTowardsY) {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n } else {\n [x, y] =\n noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ[\n vertexIndex % 4\n ];\n x = -x;\n y = -y;\n }\n }\n break;\n case 2:\n // Bottom face\n if (shouldRepeatTexture) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n break;\n case 3:\n // Top face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) + 0.5);\n } else {\n x =\n -(this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) - 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n if (!shouldOrientateFacesTowardsY) {\n x = -x;\n y = -y;\n }\n }\n break;\n case 4:\n // Front face\n if (shouldRepeatTexture) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n break;\n case 5:\n // Back face\n const shouldBackFaceBeUpThroughXAxisRotation =\n this._cube3DRuntimeObject.getBackFaceUpThroughWhichAxisRotation() ===\n 'X';\n\n if (shouldRepeatTexture) {\n x =\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) *\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) +\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) * 0.5);\n y =\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) *\n (this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) +\n (shouldBackFaceBeUpThroughXAxisRotation ? -1 : 1) * 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n if (shouldBackFaceBeUpThroughXAxisRotation) {\n x = -x;\n y = -y;\n }\n }\n break;\n default:\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n uvMapping.setXY(vertexIndex, x, y);\n }\n uvMapping.needsUpdate = true;\n }\n\n _updateMaterials() {\n for (let index = 0; index < 6; index++) {\n this.updateFace(index);\n }\n }\n }\n\n export const Cube3DRuntimeObjectRenderer = Cube3DRuntimeObjectPixiRenderer;\n export type Cube3DRuntimeObjectRenderer = Cube3DRuntimeObjectPixiRenderer;\n}\n"],
|
|
5
|
-
"mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAGE,KAAM,GAA2B,CAC/B,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,GAEC,EAA2B,CAC/B,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,GAGC,EAAwC,CAC5C,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,IAGH,EAAoE,CACxE,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,GACP,EAAG,CAAC,EAAG,IAGT,GAAI,GACJ,KAAM,GAAyB,IACxB,IACH,GAAsB,GAAI,OAAM,kBAAkB,CAChD,YAAa,GACb,QAAS,EAGT,UAAW,KAGR,GAGH,EAAkB,CACtB,EACA,IAEK,EAAc,qBAAqB,GAGjC,EACJ,uBACA,UACA,kBACA,iBAAiB,EAAc,2BAA2B,GAAY,CACrE,sBAAuB,EAAc,8BACrC,mBACE,EAAc,gBACd,EAAK,oBAAoB,aAAa,MACxC,aAAc,KAXT,IAeX,eAA8C,GAAK,uBAAwB,CAIzE,YACE,EACA,EACA,CACA,KAAM,GAAW,GAAI,OAAM,YAAY,EAAG,EAAG,GAEvC,EAA8B,GAAI,OAAM,GAC3C,KAAK,GACL,IAAI,CAAC,EAAG,IACP,EAAgB,EAAe,EAAyB,
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n // Three.js materials for a cube and the order of faces in the object is different,\n // so we keep the mapping from one to the other.\n const faceIndexToMaterialIndex = {\n 3: 0, // right\n 2: 1, // left\n 5: 2, // bottom\n 4: 3, // top\n 0: 4, // front\n 1: 5, // back\n };\n const materialIndexToFaceIndex = {\n 0: 3,\n 1: 2,\n 2: 5,\n 3: 4,\n 4: 0,\n 5: 1,\n };\n\n const noRepeatTextureVertexIndexToUvMapping = {\n 0: [0, 0],\n 1: [1, 0],\n 2: [0, 1],\n 3: [1, 1],\n };\n\n const noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ = {\n 0: [0, 1],\n 1: [0, 0],\n 2: [1, 1],\n 3: [1, 0],\n };\n\n let transparentMaterial: THREE.MeshBasicMaterial;\n const getTransparentMaterial = () => {\n if (!transparentMaterial)\n transparentMaterial = new THREE.MeshBasicMaterial({\n transparent: true,\n opacity: 0,\n // Set the alpha test to to ensure the faces behind are rendered\n // (no \"back face culling\" that would still be done if alphaTest is not set).\n alphaTest: 1,\n });\n\n return transparentMaterial;\n };\n\n const getFaceMaterial = (\n runtimeObject: gdjs.Cube3DRuntimeObject,\n faceIndex: integer\n ) => {\n if (!runtimeObject.isFaceAtIndexVisible(faceIndex))\n return getTransparentMaterial();\n\n return runtimeObject\n .getInstanceContainer()\n .getGame()\n .getImageManager()\n .getThreeMaterial(runtimeObject.getFaceAtIndexResourceName(faceIndex), {\n useTransparentTexture: runtimeObject.shouldUseTransparentTexture(),\n forceBasicMaterial:\n runtimeObject._materialType ===\n gdjs.Cube3DRuntimeObject.MaterialType.Basic,\n vertexColors: true,\n });\n };\n\n class Cube3DRuntimeObjectPixiRenderer extends gdjs.RuntimeObject3DRenderer {\n private _cube3DRuntimeObject: gdjs.Cube3DRuntimeObject;\n private _boxMesh: THREE.Mesh;\n\n constructor(\n runtimeObject: gdjs.Cube3DRuntimeObject,\n instanceContainer: gdjs.RuntimeInstanceContainer\n ) {\n const geometry = new THREE.BoxGeometry(1, 1, 1);\n\n const materials: THREE.Material[] = new Array(6)\n .fill(0)\n .map((_, index) =>\n getFaceMaterial(runtimeObject, materialIndexToFaceIndex[index])\n );\n const boxMesh = new THREE.Mesh(geometry, materials);\n\n super(runtimeObject, instanceContainer, boxMesh);\n this._boxMesh = boxMesh;\n this._cube3DRuntimeObject = runtimeObject;\n\n boxMesh.receiveShadow = this._cube3DRuntimeObject._isCastingShadow;\n boxMesh.castShadow = this._cube3DRuntimeObject._isReceivingShadow;\n this.updateSize();\n this.updatePosition();\n this.updateRotation();\n this.updateTint();\n }\n\n updateTint() {\n const tints: number[] = [];\n\n const normalizedTint = gdjs\n .rgbOrHexToRGBColor(this._cube3DRuntimeObject.getColor())\n .map((component) => component / 255);\n\n for (\n let i = 0;\n i < this._boxMesh.geometry.attributes.position.count;\n i++\n ) {\n tints.push(...normalizedTint);\n }\n\n this._boxMesh.geometry.setAttribute(\n 'color',\n new THREE.BufferAttribute(new Float32Array(tints), 3)\n );\n }\n updateShadowCasting() {\n this._boxMesh.castShadow = this._cube3DRuntimeObject._isCastingShadow;\n }\n updateShadowReceiving() {\n this._boxMesh.receiveShadow =\n this._cube3DRuntimeObject._isReceivingShadow;\n }\n\n updateFace(faceIndex: integer) {\n const materialIndex = faceIndexToMaterialIndex[faceIndex];\n if (materialIndex === undefined) return;\n\n this._boxMesh.material[materialIndex] = getFaceMaterial(\n this._cube3DRuntimeObject,\n faceIndex\n );\n if (this._cube3DRuntimeObject.isFaceAtIndexVisible(faceIndex)) {\n this.updateTextureUvMapping(faceIndex);\n }\n }\n\n updateSize(): void {\n super.updateSize();\n this.updateTextureUvMapping();\n }\n\n /**\n * Updates the UV mapping of the geometry in order to repeat a material\n * over the different faces of the cube.\n * The mesh must be configured with a list of materials in order\n * for the method to work.\n * @param faceIndex The face index to update. If undefined, updates all the faces.\n */\n updateTextureUvMapping(faceIndex?: number) {\n // @ts-ignore - position is stored as a Float32BufferAttribute\n const pos: THREE.BufferAttribute =\n this._boxMesh.geometry.getAttribute('position');\n // @ts-ignore - uv is stored as a Float32BufferAttribute\n const uvMapping: THREE.BufferAttribute =\n this._boxMesh.geometry.getAttribute('uv');\n const startIndex =\n faceIndex === undefined ? 0 : faceIndexToMaterialIndex[faceIndex] * 4;\n const endIndex =\n faceIndex === undefined\n ? 23\n : faceIndexToMaterialIndex[faceIndex] * 4 + 3;\n for (\n let vertexIndex = startIndex;\n vertexIndex <= endIndex;\n vertexIndex++\n ) {\n const materialIndex = Math.floor(\n vertexIndex /\n // Each face of the cube has 4 points\n 4\n );\n const material = this._boxMesh.material[materialIndex];\n if (!material || !material.map) {\n continue;\n }\n\n const shouldRepeatTexture =\n this._cube3DRuntimeObject.shouldRepeatTextureOnFaceAtIndex(\n materialIndexToFaceIndex[materialIndex]\n );\n\n const shouldOrientateFacesTowardsY =\n this._cube3DRuntimeObject.getFacesOrientation() === 'Y';\n\n let x: float, y: float;\n switch (materialIndex) {\n case 0:\n // Right face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n -(this._boxMesh.scale.z / material.map.source.data.width) *\n (pos.getZ(vertexIndex) - 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n x =\n -(this._boxMesh.scale.y / material.map.source.data.width) *\n (pos.getY(vertexIndex) - 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n if (shouldOrientateFacesTowardsY) {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n } else {\n [x, y] =\n noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ[\n vertexIndex % 4\n ];\n }\n }\n break;\n case 1:\n // Left face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n (this._boxMesh.scale.z / material.map.source.data.width) *\n (pos.getZ(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n x =\n (this._boxMesh.scale.y / material.map.source.data.width) *\n (pos.getY(vertexIndex) + 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n if (shouldOrientateFacesTowardsY) {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n } else {\n [x, y] =\n noRepeatTextureVertexIndexToUvMappingForLeftAndRightFacesTowardsZ[\n vertexIndex % 4\n ];\n x = -x;\n y = -y;\n }\n }\n break;\n case 2:\n // Bottom face\n if (shouldRepeatTexture) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n break;\n case 3:\n // Top face\n if (shouldRepeatTexture) {\n if (shouldOrientateFacesTowardsY) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) + 0.5);\n } else {\n x =\n -(this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) - 0.5);\n y =\n (this._boxMesh.scale.z / material.map.source.data.height) *\n (pos.getZ(vertexIndex) - 0.5);\n }\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n if (!shouldOrientateFacesTowardsY) {\n x = -x;\n y = -y;\n }\n }\n break;\n case 4:\n // Front face\n if (shouldRepeatTexture) {\n x =\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) + 0.5);\n y =\n -(this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) + 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n break;\n case 5:\n // Back face\n const shouldBackFaceBeUpThroughXAxisRotation =\n this._cube3DRuntimeObject.getBackFaceUpThroughWhichAxisRotation() ===\n 'X';\n\n if (shouldRepeatTexture) {\n x =\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) *\n (this._boxMesh.scale.x / material.map.source.data.width) *\n (pos.getX(vertexIndex) +\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) * 0.5);\n y =\n (shouldBackFaceBeUpThroughXAxisRotation ? 1 : -1) *\n (this._boxMesh.scale.y / material.map.source.data.height) *\n (pos.getY(vertexIndex) +\n (shouldBackFaceBeUpThroughXAxisRotation ? -1 : 1) * 0.5);\n } else {\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n if (shouldBackFaceBeUpThroughXAxisRotation) {\n x = -x;\n y = -y;\n }\n }\n break;\n default:\n [x, y] = noRepeatTextureVertexIndexToUvMapping[vertexIndex % 4];\n }\n uvMapping.setXY(vertexIndex, x, y);\n }\n uvMapping.needsUpdate = true;\n }\n\n _updateMaterials() {\n for (let index = 0; index < 6; index++) {\n this.updateFace(index);\n }\n }\n }\n\n export const Cube3DRuntimeObjectRenderer = Cube3DRuntimeObjectPixiRenderer;\n export type Cube3DRuntimeObjectRenderer = Cube3DRuntimeObjectPixiRenderer;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(i){i.PixiFiltersTools.registerFilterCreator("Scene3D::DirectionalLight",new class{makeFilter(
|
|
1
|
+
var gdjs;(function(i){const l=!1;i.PixiFiltersTools.registerFilterCreator("Scene3D::DirectionalLight",new class{makeFilter(g,c){return typeof THREE=="undefined"?new i.PixiFiltersTools.EmptyFilter:new class{constructor(){this._isEnabled=!1;this._top="Y-";this._elevation=45;this._rotation=0;this._shadowMapDirty=!0;this._shadowMapSize=1024;this._shadowCameraDirty=!0;this._distanceFromCamera=1500;this._frustumSize=4e3;this._light=new THREE.DirectionalLight,l?this._shadowCameraHelper=new THREE.CameraHelper(this._light.shadow.camera):this._shadowCameraHelper=null,this._light.shadow.camera.updateProjectionMatrix()}_updateShadowCamera(){!this._shadowCameraDirty||(this._shadowCameraDirty=!1,this._light.shadow.camera.near=1,this._light.shadow.camera.far=this._distanceFromCamera+1e4,this._light.shadow.camera.right=this._frustumSize/2,this._light.shadow.camera.left=-this._frustumSize/2,this._light.shadow.camera.top=this._frustumSize/2,this._light.shadow.camera.bottom=-this._frustumSize/2)}_updateShadowMapSize(){!this._shadowMapDirty||(this._shadowMapDirty=!1,this._light.shadow.bias=this._shadowMapSize<1024?-.002:this._shadowMapSize<2048?-.001:-8e-4,this._light.shadow.mapSize.set(this._shadowMapSize,this._shadowMapSize),this._light.shadow.map?.dispose(),this._light.shadow.map=null,this._light.shadow.needsUpdate=!0)}isEnabled(t){return this._isEnabled}setEnabled(t,e){return this._isEnabled===e?!0:e?this.applyEffect(t):this.removeEffect(t)}applyEffect(t){const e=t.get3DRendererObject();return e?(e.add(this._light),e.add(this._light.target),this._shadowCameraHelper&&e.add(this._shadowCameraHelper),this._isEnabled=!0,!0):!1}removeEffect(t){const e=t.get3DRendererObject();return e?(e.remove(this._light),e.remove(this._light.target),this._shadowCameraHelper&&e.remove(this._shadowCameraHelper),this._isEnabled=!1,!0):!1}updatePreRender(t){if(this._updateShadowCamera(),this._updateShadowMapSize(),!t.getRuntimeLayer)return;const e=t.getRuntimeLayer(),d=e.getCameraX(),_=e.getCameraY(),f=e.getCameraZ(e.getInitialCamera3DFieldOfView()),a=Math.floor(d/100)*100,s=Math.floor(_/100)*100,r=Math.floor(f/100)*100;if(this._top==="Y-"){const o=a+this._distanceFromCamera*Math.cos(i.toRad(this._rotation+90))*Math.cos(i.toRad(this._elevation)),h=s-this._distanceFromCamera*Math.sin(i.toRad(this._elevation)),n=r+this._distanceFromCamera*Math.sin(i.toRad(this._rotation+90))*Math.cos(i.toRad(this._elevation));this._light.position.set(o,h,n),this._light.target.position.set(a,s,r)}else{const o=a+this._distanceFromCamera*Math.cos(i.toRad(this._rotation+90))*Math.cos(i.toRad(this._elevation)),h=s+this._distanceFromCamera*Math.sin(i.toRad(this._rotation+90))*Math.cos(i.toRad(this._elevation)),n=r+this._distanceFromCamera*Math.sin(i.toRad(this._elevation));this._light.position.set(o,h,n),this._light.target.position.set(a,s,r)}}updateDoubleParameter(t,e){t==="intensity"?this._light.intensity=e:t==="elevation"?this._elevation=e:t==="rotation"?this._rotation=e:t==="distanceFromCamera"?this._distanceFromCamera=e:t==="frustumSize"&&(this._frustumSize=e)}getDoubleParameter(t){return t==="intensity"?this._light.intensity:t==="elevation"?this._elevation:t==="rotation"?this._rotation:t==="distanceFromCamera"?this._distanceFromCamera:t==="frustumSize"?this._frustumSize:0}updateStringParameter(t,e){t==="color"&&(this._light.color=new THREE.Color(i.rgbOrHexStringToNumber(e))),t==="shadowQuality"&&(e==="low"&&this._shadowMapSize!==512&&(this._shadowMapSize=512,this._shadowMapDirty=!0),e==="medium"&&this._shadowMapSize!==1024&&(this._shadowMapSize=1024,this._shadowMapDirty=!0),e==="high"&&this._shadowMapSize!==2048&&(this._shadowMapSize=2048,this._shadowMapDirty=!0))}updateColorParameter(t,e){t==="color"&&this._light.color.setHex(e)}getColorParameter(t){return t==="color"?this._light.color.getHex():0}updateBooleanParameter(t,e){t==="isCastingShadow"&&(this._light.castShadow=e)}getNetworkSyncData(){return{i:this._light.intensity,c:this._light.color.getHex(),e:this._elevation,r:this._rotation,t:this._top}}updateFromNetworkSyncData(t){this._light.intensity=t.i,this._light.color.setHex(t.c),this._elevation=t.e,this._rotation=t.r,this._top=t.t}}}})})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=DirectionalLight.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../GDevelop/Extensions/3D/DirectionalLight.ts"],
|
|
4
|
-
"sourcesContent": ["namespace gdjs {\n interface DirectionalLightFilterNetworkSyncData {\n i: number;\n c: number;\n e: number;\n r: number;\n t: string;\n }\n gdjs.PixiFiltersTools.registerFilterCreator(\n 'Scene3D::DirectionalLight',\n new (class implements gdjs.PixiFiltersTools.FilterCreator {\n makeFilter(\n target: EffectsTarget,\n effectData: EffectData\n ): gdjs.PixiFiltersTools.Filter {\n if (typeof THREE === 'undefined') {\n return new gdjs.PixiFiltersTools.EmptyFilter();\n }\n return new (class implements gdjs.PixiFiltersTools.Filter {\n light: THREE.DirectionalLight;\n rotationObject: THREE.Group;\n _isEnabled: boolean = false;\n top: string = 'Y-';\n elevation: float = 45;\n rotation: float = 0;\n\n constructor() {\n this.light = new THREE.DirectionalLight();\n this.light.position.set(1, 0, 0);\n this.rotationObject = new THREE.Group();\n this.rotationObject.add(this.light);\n this.updateRotation();\n }\n\n isEnabled(target: EffectsTarget): boolean {\n return this._isEnabled;\n }\n setEnabled(target: EffectsTarget, enabled: boolean): boolean {\n if (this._isEnabled === enabled) {\n return true;\n }\n if (enabled) {\n return this.applyEffect(target);\n } else {\n return this.removeEffect(target);\n }\n }\n applyEffect(target: EffectsTarget): boolean {\n const scene = target.get3DRendererObject() as\n | THREE.Scene\n | null\n | undefined;\n if (!scene) {\n return false;\n }\n scene.add(this.rotationObject);\n this._isEnabled = true;\n return true;\n }\n removeEffect(target: EffectsTarget): boolean {\n const scene = target.get3DRendererObject() as\n | THREE.Scene\n | null\n | undefined;\n if (!scene) {\n return false;\n }\n scene.remove(this.rotationObject);\n this._isEnabled = false;\n return true;\n }\n updatePreRender(target: gdjs.EffectsTarget): any {}\n updateDoubleParameter(parameterName: string, value: number): void {\n if (parameterName === 'intensity') {\n this.light.intensity = value;\n } else if (parameterName === 'elevation') {\n this.elevation = value;\n this.updateRotation();\n } else if (parameterName === 'rotation') {\n this.rotation = value;\n this.updateRotation();\n }\n }\n getDoubleParameter(parameterName: string): number {\n if (parameterName === 'intensity') {\n return this.light.intensity;\n } else if (parameterName === 'elevation') {\n return this.elevation;\n } else if (parameterName === 'rotation') {\n return this.rotation;\n }\n return 0;\n }\n updateStringParameter(parameterName: string, value: string): void {\n if (parameterName === 'color') {\n this.light.color = new THREE.Color(\n gdjs.rgbOrHexStringToNumber(value)\n );\n }\n if (parameterName === 'top') {\n this.top = value;\n this.updateRotation();\n }\n }\n updateColorParameter(parameterName: string, value: number): void {\n if (parameterName === 'color') {\n this.light.color.setHex(value);\n }\n }\n getColorParameter(parameterName: string): number {\n if (parameterName === 'color') {\n return this.light.color.getHex();\n }\n return 0;\n }\n updateBooleanParameter(parameterName: string, value: boolean): void {}\n updateRotation() {\n if (this.top === 'Z+') {\n // 0\u00B0 is a light from the right of the screen.\n this.rotationObject.rotation.z = gdjs.toRad(this.rotation);\n this.rotationObject.rotation.y = -gdjs.toRad(this.elevation);\n } else {\n // 0\u00B0 becomes a light from Z+.\n this.rotationObject.rotation.y = gdjs.toRad(this.rotation - 90);\n this.rotationObject.rotation.z = -gdjs.toRad(this.elevation);\n }\n }\n getNetworkSyncData(): DirectionalLightFilterNetworkSyncData {\n return {\n i: this.light.intensity,\n c: this.light.color.getHex(),\n e: this.elevation,\n r: this.rotation,\n t: this.top,\n };\n }\n updateFromNetworkSyncData(syncData: any): void {\n this.light.intensity = syncData.i;\n this.light.color.setHex(syncData.c);\n this.elevation = syncData.e;\n this.rotation = syncData.r;\n this.top = syncData.t;\n this.updateRotation();\n }\n })();\n }\n })()\n );\n}\n"],
|
|
5
|
-
"mappings": "AAAA,GAAU,MAAV,UAAU,EAAV,CAQE,EAAK,iBAAiB,sBACpB,4BACA,GAAK,MAAqD,CACxD,WACE,EACA,EAC8B,CAC9B,MAAI,OAAO,QAAU,YACZ,GAAI,GAAK,iBAAiB,YAE5B,GAAK,MAA8C,
|
|
4
|
+
"sourcesContent": ["namespace gdjs {\n interface DirectionalLightFilterNetworkSyncData {\n i: number;\n c: number;\n e: number;\n r: number;\n t: string;\n }\n const shadowHelper = false;\n gdjs.PixiFiltersTools.registerFilterCreator(\n 'Scene3D::DirectionalLight',\n new (class implements gdjs.PixiFiltersTools.FilterCreator {\n makeFilter(\n target: EffectsTarget,\n effectData: EffectData\n ): gdjs.PixiFiltersTools.Filter {\n if (typeof THREE === 'undefined') {\n return new gdjs.PixiFiltersTools.EmptyFilter();\n }\n return new (class implements gdjs.PixiFiltersTools.Filter {\n private _light: THREE.DirectionalLight;\n private _isEnabled: boolean = false;\n private _top: string = 'Y-';\n private _elevation: float = 45;\n private _rotation: float = 0;\n\n private _shadowMapDirty = true;\n private _shadowMapSize: float = 1024;\n\n private _shadowCameraDirty = true;\n private _distanceFromCamera: float = 1500;\n private _frustumSize: float = 4000;\n private _shadowCameraHelper: THREE.CameraHelper | null;\n\n constructor() {\n this._light = new THREE.DirectionalLight();\n\n if (shadowHelper) {\n this._shadowCameraHelper = new THREE.CameraHelper(\n this._light.shadow.camera\n );\n } else {\n this._shadowCameraHelper = null;\n }\n\n this._light.shadow.camera.updateProjectionMatrix();\n }\n\n private _updateShadowCamera(): void {\n if (!this._shadowCameraDirty) {\n return;\n }\n this._shadowCameraDirty = false;\n\n this._light.shadow.camera.near = 1;\n this._light.shadow.camera.far = this._distanceFromCamera + 10000;\n this._light.shadow.camera.right = this._frustumSize / 2;\n this._light.shadow.camera.left = -this._frustumSize / 2;\n this._light.shadow.camera.top = this._frustumSize / 2;\n this._light.shadow.camera.bottom = -this._frustumSize / 2;\n }\n\n private _updateShadowMapSize(): void {\n if (!this._shadowMapDirty) {\n return;\n }\n this._shadowMapDirty = false;\n\n // Avoid shadow acne due to depth buffer precision. We choose a value\n // small enough to avoid \"peter panning\" but not too small to avoid\n // shadow acne on low/medium quality shadow maps.\n // If needed, this could become a parameter of the effect.\n this._light.shadow.bias =\n this._shadowMapSize < 1024\n ? -0.002\n : this._shadowMapSize < 2048\n ? -0.001\n : -0.0008;\n\n this._light.shadow.mapSize.set(\n this._shadowMapSize,\n this._shadowMapSize\n );\n\n // Force the recreation of the shadow map texture:\n this._light.shadow.map?.dispose();\n this._light.shadow.map = null;\n this._light.shadow.needsUpdate = true;\n }\n\n isEnabled(target: EffectsTarget): boolean {\n return this._isEnabled;\n }\n setEnabled(target: EffectsTarget, enabled: boolean): boolean {\n if (this._isEnabled === enabled) {\n return true;\n }\n if (enabled) {\n return this.applyEffect(target);\n } else {\n return this.removeEffect(target);\n }\n }\n applyEffect(target: EffectsTarget): boolean {\n const scene = target.get3DRendererObject() as\n | THREE.Scene\n | null\n | undefined;\n if (!scene) {\n return false;\n }\n scene.add(this._light);\n scene.add(this._light.target);\n if (this._shadowCameraHelper) {\n scene.add(this._shadowCameraHelper);\n }\n\n this._isEnabled = true;\n return true;\n }\n removeEffect(target: EffectsTarget): boolean {\n const scene = target.get3DRendererObject() as\n | THREE.Scene\n | null\n | undefined;\n if (!scene) {\n return false;\n }\n scene.remove(this._light);\n scene.remove(this._light.target);\n if (this._shadowCameraHelper) {\n scene.remove(this._shadowCameraHelper);\n }\n this._isEnabled = false;\n return true;\n }\n updatePreRender(target: gdjs.EffectsTarget): any {\n this._updateShadowCamera();\n this._updateShadowMapSize();\n\n if (!target.getRuntimeLayer) {\n return;\n }\n const layer = target.getRuntimeLayer();\n const x = layer.getCameraX();\n const y = layer.getCameraY();\n const z = layer.getCameraZ(layer.getInitialCamera3DFieldOfView());\n\n const roundedX = Math.floor(x / 100) * 100;\n const roundedY = Math.floor(y / 100) * 100;\n const roundedZ = Math.floor(z / 100) * 100;\n if (this._top === 'Y-') {\n const posLightX =\n roundedX +\n this._distanceFromCamera *\n Math.cos(gdjs.toRad(this._rotation + 90)) *\n Math.cos(gdjs.toRad(this._elevation));\n const posLightY =\n roundedY -\n this._distanceFromCamera *\n Math.sin(gdjs.toRad(this._elevation));\n const posLightZ =\n roundedZ +\n this._distanceFromCamera *\n Math.sin(gdjs.toRad(this._rotation + 90)) *\n Math.cos(gdjs.toRad(this._elevation));\n this._light.position.set(posLightX, posLightY, posLightZ);\n this._light.target.position.set(roundedX, roundedY, roundedZ);\n } else {\n const posLightX =\n roundedX +\n this._distanceFromCamera *\n Math.cos(gdjs.toRad(this._rotation + 90)) *\n Math.cos(gdjs.toRad(this._elevation));\n const posLightY =\n roundedY +\n this._distanceFromCamera *\n Math.sin(gdjs.toRad(this._rotation + 90)) *\n Math.cos(gdjs.toRad(this._elevation));\n const posLightZ =\n roundedZ +\n this._distanceFromCamera *\n Math.sin(gdjs.toRad(this._elevation));\n\n this._light.position.set(posLightX, posLightY, posLightZ);\n this._light.target.position.set(roundedX, roundedY, roundedZ);\n }\n }\n updateDoubleParameter(parameterName: string, value: number): void {\n if (parameterName === 'intensity') {\n this._light.intensity = value;\n } else if (parameterName === 'elevation') {\n this._elevation = value;\n } else if (parameterName === 'rotation') {\n this._rotation = value;\n } else if (parameterName === 'distanceFromCamera') {\n this._distanceFromCamera = value;\n } else if (parameterName === 'frustumSize') {\n this._frustumSize = value;\n }\n }\n getDoubleParameter(parameterName: string): number {\n if (parameterName === 'intensity') {\n return this._light.intensity;\n } else if (parameterName === 'elevation') {\n return this._elevation;\n } else if (parameterName === 'rotation') {\n return this._rotation;\n } else if (parameterName === 'distanceFromCamera') {\n return this._distanceFromCamera;\n } else if (parameterName === 'frustumSize') {\n return this._frustumSize;\n }\n return 0;\n }\n updateStringParameter(parameterName: string, value: string): void {\n if (parameterName === 'color') {\n this._light.color = new THREE.Color(\n gdjs.rgbOrHexStringToNumber(value)\n );\n }\n if (parameterName === 'shadowQuality') {\n if (value === 'low' && this._shadowMapSize !== 512) {\n this._shadowMapSize = 512;\n this._shadowMapDirty = true;\n }\n if (value === 'medium' && this._shadowMapSize !== 1024) {\n this._shadowMapSize = 1024;\n this._shadowMapDirty = true;\n }\n if (value === 'high' && this._shadowMapSize !== 2048) {\n this._shadowMapSize = 2048;\n this._shadowMapDirty = true;\n }\n }\n }\n updateColorParameter(parameterName: string, value: number): void {\n if (parameterName === 'color') {\n this._light.color.setHex(value);\n }\n }\n getColorParameter(parameterName: string): number {\n if (parameterName === 'color') {\n return this._light.color.getHex();\n }\n return 0;\n }\n updateBooleanParameter(parameterName: string, value: boolean): void {\n if (parameterName === 'isCastingShadow') {\n this._light.castShadow = value;\n }\n }\n getNetworkSyncData(): DirectionalLightFilterNetworkSyncData {\n return {\n i: this._light.intensity,\n c: this._light.color.getHex(),\n e: this._elevation,\n r: this._rotation,\n t: this._top,\n };\n }\n updateFromNetworkSyncData(syncData: any): void {\n this._light.intensity = syncData.i;\n this._light.color.setHex(syncData.c);\n this._elevation = syncData.e;\n this._rotation = syncData.r;\n this._top = syncData.t;\n }\n })();\n }\n })()\n );\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -859,7 +859,9 @@ module.exports = {
|
|
|
859
859
|
propertyName === 'rightFaceResourceRepeat' ||
|
|
860
860
|
propertyName === 'topFaceResourceRepeat' ||
|
|
861
861
|
propertyName === 'bottomFaceResourceRepeat' ||
|
|
862
|
-
propertyName === 'enableTextureTransparency'
|
|
862
|
+
propertyName === 'enableTextureTransparency' ||
|
|
863
|
+
propertyName === 'isCastingShadow' ||
|
|
864
|
+
propertyName === 'isReceivingShadow'
|
|
863
865
|
) {
|
|
864
866
|
objectContent[propertyName] = newValue === '1';
|
|
865
867
|
return true;
|
|
@@ -887,8 +889,8 @@ module.exports = {
|
|
|
887
889
|
.getOrCreate('facesOrientation')
|
|
888
890
|
.setValue(objectContent.facesOrientation || 'Y')
|
|
889
891
|
.setType('choice')
|
|
890
|
-
.
|
|
891
|
-
.
|
|
892
|
+
.addChoice('Y', 'Y')
|
|
893
|
+
.addChoice('Z', 'Z')
|
|
892
894
|
.setLabel(_('Faces orientation'))
|
|
893
895
|
.setDescription(
|
|
894
896
|
_(
|
|
@@ -948,8 +950,8 @@ module.exports = {
|
|
|
948
950
|
.getOrCreate('backFaceUpThroughWhichAxisRotation')
|
|
949
951
|
.setValue(objectContent.backFaceUpThroughWhichAxisRotation || 'X')
|
|
950
952
|
.setType('choice')
|
|
951
|
-
.
|
|
952
|
-
.
|
|
953
|
+
.addChoice('X', 'X')
|
|
954
|
+
.addChoice('Y', 'Y')
|
|
953
955
|
.setLabel(_('Back face orientation'))
|
|
954
956
|
.setDescription(
|
|
955
957
|
_(
|
|
@@ -1083,12 +1085,29 @@ module.exports = {
|
|
|
1083
1085
|
|
|
1084
1086
|
objectProperties
|
|
1085
1087
|
.getOrCreate('materialType')
|
|
1086
|
-
.setValue(objectContent.materialType || '
|
|
1088
|
+
.setValue(objectContent.materialType || 'StandardWithoutMetalness')
|
|
1087
1089
|
.setType('choice')
|
|
1088
|
-
.
|
|
1089
|
-
.
|
|
1090
|
+
.addChoice('Basic', _('Basic (no lighting, no shadows)'))
|
|
1091
|
+
.addChoice(
|
|
1092
|
+
'StandardWithoutMetalness',
|
|
1093
|
+
_('Standard (without metalness)')
|
|
1094
|
+
)
|
|
1090
1095
|
.setLabel(_('Material type'));
|
|
1091
1096
|
|
|
1097
|
+
objectProperties
|
|
1098
|
+
.getOrCreate('isCastingShadow')
|
|
1099
|
+
.setValue(objectContent.isCastingShadow ? 'true' : 'false')
|
|
1100
|
+
.setType('boolean')
|
|
1101
|
+
.setLabel(_('Shadow casting'))
|
|
1102
|
+
.setGroup(_('Shadows'));
|
|
1103
|
+
|
|
1104
|
+
objectProperties
|
|
1105
|
+
.getOrCreate('isReceivingShadow')
|
|
1106
|
+
.setValue(objectContent.isReceivingShadow ? 'true' : 'false')
|
|
1107
|
+
.setType('boolean')
|
|
1108
|
+
.setLabel(_('Shadow receiving'))
|
|
1109
|
+
.setGroup(_('Shadows'));
|
|
1110
|
+
|
|
1092
1111
|
return objectProperties;
|
|
1093
1112
|
};
|
|
1094
1113
|
Cube3DObject.content = {
|
|
@@ -1116,8 +1135,10 @@ module.exports = {
|
|
|
1116
1135
|
rightFaceResourceRepeat: false,
|
|
1117
1136
|
topFaceResourceRepeat: false,
|
|
1118
1137
|
bottomFaceResourceRepeat: false,
|
|
1119
|
-
materialType: '
|
|
1138
|
+
materialType: 'StandardWithoutMetalness',
|
|
1120
1139
|
tint: '255;255;255',
|
|
1140
|
+
isCastingShadow: true,
|
|
1141
|
+
isReceivingShadow: true,
|
|
1121
1142
|
};
|
|
1122
1143
|
|
|
1123
1144
|
Cube3DObject.updateInitialInstanceProperty = function (
|
|
@@ -1913,6 +1934,34 @@ module.exports = {
|
|
|
1913
1934
|
.setLabel(_('Rotation (in degrees)'))
|
|
1914
1935
|
.setType('number')
|
|
1915
1936
|
.setGroup(_('Orientation'));
|
|
1937
|
+
properties
|
|
1938
|
+
.getOrCreate('isCastingShadow')
|
|
1939
|
+
.setValue('true')
|
|
1940
|
+
.setLabel(_('Shadow casting'))
|
|
1941
|
+
.setType('boolean')
|
|
1942
|
+
.setGroup(_('Shadows'));
|
|
1943
|
+
properties
|
|
1944
|
+
.getOrCreate('shadowQuality')
|
|
1945
|
+
.setValue('medium')
|
|
1946
|
+
.addChoice('low', _('Low quality'))
|
|
1947
|
+
.addChoice('medium', _('Medium quality'))
|
|
1948
|
+
.addChoice('high', _('High quality'))
|
|
1949
|
+
.setLabel(_('Shadow quality'))
|
|
1950
|
+
.setType('choice')
|
|
1951
|
+
.setGroup(_('Shadows'));
|
|
1952
|
+
properties
|
|
1953
|
+
.getOrCreate('frustumSize')
|
|
1954
|
+
.setValue('4000')
|
|
1955
|
+
.setLabel(_('Shadow frustum size'))
|
|
1956
|
+
.setType('number')
|
|
1957
|
+
.setGroup(_('Shadows'))
|
|
1958
|
+
.setAdvanced(true);
|
|
1959
|
+
properties
|
|
1960
|
+
.getOrCreate('distanceFromCamera')
|
|
1961
|
+
.setValue('1500')
|
|
1962
|
+
.setLabel(_("Distance from layer's camera"))
|
|
1963
|
+
.setType('number')
|
|
1964
|
+
.setAdvanced(true);
|
|
1916
1965
|
}
|
|
1917
1966
|
{
|
|
1918
1967
|
const effect = extension
|
|
@@ -3210,6 +3259,8 @@ module.exports = {
|
|
|
3210
3259
|
|
|
3211
3260
|
this._threeObject = new THREE.Group();
|
|
3212
3261
|
this._threeObject.rotation.order = 'ZYX';
|
|
3262
|
+
this._threeObject.castShadow = true;
|
|
3263
|
+
this._threeObject.receiveShadow = true;
|
|
3213
3264
|
this._threeGroup.add(this._threeObject);
|
|
3214
3265
|
}
|
|
3215
3266
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var gdjs;(function(
|
|
1
|
+
var gdjs;(function(i){const o=r=>{switch(r){case"ModelOrigin":return null;case"ObjectCenter":return[.5,.5,.5];case"BottomCenterZ":return[.5,.5,0];case"BottomCenterY":return[.5,1,.5];case"TopLeft":return[0,0,0];default:return null}};class a extends i.RuntimeObject3D{constructor(e,t){super(e,t);this._materialType=i.Model3DRuntimeObject.MaterialType.Basic;this._currentAnimationIndex=0;this._animationSpeedScale=1;this._animationPaused=!1;this._crossfadeDuration=0;this._isCastingShadow=!0;this._isReceivingShadow=!0;this._modelResourceName=t.content.modelResourceName,this._animations=t.content.animations,this._originPoint=o(t.content.originLocation),this._centerPoint=o(t.content.centerLocation),this._renderer=new i.Model3DRuntimeObjectRenderer(this,e),this._materialType=this._convertMaterialType(t.content.materialType),this.setIsCastingShadow(t.content.isCastingShadow),this.setIsReceivingShadow(t.content.isReceivingShadow),this.onModelChanged(t),this._crossfadeDuration=t.content.crossfadeDuration||0,this.onCreated()}onModelChanged(e){this._updateModel(e),this._animations.length>0&&this._renderer.playAnimation(this._animations[0].source,this._animations[0].loop)}updateFromObjectData(e,t){return super.updateFromObjectData(e,t),e.content.materialType!==t.content.materialType&&(this._materialType=this._convertMaterialType(t.content.materialType)),e.content.modelResourceName!==t.content.modelResourceName?this._reloadModel(t):(e.content.width!==t.content.width||e.content.height!==t.content.height||e.content.depth!==t.content.depth||e.content.rotationX!==t.content.rotationX||e.content.rotationY!==t.content.rotationY||e.content.rotationZ!==t.content.rotationZ||e.content.keepAspectRatio!==t.content.keepAspectRatio||e.content.materialType!==t.content.materialType)&&this._updateModel(t),e.content.originLocation!==t.content.originLocation&&(this._originPoint=o(t.content.originLocation)),e.content.centerLocation!==t.content.centerLocation&&(this._centerPoint=o(t.content.centerLocation)),e.content.isCastingShadow!==t.content.isCastingShadow&&this.setIsCastingShadow(t.content.isCastingShadow),e.content.isReceivingShadow!==t.content.isReceivingShadow&&this.setIsReceivingShadow(t.content.isReceivingShadow),!0}getNetworkSyncData(){return{...super.getNetworkSyncData(),mt:this._materialType,op:this._originPoint,cp:this._centerPoint,anis:this._animations,ai:this._currentAnimationIndex,ass:this._animationSpeedScale,ap:this._animationPaused,cfd:this._crossfadeDuration}}updateFromNetworkSyncData(e){super.updateFromNetworkSyncData(e),e.mt!==void 0&&(this._materialType=e.mt),e.op!==void 0&&(this._originPoint=e.op),e.cp!==void 0&&(this._centerPoint=e.cp),e.anis!==void 0&&(this._animations=e.anis),e.ai!==void 0&&this.setAnimationIndex(e.ai),e.ass!==void 0&&this.setAnimationSpeedScale(e.ass),e.ap!==void 0&&e.ap!==this.isAnimationPaused()&&(e.ap?this.pauseAnimation():this.resumeAnimation()),e.cfd!==void 0&&(this._crossfadeDuration=e.cfd)}_reloadModel(e){this._modelResourceName=e.content.modelResourceName,this._renderer._reloadModel(this,this._runtimeScene),this.onModelChanged(e)}_updateModel(e){const t=e.content.rotationX||0,s=e.content.rotationY||0,d=e.content.rotationZ||0,n=e.content.keepAspectRatio;this._renderer._updateModel(t,s,d,this._getOriginalWidth(),this._getOriginalHeight(),this._getOriginalDepth(),n)}getRenderer(){return this._renderer}_convertMaterialType(e){return e==="KeepOriginal"?i.Model3DRuntimeObject.MaterialType.KeepOriginal:e==="StandardWithoutMetalness"?i.Model3DRuntimeObject.MaterialType.StandardWithoutMetalness:i.Model3DRuntimeObject.MaterialType.Basic}update(e){const t=this.getElapsedTime()/1e3;this._renderer.updateAnimation(t)}getAnimationIndex(){return this._currentAnimationIndex}setAnimationIndex(e){if(e=e|0,e<this._animations.length&&this._currentAnimationIndex!==e&&e>=0){const t=this._animations[e];this._currentAnimationIndex=e,this._renderer.playAnimation(t.source,t.loop),this._animationPaused&&this._renderer.pauseAnimation()}}getAnimationName(){return this._currentAnimationIndex>=this._animations.length?"":this._animations[this._currentAnimationIndex].name}setAnimationName(e){if(!e)return;const t=this._animations.findIndex(s=>s.name===e);t>=0&&this.setAnimationIndex(t)}isCurrentAnimationName(e){return this.getAnimationName()===e}hasAnimationEnded(){return this._renderer.hasAnimationEnded()}setIsCastingShadow(e){this._isCastingShadow=e,this._renderer._updateShadow()}setIsReceivingShadow(e){this._isReceivingShadow=e,this._renderer._updateShadow()}setCrossfadeDuration(e){this._crossfadeDuration!==e&&(this._crossfadeDuration=e)}isAnimationPaused(){return this._animationPaused}pauseAnimation(){this._animationPaused=!0,this._renderer.pauseAnimation()}resumeAnimation(){this._animationPaused=!1,this._renderer.resumeAnimation()}getAnimationSpeedScale(){return this._animationSpeedScale}setAnimationSpeedScale(e){this._animationSpeedScale=e,this._renderer.setAnimationTimeScale(e)}getAnimationElapsedTime(){return this._renderer.getAnimationElapsedTime()}setAnimationElapsedTime(e){this._renderer.setAnimationElapsedTime(e),this._animationPaused||this._renderer.resumeAnimation()}getAnimationDuration(){return this._renderer.getAnimationDuration(this._animations[this._currentAnimationIndex].source)}getCenterX(){const e=this._renderer.getCenterPoint();return this.getWidth()*e[0]}getCenterY(){const e=this._renderer.getCenterPoint();return this.getHeight()*e[1]}getCenterZ(){const e=this._renderer.getCenterPoint();return this.getDepth()*e[2]}getDrawableX(){const e=this._renderer.getOriginPoint();return this.getX()-this.getWidth()*e[0]}getDrawableY(){const e=this._renderer.getOriginPoint();return this.getY()-this.getHeight()*e[1]}getDrawableZ(){const e=this._renderer.getOriginPoint();return this.getZ()-this.getDepth()*e[2]}}i.Model3DRuntimeObject=a,function(e){let r;(function(n){n[n.Basic=0]="Basic",n[n.StandardWithoutMetalness=1]="StandardWithoutMetalness",n[n.KeepOriginal=2]="KeepOriginal"})(r=e.MaterialType||(e.MaterialType={}))}(a=i.Model3DRuntimeObject||(i.Model3DRuntimeObject={})),i.registerObject("Scene3D::Model3DObject",i.Model3DRuntimeObject)})(gdjs||(gdjs={}));
|
|
2
2
|
//# sourceMappingURL=Model3DRuntimeObject.js.map
|