From 96bc3df51e0e7a141e46d6e8d4195544dd4d9169 Mon Sep 17 00:00:00 2001 From: Michael Mainguy Date: Tue, 9 Dec 2025 12:33:31 -0600 Subject: [PATCH] Fix position export and add target physics improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use getAbsolutePosition() in all config builders for correct world coords - Add TargetComponent case to meshCollector for target export - Add shared target body cache in RockFactory (asteroids can share targets) - Add debug logging throughout export and physics pipelines - Pass targetId to RockFactory for proper target body sharing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../src/configBuilders/asteroidBuilder.ts | 12 +- .../src/configBuilders/baseBuilder.ts | 2 +- .../src/configBuilders/planetBuilder.ts | 2 +- .../src/configBuilders/shipBuilder.ts | 2 +- .../src/configBuilders/sunBuilder.ts | 2 +- .../src/configBuilders/targetBuilder.ts | 2 +- bjsEditorPlugin/src/exporter.ts | 5 + bjsEditorPlugin/src/meshCollector.ts | 4 + .../1679685b-ca9c-4a1c-8161-9f6064cb1d7c.json | 104 ++++++++++++- .../790b6a71-5425-47f2-ae64-f2d04e2e3c6d.json | 141 +----------------- gameEditor/assets/example.scene/preview.png | Bin 65983 -> 42342 bytes gameEditor/public/scene/example.babylon | 2 +- gameEditor/src/scripts.ts | 6 +- src/environment/asteroids/rockFactory.ts | 58 +++++-- src/levels/config/levelDeserializer.ts | 17 ++- 15 files changed, 193 insertions(+), 166 deletions(-) diff --git a/bjsEditorPlugin/src/configBuilders/asteroidBuilder.ts b/bjsEditorPlugin/src/configBuilders/asteroidBuilder.ts index 1e5cf63..c840d8d 100644 --- a/bjsEditorPlugin/src/configBuilders/asteroidBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/asteroidBuilder.ts @@ -14,9 +14,19 @@ function buildSingleAsteroid(mesh: AbstractMesh, index: number): AsteroidConfig const rotation = toVector3Array(mesh.rotation); const hasRotation = rotation[0] !== 0 || rotation[1] !== 0 || rotation[2] !== 0; + // Debug: compare local vs absolute position + const localPos = mesh.position; + const absPos = mesh.getAbsolutePosition(); + if (Math.abs(localPos.x - absPos.x) > 1 || Math.abs(localPos.y - absPos.y) > 1 || Math.abs(localPos.z - absPos.z) > 1) { + console.warn(`[AsteroidBuilder] Position mismatch for ${mesh.name}:`, + `local=(${localPos.x.toFixed(1)}, ${localPos.y.toFixed(1)}, ${localPos.z.toFixed(1)})`, + `absolute=(${absPos.x.toFixed(1)}, ${absPos.y.toFixed(1)}, ${absPos.z.toFixed(1)})`, + `parent=${mesh.parent?.name || 'none'}`); + } + return { id: mesh.name || `asteroid-${index}`, - position: toVector3Array(mesh.position), + position: toVector3Array(mesh.getAbsolutePosition()), // Use absolute position rotation: hasRotation ? rotation : undefined, scale: mesh.scaling.x, linearVelocity: extractVector3(script.linearVelocity, [0, 0, 0]), diff --git a/bjsEditorPlugin/src/configBuilders/baseBuilder.ts b/bjsEditorPlugin/src/configBuilders/baseBuilder.ts index 9ee2b7c..c3962f0 100644 --- a/bjsEditorPlugin/src/configBuilders/baseBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/baseBuilder.ts @@ -16,7 +16,7 @@ export function buildBaseConfig(mesh: AbstractMesh | null): StartBaseConfig | un const hasRotation = rotation[0] !== 0 || rotation[1] !== 0 || rotation[2] !== 0; return { - position: toVector3Array(mesh.position), + position: toVector3Array(mesh.getAbsolutePosition()), rotation: hasRotation ? rotation : undefined, baseGlbPath: glbPath || undefined, landingGlbPath: (script.landingGlbPath as string) || undefined, diff --git a/bjsEditorPlugin/src/configBuilders/planetBuilder.ts b/bjsEditorPlugin/src/configBuilders/planetBuilder.ts index 84db341..6330135 100644 --- a/bjsEditorPlugin/src/configBuilders/planetBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/planetBuilder.ts @@ -14,7 +14,7 @@ function buildSinglePlanet(mesh: AbstractMesh): PlanetConfig { return { name: mesh.name || "planet", - position: toVector3Array(mesh.position), + position: toVector3Array(mesh.getAbsolutePosition()), diameter: (script.diameter as number) ?? 100, texturePath: (script.texturePath as string) || "planet_texture.jpg", rotation: hasRotation(mesh) ? toVector3Array(mesh.rotation) : undefined diff --git a/bjsEditorPlugin/src/configBuilders/shipBuilder.ts b/bjsEditorPlugin/src/configBuilders/shipBuilder.ts index 9ad6c8d..50c42a5 100644 --- a/bjsEditorPlugin/src/configBuilders/shipBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/shipBuilder.ts @@ -13,7 +13,7 @@ export function buildShipConfig(mesh: AbstractMesh | null): ShipConfig { const script = getScriptValues(mesh); return { - position: toVector3Array(mesh.position), + position: toVector3Array(mesh.getAbsolutePosition()), rotation: mesh.rotation ? toVector3Array(mesh.rotation) : undefined, linearVelocity: extractVector3OrUndefined(script.linearVelocity), angularVelocity: extractVector3OrUndefined(script.angularVelocity) diff --git a/bjsEditorPlugin/src/configBuilders/sunBuilder.ts b/bjsEditorPlugin/src/configBuilders/sunBuilder.ts index 2c4c4db..b91e610 100644 --- a/bjsEditorPlugin/src/configBuilders/sunBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/sunBuilder.ts @@ -21,7 +21,7 @@ export function buildSunConfig(mesh: AbstractMesh | null): SunConfig { const hasRotation = rotation[0] !== 0 || rotation[1] !== 0 || rotation[2] !== 0; return { - position: toVector3Array(mesh.position), + position: toVector3Array(mesh.getAbsolutePosition()), rotation: hasRotation ? rotation : undefined, diameter: (script.diameter as number) ?? 50, intensity: (script.intensity as number) ?? 1000000, diff --git a/bjsEditorPlugin/src/configBuilders/targetBuilder.ts b/bjsEditorPlugin/src/configBuilders/targetBuilder.ts index 9d99949..cebdb12 100644 --- a/bjsEditorPlugin/src/configBuilders/targetBuilder.ts +++ b/bjsEditorPlugin/src/configBuilders/targetBuilder.ts @@ -15,7 +15,7 @@ function buildSingleTarget(node: TransformNode): TargetConfig { return { id: node.name || node.id, name: (script.displayName as string) || node.name || "Target", - position: toVector3Array(node.position) + position: toVector3Array(node.getAbsolutePosition()) }; } diff --git a/bjsEditorPlugin/src/exporter.ts b/bjsEditorPlugin/src/exporter.ts index d759eb0..ea8e140 100644 --- a/bjsEditorPlugin/src/exporter.ts +++ b/bjsEditorPlugin/src/exporter.ts @@ -14,6 +14,11 @@ import { buildTargetConfigs } from "./configBuilders/targetBuilder"; export function exportLevelConfig(scene: Scene): string { const meshes = collectMeshesByComponent(scene); + console.log(`[Exporter] Collected: ${meshes.asteroids.length} asteroids, ${meshes.targets.length} targets, ${meshes.planets.length} planets`); + if (meshes.targets.length > 0) { + console.log(`[Exporter] Target IDs: ${meshes.targets.map(t => t.name || t.id).join(', ')}`); + } + const config: LevelConfig = { version: "1.0", difficulty: "rookie", diff --git a/bjsEditorPlugin/src/meshCollector.ts b/bjsEditorPlugin/src/meshCollector.ts index 72d30d2..3572903 100644 --- a/bjsEditorPlugin/src/meshCollector.ts +++ b/bjsEditorPlugin/src/meshCollector.ts @@ -56,6 +56,10 @@ function categorizeByScript( case "BaseComponent": result.base = mesh; break; + case "TargetComponent": + // Targets can be Mesh or TransformNode - handle both + result.targets.push(mesh as unknown as TransformNode); + break; } } diff --git a/gameEditor/assets/example.scene/meshes/1679685b-ca9c-4a1c-8161-9f6064cb1d7c.json b/gameEditor/assets/example.scene/meshes/1679685b-ca9c-4a1c-8161-9f6064cb1d7c.json index 248a213..e185352 100644 --- a/gameEditor/assets/example.scene/meshes/1679685b-ca9c-4a1c-8161-9f6064cb1d7c.json +++ b/gameEditor/assets/example.scene/meshes/1679685b-ca9c-4a1c-8161-9f6064cb1d7c.json @@ -64,6 +64,7 @@ "geometryUniqueId": 1764787809875, "geometryId": "76c7442d-fb7e-4a05-b1c5-9c27b0beb0dc", "subMeshes": null, + "materialUniqueId": 46, "materialId": "default material", "metadata": { "type": "Box", @@ -138,7 +139,108 @@ "transformNodes": [], "cameras": [], "lights": [], - "materials": [], + "materials": [ + { + "tags": null, + "ambient": [ + 0, + 0, + 0 + ], + "diffuse": [ + 1, + 1, + 1 + ], + "specular": [ + 1, + 1, + 1 + ], + "emissive": [ + 0, + 0, + 0 + ], + "specularPower": 64, + "useAlphaFromDiffuseTexture": false, + "useEmissiveAsIllumination": false, + "linkEmissiveWithDiffuse": false, + "useSpecularOverAlpha": false, + "useReflectionOverAlpha": false, + "disableLighting": false, + "useObjectSpaceNormalMap": false, + "useParallax": false, + "useParallaxOcclusion": false, + "parallaxScaleBias": 0.05, + "roughness": 0, + "indexOfRefraction": 0.98, + "invertRefractionY": true, + "alphaCutOff": 0.4, + "useLightmapAsShadowmap": false, + "useReflectionFresnelFromSpecular": false, + "useGlossinessFromSpecularMapAlpha": false, + "maxSimultaneousLights": 32, + "invertNormalMapX": false, + "invertNormalMapY": false, + "twoSidedLighting": false, + "applyDecalMapAfterDetailMap": false, + "id": "default material", + "name": "default material", + "checkReadyOnEveryCall": false, + "checkReadyOnlyOnce": false, + "state": "", + "alpha": 1, + "backFaceCulling": true, + "cullBackFaces": true, + "_alphaMode": [ + 2 + ], + "_needDepthPrePass": false, + "disableDepthWrite": false, + "disableColorWrite": false, + "forceDepthWrite": false, + "depthFunction": 0, + "separateCullingPass": false, + "fogEnabled": true, + "pointSize": 1, + "zOffset": 0, + "zOffsetUnits": 0, + "pointsCloud": false, + "fillMode": 0, + "_isVertexOutputInvariant": false, + "stencil": { + "tags": null, + "func": 519, + "backFunc": 519, + "funcRef": 1, + "funcMask": 255, + "opStencilFail": 7680, + "opDepthFail": 7680, + "opStencilDepthPass": 7681, + "backOpStencilFail": 7680, + "backOpDepthFail": 7680, + "backOpStencilDepthPass": 7681, + "mask": 255, + "enabled": false + }, + "uniqueId": 46, + "plugins": { + "DetailMapConfiguration": { + "tags": null, + "diffuseBlendLevel": 1, + "roughnessBlendLevel": 1, + "bumpLevel": 1, + "normalBlendMethod": 0, + "isEnabled": false, + "name": "DetailMap", + "priority": 140, + "resolveIncludes": false, + "registerForExtraEvents": false + } + } + } + ], "geometries": { "boxes": [], "spheres": [], diff --git a/gameEditor/assets/example.scene/meshes/790b6a71-5425-47f2-ae64-f2d04e2e3c6d.json b/gameEditor/assets/example.scene/meshes/790b6a71-5425-47f2-ae64-f2d04e2e3c6d.json index 3da46b5..cc68c30 100644 --- a/gameEditor/assets/example.scene/meshes/790b6a71-5425-47f2-ae64-f2d04e2e3c6d.json +++ b/gameEditor/assets/example.scene/meshes/790b6a71-5425-47f2-ae64-f2d04e2e3c6d.json @@ -109,146 +109,7 @@ ], "parentId": 1764789858421 }, - "instances": [ - { - "name": "Asteroid", - "id": "Asteroid", - "isEnabled": true, - "isVisible": true, - "isPickable": true, - "checkCollisions": false, - "position": [ - 66.2149304569587, - 40.81207511231127, - -126.79009642287176 - ], - "scaling": [ - 5, - 5, - 5 - ], - "rotationQuaternion": [ - 0, - 0, - 0, - 1 - ], - "metadata": { - "scripts": [ - { - "key": "scripts/editorScripts/AsteroidComponent.ts", - "enabled": true, - "values": { - "linearVelocity": { - "type": "vector3", - "value": [ - 2, - 0, - 0 - ] - }, - "angularVelocity": { - "type": "vector3", - "value": [ - 0, - 0, - 0 - ] - }, - "mass": { - "type": "number", - "value": 1 - }, - "targetId": { - "type": "string", - "description": "Reference to a TargetComponent node", - "value": "" - }, - "targetMode": { - "type": "string", - "description": "orbit | moveToward | (empty)", - "value": "" - } - }, - "_id": "74563a74-be80-46fe-8dc3-189b03247c20" - } - ], - "parentId": 1764789858421 - }, - "animations": [], - "ranges": [], - "uniqueId": 71 - }, - { - "name": "Asteroid", - "id": "Asteroid", - "isEnabled": true, - "isVisible": true, - "isPickable": true, - "checkCollisions": false, - "position": [ - 0, - -22.646529278627046, - -74.97825372352042 - ], - "scaling": [ - 5, - 5, - 5 - ], - "rotationQuaternion": [ - 0, - 0, - 0, - 1 - ], - "metadata": { - "scripts": [ - { - "key": "scripts/editorScripts/AsteroidComponent.ts", - "enabled": true, - "values": { - "linearVelocity": { - "type": "vector3", - "value": [ - 0, - 0, - -2 - ] - }, - "angularVelocity": { - "type": "vector3", - "value": [ - 0, - 0, - 0 - ] - }, - "mass": { - "type": "number", - "value": 1 - }, - "targetId": { - "type": "string", - "description": "Reference to a TargetComponent node", - "value": "" - }, - "targetMode": { - "type": "string", - "description": "orbit | moveToward | (empty)", - "value": "" - } - }, - "_id": "79ae3cbb-7653-409c-9d0a-3e0b254e6731" - } - ], - "parentId": 1764789858421 - }, - "animations": [], - "ranges": [], - "uniqueId": 71 - } - ], + "instances": [], "animations": [], "ranges": [], "layerMask": 268435455, diff --git a/gameEditor/assets/example.scene/preview.png b/gameEditor/assets/example.scene/preview.png index 00988cccbf25824ee6bb20d4fb19f0be6f8daa9c..c5fef86313190697abd6cecc89140ea4ee31ff3c 100644 GIT binary patch literal 42342 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 i?DZehkLkzsWBSE5{mv`d@?{Grw)zHY`d9@3 literal 65983 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%0Ai(x0c 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 V^GJ50#sToTsiS)pcf~63e*jpDHIo1U diff --git a/gameEditor/public/scene/example.babylon b/gameEditor/public/scene/example.babylon index 768c3ec..1115b94 100644 --- a/gameEditor/public/scene/example.babylon +++ b/gameEditor/public/scene/example.babylon @@ -1 +1 @@ -{"autoClear":true,"clearColor":[0.2,0.2,0.3,1],"ambientColor":[0,0,0],"gravity":[0,-9.807,0],"collisionsEnabled":true,"useRightHandedSystem":false,"fogMode":0,"fogColor":[0.640006735140596,0.640006735140596,0.640006735140596],"fogStart":10,"fogEnd":1000,"fogDensity":0.001,"physicsEnabled":true,"physicsGravity":[0,-981,0],"physicsEngine":"HavokPlugin","metadata":{"rendering":[],"physicsGravity":[0,-981,0],"scripts":[{"enabled":true,"key":"scripts/editorScripts/AsteroidComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,0]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"fe3c8020-9375-4c58-a54f-852339e3f40f"}]},"morphTargetManagers":[],"lights":[],"cameras":[],"activeCameraID":"3cc9ef80-8c60-43e0-bcc4-1b55ff36010d","animations":[],"materials":[{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","metadata":{"baseSize":{"width":512,"height":512}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":2,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","metadata":{"baseSize":{"width":512,"height":512}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":2,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.9999999403953552,0.9999999403953552,0.9999999403953552],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"4b8b6899-b62b-4c2c-aa9c-4102fac0c2fe","name":"Gauges","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012185,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0.0724073052406311,0.8001724481582642,0.08219180256128311],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.003482822866271551,0.09999999403953552,0.003765808193933462],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"5bc1e4e2-2fa5-4c81-a3de-93e55ae0919e","name":"Material","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":0.2634408473968506,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":2,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764786749149,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.059139788150787354,"metallicF0Factor":0,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0.800133466720581,0.69917231798172,0.16859057545661926],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0,0,0],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"436eb7a0-ac6c-472d-b6fe-0d986a8af5c7","name":"ShipWindow","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":0.1505376398563385,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":2,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012181,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"ambient":[0,0,0],"diffuse":[1,1,1],"specular":[1,1,1],"emissive":[0,0,0],"specularPower":64,"useAlphaFromDiffuseTexture":false,"useEmissiveAsIllumination":false,"linkEmissiveWithDiffuse":false,"useSpecularOverAlpha":false,"useReflectionOverAlpha":false,"disableLighting":false,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"roughness":0,"indexOfRefraction":0.98,"invertRefractionY":true,"alphaCutOff":0.4,"useLightmapAsShadowmap":false,"useReflectionFresnelFromSpecular":false,"useGlossinessFromSpecularMapAlpha":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":false,"applyDecalMapAfterDetailMap":false,"id":"default material","name":"default material","checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":true,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":46,"plugins":{"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}}},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":1,"metallicF0Factor":0,"metallicReflectanceColor":[0.23755916953086853,0.23755916953086853,0.23755916953086853],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.3999999761581421,0.3999999761581421,0.3999999761581421],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"81400b58-6fbe-4364-8c25-b5a03c536f05","name":"Material.001","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764789858424,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0,0,0],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0,0,0],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"a37af4ed-0bc4-4e4b-bee9-63cecf56c25c","name":"Screen","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012183,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1.8999998569488525,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","metadata":{"baseSize":{"width":4096,"height":4096}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":1,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","metadata":{"baseSize":{"width":4096,"height":4096}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":1,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0.5344085693359375,"roughness":0.4500977396965027,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[1,1,1],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"75fae723-6ee6-443b-ba23-704d76ebdb7b","name":"Hull","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012179,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1.399999976158142,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[1,1,1],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"00d2631a-e346-4509-b0bb-64e0467c0622","name":"Material.001","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764786749147,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"}],"multiMaterials":[],"environmentIntensity":1,"iblIntensity":1,"skeletons":[],"transformNodes":[{"tags":null,"position":[0,0.6388578414916992,0],"rotation":[0,0,0],"rotationQuaternion":[0,0,0,1],"scaling":[0.6154924631118774,0.678999662399292,0.7973729968070984],"billboardMode":0,"scalingDeterminant":1,"infiniteDistance":false,"ignoreNonUniformScaling":false,"reIntegrateRotationIntoRotationQuaternion":false,"name":"Ship","id":"315c338c-b9a0-4509-839c-8802b52dc0b3","state":"","metadata":{"parentId":1764787012172},"type":"TransformNode","uniqueId":1764787012177,"parentId":1764787012172,"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"animations":[],"ranges":[]}],"geometries":{"boxes":[],"spheres":[],"cylinders":[],"toruses":[],"grounds":[],"planes":[],"torusKnots":[],"vertexData":[]},"meshes":[{"name":"ship.glb","id":"bf9cd6cd-3743-4b89-9c33-e7b12cc3eb3d","uniqueId":1764787012172,"type":"Mesh","position":[0,2,0],"rotation":[0,3.1129212205596573,0],"scaling":[100.00000000000159,-100,100.00000000000159],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":46,"materialId":"default material","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/ShipComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,0]},"angularVelocity":{"type":"vector3","value":[0,0,0]}},"_id":"fa6b5e6d-29c3-4159-9248-cab250039a6e"}]},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"New Box","id":"1679685b-ca9c-4a1c-8161-9f6064cb1d7c","uniqueId":1764787809874,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"geometryUniqueId":1764787809875,"geometryId":"76c7442d-fb7e-4a05-b1c5-9c27b0beb0dc","subMeshes":null,"materialUniqueId":46,"materialId":"default material","metadata":{"type":"Box","width":100,"depth":100,"height":100,"sideOrientation":0},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/76c7442d-fb7e-4a05-b1c5-9c27b0beb0dc.babylonbinarymeshdata","boundingBoxMaximum":[50,50,50],"boundingBoxMinimum":[-50,-50,-50],"_binaryInfo":{"positionsAttrDesc":{"count":72,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":72,"stride":3,"offset":288,"dataType":1},"uvsAttrDesc":{"count":48,"stride":2,"offset":576,"dataType":1},"indicesAttrDesc":{"count":36,"stride":1,"offset":768,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":912,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive3","id":"037071c4-2096-4616-8e14-2e9cadab7ade","uniqueId":1764787012176,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012184,"geometryId":"ab02f83d-3a7a-4abd-8e08-7dab01ba5931","subMeshes":null,"materialUniqueId":1764787012185,"materialId":"4b8b6899-b62b-4c2c-aa9c-4102fac0c2fe","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/ab02f83d-3a7a-4abd-8e08-7dab01ba5931.babylonbinarymeshdata","boundingBoxMaximum":[-0.36345699429512024,0.7514887452125549,4.199827194213867],"boundingBoxMinimum":[-0.866409957408905,0.29206109046936035,4.168615341186523],"_binaryInfo":{"positionsAttrDesc":{"count":12,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":12,"stride":3,"offset":48,"dataType":1},"uvsAttrDesc":{"count":8,"stride":2,"offset":96,"dataType":1},"indicesAttrDesc":{"count":6,"stride":1,"offset":128,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":152,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"BaseLandingZone","id":"2a185a78-d743-4a8f-b9a8-cf95f60f0ae0","uniqueId":1764786749145,"type":"Mesh","position":[0,6.372689247131348,0],"rotationQuaternion":[0,0,0,1],"scaling":[28.34206199645996,28.34206199645996,28.34206199645996],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764786749143,"isUnIndexed":false,"geometryUniqueId":1764786749148,"geometryId":"0d955d0c-93e1-4875-884d-db636576f51e","subMeshes":null,"materialUniqueId":1764786749149,"materialId":"5bc1e4e2-2fa5-4c81-a3de-93e55ae0919e","metadata":{"parentId":1764786749143},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/0d955d0c-93e1-4875-884d-db636576f51e.babylonbinarymeshdata","boundingBoxMaximum":[0.9807851314544678,0.3284308910369873,0.9807849526405334],"boundingBoxMinimum":[-0.9807848334312439,-0.4938357472419739,-0.9807852506637573],"_binaryInfo":{"positionsAttrDesc":{"count":2688,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":2688,"stride":3,"offset":10752,"dataType":1},"uvsAttrDesc":{"count":1792,"stride":2,"offset":21504,"dataType":1},"indicesAttrDesc":{"count":1338,"stride":1,"offset":28672,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":34024,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive1","id":"b633ecf7-2331-4ebd-b586-3852eff6c50f","uniqueId":1764787012174,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012180,"geometryId":"7a537688-5920-4808-9d7b-d63e83375f90","subMeshes":null,"materialUniqueId":1764787012181,"materialId":"436eb7a0-ac6c-472d-b6fe-0d986a8af5c7","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/7a537688-5920-4808-9d7b-d63e83375f90.babylonbinarymeshdata","boundingBoxMaximum":[1.5084391832351685,2.162097454071045,5.122784614562988],"boundingBoxMinimum":[-1.5084391832351685,-1.0288662910461426,-2.6966497898101807],"_binaryInfo":{"positionsAttrDesc":{"count":420,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":420,"stride":3,"offset":1680,"dataType":1},"uvsAttrDesc":{"count":280,"stride":2,"offset":3360,"dataType":1},"indicesAttrDesc":{"count":192,"stride":1,"offset":4480,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":5248,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"base.glb","id":"c7b3d00d-20da-4560-8611-f3186ffda0f0","uniqueId":1764786749143,"type":"Mesh","position":[0,0,0],"rotationQuaternion":[0,1,0,0],"scaling":[100,100,-100],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":46,"materialId":"default material","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/BaseComponent.ts","values":{"baseGlbPath":{"type":"string","description":"Path to base GLB model","value":""},"landingGlbPath":{"type":"string","description":"Path to landing zone GLB","value":""}},"_id":"7741fd66-a746-4f78-a7fd-5f8f404b610c"}]},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"asteroid.glb","id":"c8ccf36e-90e4-4cef-bd6c-f9856ae91783","uniqueId":1764789858421,"type":"Mesh","position":[0,0,0],"rotationQuaternion":[0,1,0,0],"scaling":[100,100,-100],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":46,"materialId":"default material","metadata":{},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"Asteroid","id":"790b6a71-5425-47f2-ae64-f2d04e2e3c6d","uniqueId":1764789858422,"type":"Mesh","position":[-33.08901451261646,40.81207511231127,-108.3875380136813],"rotationQuaternion":[0,0,0,1],"scaling":[5,5,5],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764789858421,"isUnIndexed":false,"geometryUniqueId":1764789858423,"geometryId":"9092e1b8-d64b-409a-9067-1f9373f47df3","subMeshes":null,"materialUniqueId":1764789858424,"materialId":"81400b58-6fbe-4364-8c25-b5a03c536f05","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/AsteroidComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,-30]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"750ffa11-d797-43f4-a63b-0e1592a4f6af"}],"parentId":1764789858421},"instances":[{"name":"Asteroid","id":"Asteroid","isEnabled":true,"isVisible":true,"isPickable":true,"checkCollisions":false,"position":[66.2149304569587,40.81207511231127,-126.79009642287176],"scaling":[5,5,5],"parentId":1764789858421,"rotationQuaternion":[0,0,0,1],"metadata":{"scripts":[{"key":"scripts/editorScripts/AsteroidComponent.ts","enabled":true,"values":{"linearVelocity":{"type":"vector3","value":[2,0,0]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"74563a74-be80-46fe-8dc3-189b03247c20"}],"parentId":1764789858421},"animations":[],"ranges":[]},{"name":"Asteroid","id":"Asteroid","isEnabled":true,"isVisible":true,"isPickable":true,"checkCollisions":false,"position":[0,-22.646529278627046,-74.97825372352042],"scaling":[5,5,5],"parentId":1764789858421,"rotationQuaternion":[0,0,0,1],"metadata":{"scripts":[{"key":"scripts/editorScripts/AsteroidComponent.ts","enabled":true,"values":{"linearVelocity":{"type":"vector3","value":[0,0,-2]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"79ae3cbb-7653-409c-9d0a-3e0b254e6731"}],"parentId":1764789858421},"animations":[],"ranges":[]}],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/9092e1b8-d64b-409a-9067-1f9373f47df3.babylonbinarymeshdata","boundingBoxMaximum":[2.8008618354797363,2.679150342941284,2.679150104522705],"boundingBoxMinimum":[-2.054845094680786,-2.679150342941284,-2.679150104522705],"_binaryInfo":{"positionsAttrDesc":{"count":912,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":912,"stride":3,"offset":3648,"dataType":1},"uvsAttrDesc":{"count":608,"stride":2,"offset":7296,"dataType":1},"indicesAttrDesc":{"count":342,"stride":1,"offset":9728,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":11096,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive2","id":"cbee3b60-c52a-451e-8a43-ddeccb72c2e6","uniqueId":1764787012175,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012182,"geometryId":"4cda27fd-eed5-4d1a-b69a-a10585be394d","subMeshes":null,"materialUniqueId":1764787012183,"materialId":"a37af4ed-0bc4-4e4b-bee9-63cecf56c25c","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/4cda27fd-eed5-4d1a-b69a-a10585be394d.babylonbinarymeshdata","boundingBoxMaximum":[0.21567727625370026,0.7399396300315857,4.235613822937012],"boundingBoxMinimum":[-0.2839681804180145,0.23974217474460602,4.230499744415283],"_binaryInfo":{"positionsAttrDesc":{"count":12,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":12,"stride":3,"offset":48,"dataType":1},"uvsAttrDesc":{"count":8,"stride":2,"offset":96,"dataType":1},"indicesAttrDesc":{"count":6,"stride":1,"offset":128,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":152,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive0","id":"e76fcb83-e1df-4c7c-92cd-65b601ee9bba","uniqueId":1764787012173,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012178,"geometryId":"5a938545-3b1e-40a5-9ed3-a545ced11fd4","subMeshes":null,"materialUniqueId":1764787012179,"materialId":"75fae723-6ee6-443b-ba23-704d76ebdb7b","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/5a938545-3b1e-40a5-9ed3-a545ced11fd4.babylonbinarymeshdata","boundingBoxMaximum":[11.43801212310791,2.162097454071045,8.191577911376953],"boundingBoxMinimum":[-11.43801212310791,-1.028866171836853,-7.255166530609131],"_binaryInfo":{"positionsAttrDesc":{"count":2790,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":2790,"stride":3,"offset":11160,"dataType":1},"uvsAttrDesc":{"count":1860,"stride":2,"offset":22320,"dataType":1},"indicesAttrDesc":{"count":1284,"stride":1,"offset":29760,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":34896,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Base","id":"df3bdc41-8314-45f8-9add-ccfd1d06451f","uniqueId":1764786749144,"type":"Mesh","position":[0,-8.583544731140137,0],"rotationQuaternion":[0,0,0,1],"scaling":[33.146690368652344,1,37.254390716552734],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764786749143,"isUnIndexed":false,"geometryUniqueId":1764786749146,"geometryId":"101bd857-f8e8-4230-a021-5d519fefb26c","subMeshes":null,"materialUniqueId":1764786749147,"materialId":"00d2631a-e346-4509-b0bb-64e0467c0622","metadata":{"parentId":1764786749143},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/101bd857-f8e8-4230-a021-5d519fefb26c.babylonbinarymeshdata","boundingBoxMaximum":[1,0.7045964002609253,1],"boundingBoxMinimum":[-1,-2.1139473915100098,-1],"_binaryInfo":{"positionsAttrDesc":{"count":264,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":264,"stride":3,"offset":1056,"dataType":1},"uvsAttrDesc":{"count":176,"stride":2,"offset":2112,"dataType":1},"indicesAttrDesc":{"count":132,"stride":1,"offset":2816,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":3344,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null}],"particleSystems":[],"sounds":[]} +{"autoClear":true,"clearColor":[0.2,0.2,0.3,1],"ambientColor":[0,0,0],"gravity":[0,-9.807,0],"collisionsEnabled":true,"useRightHandedSystem":false,"fogMode":0,"fogColor":[0.640006735140596,0.640006735140596,0.640006735140596],"fogStart":10,"fogEnd":1000,"fogDensity":0.001,"physicsEnabled":true,"physicsGravity":[0,-981,0],"physicsEngine":"HavokPlugin","metadata":{"rendering":[],"physicsGravity":[0,-981,0],"scripts":[{"enabled":true,"key":"scripts/editorScripts/AsteroidComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,0]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"fe3c8020-9375-4c58-a54f-852339e3f40f"}]},"morphTargetManagers":[],"lights":[],"cameras":[],"activeCameraID":"3cc9ef80-8c60-43e0-bcc4-1b55ff36010d","animations":[],"materials":[{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.059139788150787354,"metallicF0Factor":0,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0.800133466720581,0.69917231798172,0.16859057545661926],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0,0,0],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"436eb7a0-ac6c-472d-b6fe-0d986a8af5c7","name":"ShipWindow","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":0.1505376398563385,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":2,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012181,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"ambient":[0,0,0],"diffuse":[1,1,1],"specular":[1,1,1],"emissive":[0,0,0],"specularPower":64,"useAlphaFromDiffuseTexture":false,"useEmissiveAsIllumination":false,"linkEmissiveWithDiffuse":false,"useSpecularOverAlpha":false,"useReflectionOverAlpha":false,"disableLighting":false,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"roughness":0,"indexOfRefraction":0.98,"invertRefractionY":true,"alphaCutOff":0.4,"useLightmapAsShadowmap":false,"useReflectionFresnelFromSpecular":false,"useGlossinessFromSpecularMapAlpha":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":false,"applyDecalMapAfterDetailMap":false,"id":"default material","name":"default material","checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":true,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":46,"plugins":{"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}}},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","metadata":{"baseSize":{"width":512,"height":512}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":2,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_7dc5359ed77982dcccfa2ae9f8d1c491.jpg","metadata":{"baseSize":{"width":512,"height":512}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":2,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.9999999403953552,0.9999999403953552,0.9999999403953552],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"4b8b6899-b62b-4c2c-aa9c-4102fac0c2fe","name":"Gauges","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012185,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_aed030862c8a5064c80262817ba13a70.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":1,"metallicF0Factor":0,"metallicReflectanceColor":[0.23755916953086853,0.23755916953086853,0.23755916953086853],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.3999999761581421,0.3999999761581421,0.3999999761581421],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"81400b58-6fbe-4364-8c25-b5a03c536f05","name":"Material.001","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764789858424,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0,0,0],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0,0,0],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"a37af4ed-0bc4-4e4b-bee9-63cecf56c25c","name":"Screen","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012183,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1.8999998569488525,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","metadata":{"baseSize":{"width":4096,"height":4096}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":1,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_407fefb1bb1a53ce6f7be55ea1b07228.jpg","metadata":{"baseSize":{"width":4096,"height":4096}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":1,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0.5344085693359375,"roughness":0.4500977396965027,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[1,1,1],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"75fae723-6ee6-443b-ba23-704d76ebdb7b","name":"Hull","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764787012179,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1.399999976158142,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"albedoTexture":{"tags":null,"url":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"emissiveTexture":{"tags":null,"url":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","uOffset":0,"vOffset":0,"uScale":1,"vScale":-1,"uAng":0,"vAng":0,"wAng":0,"uRotationCenter":0.5,"vRotationCenter":0.5,"wRotationCenter":0.5,"homogeneousRotationInUVTransform":false,"isBlocking":true,"name":"assets/editor-generated_9f6c774a10727dd45e1e2122a14a3957.jpg","metadata":{"baseSize":{"width":2048,"height":2048}},"hasAlpha":false,"getAlphaFromRGB":false,"level":1,"coordinatesIndex":0,"optimizeUVAllocation":true,"coordinatesMode":0,"wrapU":1,"wrapV":1,"wrapR":1,"anisotropicFilteringLevel":4,"isCube":false,"is3D":false,"is2DArray":false,"gammaSpace":false,"invertZ":false,"lodLevelInAlpha":false,"lodGenerationOffset":0,"lodGenerationScale":0,"linearSpecularLOD":false,"isRenderTarget":false,"animations":[],"invertY":true,"samplingMode":3,"_useSRGBBuffer":false,"internalTextureLabel":"/Users/michaelmainguy/WebstormProjects/space-game/gameEditor","noMipmap":false},"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[1,1,1],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[1,1,1],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"00d2631a-e346-4509-b0bb-64e0467c0622","name":"Material.001","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":0,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764786749147,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"directIntensity":1,"emissiveIntensity":1,"environmentIntensity":1,"specularIntensity":1,"disableBumpMap":false,"ambientTextureStrength":1,"ambientTextureImpactOnAnalyticalLights":0,"metallic":0,"roughness":0.5,"metallicF0Factor":1,"metallicReflectanceColor":[1,1,1],"useOnlyMetallicFromMetallicReflectanceTexture":false,"ambient":[0,0,0],"albedo":[0.0724073052406311,0.8001724481582642,0.08219180256128311],"baseWeight":1,"reflectivity":[1,1,1],"reflection":[1,1,1],"emissive":[0.003482822866271551,0.09999999403953552,0.003765808193933462],"microSurface":1,"useLightmapAsShadowmap":false,"useAlphaFromAlbedoTexture":false,"forceAlphaTest":false,"alphaCutOff":0.4,"useSpecularOverAlpha":true,"useMicroSurfaceFromReflectivityMapAlpha":false,"useRoughnessFromMetallicTextureAlpha":true,"useRoughnessFromMetallicTextureGreen":false,"useMetallnessFromMetallicTextureBlue":false,"useAmbientOcclusionFromMetallicTextureRed":false,"useAmbientInGrayScale":false,"useAutoMicroSurfaceFromReflectivityMap":false,"usePhysicalLightFalloff":true,"useGLTFLightFalloff":false,"useRadianceOverAlpha":true,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"disableLighting":false,"forceIrradianceInFragment":false,"maxSimultaneousLights":32,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":true,"useAlphaFresnel":false,"useLinearAlphaFresnel":false,"forceNormalForward":false,"enableSpecularAntiAliasing":true,"useHorizonOcclusion":true,"useRadianceOcclusion":true,"unlit":false,"applyDecalMapAfterDetailMap":false,"id":"5bc1e4e2-2fa5-4c81-a3de-93e55ae0919e","name":"Material","metadata":{},"checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":0.2634408473968506,"backFaceCulling":false,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"transparencyMode":2,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":1764786749149,"plugins":{"PBRBRDFConfiguration":{"tags":null,"useEnergyConservation":true,"useSmithVisibilityHeightCorrelated":true,"useSphericalHarmonics":true,"useSpecularGlossinessInputEnergyConservation":true,"mixIblRadianceWithIrradiance":true,"useLegacySpecularEnergyConservation":true,"baseDiffuseModel":0,"dielectricSpecularModel":0,"conductorSpecularModel":0,"name":"PBRBRDF","priority":90,"resolveIncludes":false,"registerForExtraEvents":false},"PBRClearCoatConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"roughness":0,"indexOfRefraction":1.5,"useRoughnessFromMainTexture":true,"remapF0OnInterfaceChange":true,"isTintEnabled":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"tintThickness":1,"name":"PBRClearCoat","priority":100,"resolveIncludes":false,"registerForExtraEvents":false},"PBRIridescenceConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"minimumThickness":100,"maximumThickness":400,"indexOfRefraction":1.3,"name":"PBRIridescence","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRAnisotropicConfiguration":{"tags":null,"isEnabled":false,"intensity":1,"direction":[1,0],"legacy":false,"name":"PBRAnisotropic","priority":110,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSheenConfiguration":{"tags":null,"isEnabled":false,"linkSheenWithAlbedo":false,"intensity":1,"color":[1,1,1],"useRoughnessFromMainTexture":true,"albedoScaling":false,"name":"Sheen","priority":120,"resolveIncludes":false,"registerForExtraEvents":false},"PBRSubSurfaceConfiguration":{"tags":null,"isRefractionEnabled":false,"isTranslucencyEnabled":false,"isDispersionEnabled":false,"isScatteringEnabled":false,"_scatteringDiffusionProfileIndex":0,"refractionIntensity":1,"translucencyIntensity":1,"useAlbedoToTintRefraction":false,"useAlbedoToTintTranslucency":false,"indexOfRefraction":1.5,"_volumeIndexOfRefraction":-1,"invertRefractionY":false,"linkRefractionWithTransparency":false,"minimumThickness":0,"maximumThickness":1,"useThicknessAsDepth":false,"tintColor":[1,1,1],"tintColorAtDistance":1,"dispersion":0,"diffusionDistance":[1,1,1],"useMaskFromThicknessTexture":false,"useGltfStyleTextures":true,"applyAlbedoAfterSubSurface":false,"legacyTranslucency":false,"name":"PBRSubSurface","priority":130,"resolveIncludes":false,"registerForExtraEvents":true},"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}},"customType":"BABYLON.PBRMaterial"},{"tags":null,"ambient":[0,0,0],"diffuse":[1,1,1],"specular":[1,1,1],"emissive":[0,0,0],"specularPower":64,"useAlphaFromDiffuseTexture":false,"useEmissiveAsIllumination":false,"linkEmissiveWithDiffuse":false,"useSpecularOverAlpha":false,"useReflectionOverAlpha":false,"disableLighting":false,"useObjectSpaceNormalMap":false,"useParallax":false,"useParallaxOcclusion":false,"parallaxScaleBias":0.05,"roughness":0,"indexOfRefraction":0.98,"invertRefractionY":true,"alphaCutOff":0.4,"useLightmapAsShadowmap":false,"useReflectionFresnelFromSpecular":false,"useGlossinessFromSpecularMapAlpha":false,"maxSimultaneousLights":4,"invertNormalMapX":false,"invertNormalMapY":false,"twoSidedLighting":false,"applyDecalMapAfterDetailMap":false,"id":"default material","name":"default material","checkReadyOnEveryCall":false,"checkReadyOnlyOnce":false,"state":"","alpha":1,"backFaceCulling":true,"cullBackFaces":true,"_alphaMode":[2],"_needDepthPrePass":false,"disableDepthWrite":false,"disableColorWrite":false,"forceDepthWrite":false,"depthFunction":0,"separateCullingPass":false,"fogEnabled":true,"pointSize":1,"zOffset":0,"zOffsetUnits":0,"pointsCloud":false,"fillMode":0,"_isVertexOutputInvariant":false,"stencil":{"tags":null,"func":519,"backFunc":519,"funcRef":1,"funcMask":255,"opStencilFail":7680,"opDepthFail":7680,"opStencilDepthPass":7681,"backOpStencilFail":7680,"backOpDepthFail":7680,"backOpStencilDepthPass":7681,"mask":255,"enabled":false},"uniqueId":77,"plugins":{"DetailMapConfiguration":{"tags":null,"diffuseBlendLevel":1,"roughnessBlendLevel":1,"bumpLevel":1,"normalBlendMethod":0,"isEnabled":false,"name":"DetailMap","priority":140,"resolveIncludes":false,"registerForExtraEvents":false}}}],"multiMaterials":[],"environmentIntensity":1,"iblIntensity":1,"skeletons":[],"transformNodes":[{"tags":null,"position":[0,0.6388578414916992,0],"rotation":[0,0,0],"rotationQuaternion":[0,0,0,1],"scaling":[0.6154924631118774,0.678999662399292,0.7973729968070984],"billboardMode":0,"scalingDeterminant":1,"infiniteDistance":false,"ignoreNonUniformScaling":false,"reIntegrateRotationIntoRotationQuaternion":false,"name":"Ship","id":"315c338c-b9a0-4509-839c-8802b52dc0b3","state":"","metadata":{"parentId":1764787012172},"type":"TransformNode","uniqueId":1764787012177,"parentId":1764787012172,"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"animations":[],"ranges":[]}],"geometries":{"boxes":[],"spheres":[],"cylinders":[],"toruses":[],"grounds":[],"planes":[],"torusKnots":[],"vertexData":[]},"meshes":[{"name":"Ship_primitive1","id":"b633ecf7-2331-4ebd-b586-3852eff6c50f","uniqueId":1764787012174,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012180,"geometryId":"7a537688-5920-4808-9d7b-d63e83375f90","subMeshes":null,"materialUniqueId":1764787012181,"materialId":"436eb7a0-ac6c-472d-b6fe-0d986a8af5c7","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/7a537688-5920-4808-9d7b-d63e83375f90.babylonbinarymeshdata","boundingBoxMaximum":[1.5084391832351685,2.162097454071045,5.122784614562988],"boundingBoxMinimum":[-1.5084391832351685,-1.0288662910461426,-2.6966497898101807],"_binaryInfo":{"positionsAttrDesc":{"count":420,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":420,"stride":3,"offset":1680,"dataType":1},"uvsAttrDesc":{"count":280,"stride":2,"offset":3360,"dataType":1},"indicesAttrDesc":{"count":192,"stride":1,"offset":4480,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":5248,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"ship.glb","id":"bf9cd6cd-3743-4b89-9c33-e7b12cc3eb3d","uniqueId":1764787012172,"type":"Mesh","position":[0,2,0],"rotation":[0,3.1129212205596573,0],"scaling":[100.00000000000159,-100,100.00000000000159],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":77,"materialId":"default material","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/ShipComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,0]},"angularVelocity":{"type":"vector3","value":[0,0,0]}},"_id":"fa6b5e6d-29c3-4159-9248-cab250039a6e"}]},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"base.glb","id":"c7b3d00d-20da-4560-8611-f3186ffda0f0","uniqueId":1764786749143,"type":"Mesh","position":[0,0,0],"rotationQuaternion":[0,1,0,0],"scaling":[100,100,-100],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":46,"materialId":"default material","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/BaseComponent.ts","values":{"baseGlbPath":{"type":"string","description":"Path to base GLB model","value":""},"landingGlbPath":{"type":"string","description":"Path to landing zone GLB","value":""}},"_id":"7741fd66-a746-4f78-a7fd-5f8f404b610c"}]},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"Ship_primitive3","id":"037071c4-2096-4616-8e14-2e9cadab7ade","uniqueId":1764787012176,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012184,"geometryId":"ab02f83d-3a7a-4abd-8e08-7dab01ba5931","subMeshes":null,"materialUniqueId":1764787012185,"materialId":"4b8b6899-b62b-4c2c-aa9c-4102fac0c2fe","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/ab02f83d-3a7a-4abd-8e08-7dab01ba5931.babylonbinarymeshdata","boundingBoxMaximum":[-0.36345699429512024,0.7514887452125549,4.199827194213867],"boundingBoxMinimum":[-0.866409957408905,0.29206109046936035,4.168615341186523],"_binaryInfo":{"positionsAttrDesc":{"count":12,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":12,"stride":3,"offset":48,"dataType":1},"uvsAttrDesc":{"count":8,"stride":2,"offset":96,"dataType":1},"indicesAttrDesc":{"count":6,"stride":1,"offset":128,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":152,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"New Box","id":"1679685b-ca9c-4a1c-8161-9f6064cb1d7c","uniqueId":1764787809874,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"geometryUniqueId":1764787809875,"geometryId":"76c7442d-fb7e-4a05-b1c5-9c27b0beb0dc","subMeshes":null,"materialUniqueId":46,"materialId":"default material","metadata":{"type":"Box","width":100,"depth":100,"height":100,"sideOrientation":0},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/76c7442d-fb7e-4a05-b1c5-9c27b0beb0dc.babylonbinarymeshdata","boundingBoxMaximum":[50,50,50],"boundingBoxMinimum":[-50,-50,-50],"_binaryInfo":{"positionsAttrDesc":{"count":72,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":72,"stride":3,"offset":288,"dataType":1},"uvsAttrDesc":{"count":48,"stride":2,"offset":576,"dataType":1},"indicesAttrDesc":{"count":36,"stride":1,"offset":768,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":912,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"asteroid.glb","id":"c8ccf36e-90e4-4cef-bd6c-f9856ae91783","uniqueId":1764789858421,"type":"Mesh","position":[0,0,0],"rotationQuaternion":[0,1,0,0],"scaling":[100,100,-100],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":1,"isUnIndexed":false,"materialUniqueId":46,"materialId":"default material","metadata":{},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true},{"name":"Asteroid","id":"790b6a71-5425-47f2-ae64-f2d04e2e3c6d","uniqueId":1764789858422,"type":"Mesh","position":[-33.08901451261646,40.81207511231127,-108.3875380136813],"rotationQuaternion":[0,0,0,1],"scaling":[5,5,5],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764789858421,"isUnIndexed":false,"geometryUniqueId":1764789858423,"geometryId":"9092e1b8-d64b-409a-9067-1f9373f47df3","subMeshes":null,"materialUniqueId":1764789858424,"materialId":"81400b58-6fbe-4364-8c25-b5a03c536f05","metadata":{"scripts":[{"enabled":true,"key":"scripts/editorScripts/AsteroidComponent.ts","values":{"linearVelocity":{"type":"vector3","value":[0,0,-30]},"angularVelocity":{"type":"vector3","value":[0,0,0]},"mass":{"type":"number","value":1},"targetId":{"type":"string","description":"Reference to a TargetComponent node","value":""},"targetMode":{"type":"string","description":"orbit | moveToward | (empty)","value":""}},"_id":"750ffa11-d797-43f4-a63b-0e1592a4f6af"}],"parentId":1764789858421},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/9092e1b8-d64b-409a-9067-1f9373f47df3.babylonbinarymeshdata","boundingBoxMaximum":[2.8008618354797363,2.679150342941284,2.679150104522705],"boundingBoxMinimum":[-2.054845094680786,-2.679150342941284,-2.679150104522705],"_binaryInfo":{"positionsAttrDesc":{"count":912,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":912,"stride":3,"offset":3648,"dataType":1},"uvsAttrDesc":{"count":608,"stride":2,"offset":7296,"dataType":1},"indicesAttrDesc":{"count":342,"stride":1,"offset":9728,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":11096,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive2","id":"cbee3b60-c52a-451e-8a43-ddeccb72c2e6","uniqueId":1764787012175,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012182,"geometryId":"4cda27fd-eed5-4d1a-b69a-a10585be394d","subMeshes":null,"materialUniqueId":1764787012183,"materialId":"a37af4ed-0bc4-4e4b-bee9-63cecf56c25c","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/4cda27fd-eed5-4d1a-b69a-a10585be394d.babylonbinarymeshdata","boundingBoxMaximum":[0.21567727625370026,0.7399396300315857,4.235613822937012],"boundingBoxMinimum":[-0.2839681804180145,0.23974217474460602,4.230499744415283],"_binaryInfo":{"positionsAttrDesc":{"count":12,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":12,"stride":3,"offset":48,"dataType":1},"uvsAttrDesc":{"count":8,"stride":2,"offset":96,"dataType":1},"indicesAttrDesc":{"count":6,"stride":1,"offset":128,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":152,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Ship_primitive0","id":"e76fcb83-e1df-4c7c-92cd-65b601ee9bba","uniqueId":1764787012173,"type":"Mesh","position":[0,0,0],"rotation":[0,0,0],"scaling":[1,1,1],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764787012177,"isUnIndexed":false,"geometryUniqueId":1764787012178,"geometryId":"5a938545-3b1e-40a5-9ed3-a545ced11fd4","subMeshes":null,"materialUniqueId":1764787012179,"materialId":"75fae723-6ee6-443b-ba23-704d76ebdb7b","metadata":{"parentId":1764787012177},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":1,"overlayColor":[0,0,0],"applyFog":true,"delayLoadingFile":"example/5a938545-3b1e-40a5-9ed3-a545ced11fd4.babylonbinarymeshdata","boundingBoxMaximum":[11.43801212310791,2.162097454071045,8.191577911376953],"boundingBoxMinimum":[-11.43801212310791,-1.028866171836853,-7.255166530609131],"_binaryInfo":{"positionsAttrDesc":{"count":2790,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":2790,"stride":3,"offset":11160,"dataType":1},"uvsAttrDesc":{"count":1860,"stride":2,"offset":22320,"dataType":1},"indicesAttrDesc":{"count":1284,"stride":1,"offset":29760,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":34896,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"Base","id":"df3bdc41-8314-45f8-9add-ccfd1d06451f","uniqueId":1764786749144,"type":"Mesh","position":[0,-8.583544731140137,0],"rotationQuaternion":[0,0,0,1],"scaling":[33.146690368652344,1,37.254390716552734],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764786749143,"isUnIndexed":false,"geometryUniqueId":1764786749146,"geometryId":"101bd857-f8e8-4230-a021-5d519fefb26c","subMeshes":null,"materialUniqueId":1764786749147,"materialId":"00d2631a-e346-4509-b0bb-64e0467c0622","metadata":{"parentId":1764786749143},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/101bd857-f8e8-4230-a021-5d519fefb26c.babylonbinarymeshdata","boundingBoxMaximum":[1,0.7045964002609253,1],"boundingBoxMinimum":[-1,-2.1139473915100098,-1],"_binaryInfo":{"positionsAttrDesc":{"count":264,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":264,"stride":3,"offset":1056,"dataType":1},"uvsAttrDesc":{"count":176,"stride":2,"offset":2112,"dataType":1},"indicesAttrDesc":{"count":132,"stride":1,"offset":2816,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":3344,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null},{"name":"BaseLandingZone","id":"2a185a78-d743-4a8f-b9a8-cf95f60f0ae0","uniqueId":1764786749145,"type":"Mesh","position":[0,6.372689247131348,0],"rotationQuaternion":[0,0,0,1],"scaling":[28.34206199645996,28.34206199645996,28.34206199645996],"localMatrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],"isEnabled":true,"isVisible":true,"infiniteDistance":false,"pickable":true,"receiveShadows":true,"billboardMode":0,"visibility":1,"alwaysSelectAsActiveMesh":false,"checkCollisions":false,"ellipsoid":[0.5,1,0.5],"ellipsoidOffset":[0,0,0],"doNotSyncBoundingInfo":false,"isBlocker":false,"sideOrientation":0,"parentId":1764786749143,"isUnIndexed":false,"geometryUniqueId":1764786749148,"geometryId":"0d955d0c-93e1-4875-884d-db636576f51e","subMeshes":null,"materialUniqueId":1764786749149,"materialId":"5bc1e4e2-2fa5-4c81-a3de-93e55ae0919e","metadata":{"parentId":1764786749143},"instances":[],"animations":[],"ranges":[],"layerMask":268435455,"alphaIndex":1.7976931348623157e+308,"hasVertexAlpha":false,"overlayAlpha":0,"overlayColor":[0,0,0],"renderOverlay":false,"applyFog":true,"delayLoadingFile":"example/0d955d0c-93e1-4875-884d-db636576f51e.babylonbinarymeshdata","boundingBoxMaximum":[0.9807851314544678,0.3284308910369873,0.9807849526405334],"boundingBoxMinimum":[-0.9807848334312439,-0.4938357472419739,-0.9807852506637573],"_binaryInfo":{"positionsAttrDesc":{"count":2688,"stride":3,"offset":0,"dataType":1},"normalsAttrDesc":{"count":2688,"stride":3,"offset":10752,"dataType":1},"uvsAttrDesc":{"count":1792,"stride":2,"offset":21504,"dataType":1},"indicesAttrDesc":{"count":1338,"stride":1,"offset":28672,"dataType":0},"subMeshesAttrDesc":{"count":1,"stride":5,"offset":34024,"dataType":0}},"positions":null,"normals":null,"uvs":null,"hasUVs":true,"indices":null}],"particleSystems":[],"sounds":[]} diff --git a/gameEditor/src/scripts.ts b/gameEditor/src/scripts.ts index 718ef90..1314f5d 100644 --- a/gameEditor/src/scripts.ts +++ b/gameEditor/src/scripts.ts @@ -5,13 +5,13 @@ import { loadScene, scriptsDictionary, scriptAssetsCache, _applyScriptsForObject, _removeRegisteredScriptInstance, _preloadScriptsAssets } from "babylonjs-editor-tools"; import * as scripts_editorScripts_AsteroidComponent from "./scripts/editorScripts/AsteroidComponent"; -import * as scripts_editorScripts_ShipComponent from "./scripts/editorScripts/ShipComponent"; import * as scripts_editorScripts_BaseComponent from "./scripts/editorScripts/BaseComponent"; +import * as scripts_editorScripts_ShipComponent from "./scripts/editorScripts/ShipComponent"; export const scriptsMap = { "scripts/editorScripts/AsteroidComponent.ts": scripts_editorScripts_AsteroidComponent, - "scripts/editorScripts/ShipComponent.ts": scripts_editorScripts_ShipComponent, - "scripts/editorScripts/BaseComponent.ts": scripts_editorScripts_BaseComponent + "scripts/editorScripts/BaseComponent.ts": scripts_editorScripts_BaseComponent, + "scripts/editorScripts/ShipComponent.ts": scripts_editorScripts_ShipComponent }; export { loadScene, scriptsDictionary, scriptAssetsCache, _applyScriptsForObject, _removeRegisteredScriptInstance, _preloadScriptsAssets }; diff --git a/src/environment/asteroids/rockFactory.ts b/src/environment/asteroids/rockFactory.ts index 2d12f66..91917e2 100644 --- a/src/environment/asteroids/rockFactory.ts +++ b/src/environment/asteroids/rockFactory.ts @@ -42,6 +42,7 @@ interface RockConfig { angularVelocity: Vector3; scoreObservable: Observable; useOrbitConstraint: boolean; + targetId?: string; targetPosition?: Vector3; targetMode?: 'orbit' | 'moveToward'; } @@ -54,6 +55,9 @@ export class RockFactory { // Store created rocks for deferred physics initialization private static _createdRocks: Map = new Map(); + // Cache for target physics bodies (shared among asteroids with same targetId) + private static _targetBodies: Map = new Map(); + /** Public getter for explosion manager (used by WeaponSystem for shape-cast hits) */ public static get explosionManager(): ExplosionManager | null { return this._explosionManager; @@ -124,6 +128,11 @@ export class RockFactory { log.debug('[RockFactory] Resetting static state'); this._asteroidMesh = null; this._createdRocks.clear(); + // Dispose and clear target bodies + for (const targetBody of this._targetBodies.values()) { + targetBody.dispose(); + } + this._targetBodies.clear(); if (this._explosionManager) { this._explosionManager.dispose(); this._explosionManager = null; @@ -170,6 +179,7 @@ export class RockFactory { scoreObservable: Observable, useOrbitConstraint: boolean = true, hidden: boolean = false, + targetId?: string, targetPosition?: Vector3, targetMode?: 'orbit' | 'moveToward', rotation?: Vector3 @@ -197,12 +207,13 @@ export class RockFactory { angularVelocity, scoreObservable, useOrbitConstraint, + targetId, targetPosition, targetMode }; this._createdRocks.set(rock.id, { mesh: rock, config }); - log.debug(`[RockFactory] Created rock mesh ${rock.id} (hidden: ${hidden}, target: ${targetMode || 'none'})`); + log.debug(`[RockFactory] Created rock mesh ${rock.id} (hidden: ${hidden}, target: ${targetId || 'none'}, mode: ${targetMode || 'none'})`); return new Rock(rock); } @@ -227,14 +238,18 @@ export class RockFactory { // Handle target-based physics if (config.targetPosition && config.targetMode) { + log.debug(`[RockFactory] Applying ${config.targetMode} physics to ${rock.id} toward target at ${config.targetPosition}`); this.applyTargetPhysics(body, config); } else if (config.useOrbitConstraint && this._orbitCenter) { // Legacy: orbit around origin if no specific target + log.debug(`[RockFactory] Using legacy orbit constraint for ${rock.id} (no target specified)`); const constraint = new DistanceConstraint( Vector3.Distance(config.position, this._orbitCenter.body.transformNode.position), DefaultScene.MainScene ); body.addConstraint(this._orbitCenter.body, constraint); + } else { + log.debug(`[RockFactory] No orbit constraint for ${rock.id} (useOrbitConstraint=${config.useOrbitConstraint})`); } // Prevent sleeping @@ -262,16 +277,8 @@ export class RockFactory { if (!config.targetPosition) return; if (config.targetMode === 'orbit') { - // Create distance constraint to target position - // We need a static body at the target position for the constraint - const targetNode = new TransformNode(`target-${body.transformNode.id}`, DefaultScene.MainScene); - targetNode.position = config.targetPosition; - const targetBody = new PhysicsAggregate( - targetNode, PhysicsShapeType.SPHERE, - { radius: 0.1, mass: 0 }, - DefaultScene.MainScene - ); - targetBody.body.setMotionType(PhysicsMotionType.STATIC); + // Get or create shared target body for this targetId + const targetBody = this.getOrCreateTargetBody(config.targetId, config.targetPosition); const distance = Vector3.Distance(config.position, config.targetPosition); const constraint = new DistanceConstraint(distance, DefaultScene.MainScene); @@ -291,9 +298,38 @@ export class RockFactory { // Final velocity = direction * speed const velocity = direction.scale(speed); body.setLinearVelocity(velocity); + } else { + log.warn(`Invalid targetMode ${config.targetMode}`) } } + /** + * Get or create a shared physics body for a target position + */ + private static getOrCreateTargetBody(targetId: string | undefined, position: Vector3): PhysicsAggregate { + const cacheKey = targetId || `pos-${position.x}-${position.y}-${position.z}`; + + if (this._targetBodies.has(cacheKey)) { + log.debug(`[RockFactory] Reusing existing target body for "${cacheKey}"`); + return this._targetBodies.get(cacheKey)!; + } + + // Create new target body + const targetNode = new TransformNode(`target-${cacheKey}`, DefaultScene.MainScene); + targetNode.position = position; + const targetBody = new PhysicsAggregate( + targetNode, PhysicsShapeType.SPHERE, + { radius: 0.1, mass: 0 }, + DefaultScene.MainScene + ); + targetBody.body.setMotionType(PhysicsMotionType.STATIC); + + this._targetBodies.set(cacheKey, targetBody); + log.debug(`[RockFactory] Created new target body for "${cacheKey}" at ${position}`); + + return targetBody; + } + private static setupCollisionHandler(body: PhysicsBody, scoreObservable: Observable): void { body.getCollisionObservable().add((eventData) => { if (eventData.type !== 'COLLISION_STARTED') return; diff --git a/src/levels/config/levelDeserializer.ts b/src/levels/config/levelDeserializer.ts index 4a25fb6..ef2968b 100644 --- a/src/levels/config/levelDeserializer.ts +++ b/src/levels/config/levelDeserializer.ts @@ -248,10 +248,18 @@ export class LevelDeserializer { // Resolve target position if specified let targetPosition: Vector3 | undefined; - if (asteroidConfig.targetId && this.config.targets) { - const target = this.config.targets.find(t => t.id === asteroidConfig.targetId); - if (target) { - targetPosition = this.arrayToVector3(target.position); + if (asteroidConfig.targetId) { + if (this.config.targets && this.config.targets.length > 0) { + const target = this.config.targets.find(t => t.id === asteroidConfig.targetId); + if (target) { + targetPosition = this.arrayToVector3(target.position); + log.debug(`[LevelDeserializer] Asteroid ${asteroidConfig.id} linked to target ${target.id} at ${targetPosition}`); + } else { + const availableIds = this.config.targets.map(t => t.id).join(', '); + log.warn(`[LevelDeserializer] Asteroid ${asteroidConfig.id} has targetId "${asteroidConfig.targetId}" but no match found. Available: [${availableIds}]`); + } + } else { + log.warn(`[LevelDeserializer] Asteroid ${asteroidConfig.id} has targetId "${asteroidConfig.targetId}" but no targets array in config`); } } @@ -266,6 +274,7 @@ export class LevelDeserializer { scoreObservable, useOrbitConstraints, hidden, + asteroidConfig.targetId, targetPosition, asteroidConfig.targetMode, rotation