{
  "world": {
    "type": "SESceneWorld",
    "members": {
      "m_strPlayerCameraName": "cam"
    }
  },
  "entities": [
    {
      "type": "SESkyBoxEntity",
      "name": "Sky",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,0.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "Sky",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_SkyTextureName": "textures/sky/skybox_puresky.dds",
        "m_SunColor": "{ 1.000000 , 0.920000 , 0.760000 }",
        "m_SunAngles": "{ 130.000000 , 50.000000 }",
        "m_SunShininessStrength": "{ 256.000000 , 8.000000 }"
      }
    },
    {
      "type": "SELightEntity",
      "name": "Sun",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,0.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "Sun",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_LightType": "Directional",
        "m_Color": "{ 1.000000 , 0.970000 , 0.900000 }",
        "m_Intensity": "3.000000",
        "m_AnglesDegrees": "{ 40.000000 , -55.000000 }",
        "m_Radius": "20.000000",
        "m_InnerAngleDegrees": "0.000000",
        "m_OuterAngleDegrees": "45.000000",
        "m_bCastsShadow": "True"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "ground",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,0.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "True",
        "m_strEntityName": "ground",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 12.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.300000 , 0.450000 , 0.300000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.900000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "p1",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{11.000000,2.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "True",
        "m_strEntityName": "p1",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 4.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.350000 , 0.450000 , 0.750000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.700000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "p2",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{17.000000,3.500000,0.000000,1.000000}",
        "m_bFrustumCullable": "True",
        "m_strEntityName": "p2",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 4.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.350000 , 0.450000 , 0.750000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.700000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "p3",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{23.000000,2.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "True",
        "m_strEntityName": "p3",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 4.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.350000 , 0.450000 , 0.750000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.700000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "mover",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{29.000000,3.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "mover",
        "m_strScriptFile": "",
        "m_strScriptClass": "Mover",
        "m_strScriptSource": "class Mover { SESceneEntity@ owner; float x; float dir; float minX; float maxX; float y; Mover(SESceneEntity@ o){ @owner=o; x=29.0f; dir=1.0f; minX=26.0f; maxX=32.0f; y=3.0f; } void OnInit(){ SEVec3 p=owner.GetPosition(); x=p.x; y=p.y; } void OnUpdate(float dt){ x += dir*3.0f*dt; if(x>maxX){ x=maxX; dir=-1.0f; } if(x<minX){ x=minX; dir=1.0f; } owner.SetPosition(SEVec3(x,y,0.0f)); } }",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 4.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.950000 , 0.520000 , 0.150000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.600000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "goal",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{36.000000,4.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "True",
        "m_strEntityName": "goal",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 6.000000 , 1.000000 , 4.000000 }",
              "m_Offset": "{ 0.000000 , -0.500000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 1.000000 , 0.820000 , 0.280000 }",
        "m_Metallic": "0.900000",
        "m_Roughness": "0.250000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SEProceduralMeshEntity",
      "name": "player",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,1.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "player",
        "m_strScriptFile": "",
        "m_strScriptClass": "Player",
        "m_strScriptSource": "class Player {\n  // --- audio: instrument indices resolved once, then triggered by index ---\n  SESynthSceneEntity@ sfx;\n  int fxBeep = -1; int fxZap = -1; int fxCoin = -1;\n  int fxBoom = -1; int fxLaser = -1; int fxThud = -1;\n  bool wasGrounded = false;\n  void InitAudio() {\n    SESceneEntity@ e = gWorld.FindEntityByName(\"Sfx\");\n    if (e is null) return;\n    @sfx = cast<SESynthSceneEntity>(e);\n    if (sfx is null) return;\n    fxBeep = sfx.FindInstrument(\"Beep\");\n    fxZap = sfx.FindInstrument(\"Zap\");\n    fxCoin = sfx.FindInstrument(\"Coin\");\n    fxBoom = sfx.FindInstrument(\"Explosion\");\n    fxLaser = sfx.FindInstrument(\"Laser\");\n    fxThud = sfx.FindInstrument(\"Thud\");\n  }\n  void Fx(int id, int note, float vel) { if (sfx !is null) sfx.PlayEffect(id, note, vel); }\n SESceneEntity@ owner; SETextEntity@ hud; SESceneEntity@ mover; float vy; bool grounded; float px; float py; bool won; float moverLastX; Player(SESceneEntity@ o){ @owner=o; vy=0.0f; grounded=false; px=0.0f; py=1.0f; won=false; moverLastX=0.0f; } void land(float cx, float top, float hw){ if (vy>0.0f) return; float d=px-cx; if(d<0.0f)d=-d; if(d>hw+0.6f) return; float feet=py-0.5f; if(feet<=top+0.15f && feet>=top-1.5f){ py=top+0.5f; vy=0.0f; grounded=true; } } void OnInit(){\n    InitAudio(); SEVec3 q=owner.GetPosition(); px=q.x; py=q.y; @hud=cast<SETextEntity>(gWorld.FindEntityByName(\"hud\")); @mover=gWorld.FindEntityByName(\"mover\"); if(mover !is null){ moverLastX=mover.GetPosition().x; } } void OnUpdate(float dt){ if(gInput.IsLeftDown()) px -= 8.0f*dt; if(gInput.IsRightDown()) px += 8.0f*dt; if(grounded && (gInput.IsSpaceDown()||gInput.IsUpDown())){ vy=12.0f; grounded=false; Fx(fxBeep,79,0.5f); } vy -= 25.0f*dt; py += vy*dt; grounded=false; land(0.0f,0.0f,6.0f); land(11.0f,2.0f,2.0f); land(17.0f,3.5f,2.0f); land(23.0f,2.0f,2.0f); land(36.0f,4.0f,3.0f); if(mover !is null){ SEVec3 m=mover.GetPosition(); if(vy<=0.0f){ float d=px-m.x; if(d<0.0f)d=-d; if(d<2.6f){ float feet=py-0.5f; if(feet<=m.y+0.15f && feet>=m.y-1.5f){ py=m.y+0.5f; vy=0.0f; grounded=true; px += (m.x-moverLastX); } } } moverLastX=m.x; } if(grounded && !wasGrounded) Fx(fxThud,58,0.45f); wasGrounded=grounded; if(!won){ float dg=px-36.0f; if(dg<0.0f)dg=-dg; if(dg<3.0f && py>4.0f){ won=true; Fx(fxCoin,84,1.0f); if(hud !is null){ hud.m_Text=\"YOU WIN!\"; } } } if(py < -8.0f){ Fx(fxBoom,38,0.9f); px=0.0f; py=1.0f; vy=0.0f; won=false; if(hud !is null){ hud.m_Text=\"Arrows move    Space = jump\"; } } owner.SetPosition(SEVec3(px,py,0.0f)); } }",
        "m_bScriptEnabled": "True",
        "m_ModelName": "",
        "m_pPhysicsModel": {
          "$ref": null
        },
        "m_aParts": [
          {
            "type": "SEProceduralShapePart",
            "members": {
              "m_ShapeType": "Box",
              "m_Size": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_Offset": "{ 0.000000 , 0.000000 , 0.000000 }",
              "m_RotationAxis": "{ 0.000000 , 1.000000 , 0.000000 }",
              "m_RotationDegrees": "0.000000",
              "m_Color": "{ 1.000000 , 1.000000 , 1.000000 }",
              "m_uiRadialSegments": "24",
              "m_uiRings": "16",
              "m_UVScale": "{ 1.000000 , 1.000000 }",
              "m_UVOffset": "{ 0.000000 , 0.000000 }",
              "m_bTileWorld": "False",
              "m_Outline": ""
            }
          }
        ],
        "m_AlbedoTexture": "",
        "m_NormalTexture": "",
        "m_MetallicRoughnessTexture": "",
        "m_BaseColor": "{ 0.900000 , 0.250000 , 0.200000 }",
        "m_Metallic": "0.000000",
        "m_Roughness": "0.500000",
        "m_bDoubleSided": "False",
        "m_bAlphaTest": "False"
      }
    },
    {
      "type": "SETextEntity",
      "name": "goal_label",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{36.000000,6.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "goal_label",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_Text": "GOAL",
        "m_Color": "{ 1.000000 , 0.850000 , 0.200000 , 1.000000 }",
        "m_strFontFile": "",
        "m_fScale": "0.030000",
        "m_HorizontalAlign": "Center",
        "m_VerticalAlign": "Middle",
        "m_bBillboarded": "True"
      }
    },
    {
      "type": "SETextEntity",
      "name": "hud",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{8.000000,8.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "hud",
        "m_strScriptFile": "",
        "m_strScriptClass": "",
        "m_bScriptEnabled": "True",
        "m_Text": "Arrows move    Space = jump",
        "m_Color": "{ 1.000000 , 1.000000 , 1.000000 , 1.000000 }",
        "m_strFontFile": "",
        "m_fScale": "0.018000",
        "m_HorizontalAlign": "Center",
        "m_VerticalAlign": "Middle",
        "m_bBillboarded": "True"
      }
    },
    {
      "type": "SECameraSceneEntity",
      "name": "cam",
      "members": {
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,2.500000,-18.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strEntityName": "cam",
        "m_strScriptFile": "",
        "m_strScriptClass": "FollowCam",
        "m_strScriptSource": "class FollowCam { SESceneEntity@ owner; SESceneEntity@ target; FollowCam(SESceneEntity@ o){ @owner=o; } void OnInit(){ @target = gWorld.FindEntityByName(\"player\"); } void OnUpdate(float dt){ if (target is null) return; SEVec3 t = target.GetPosition(); owner.SetPosition(SEVec3(t.x, t.y + 1.5f, -18.0f)); } }",
        "m_bScriptEnabled": "True",
        "m_fFovAngle": "1.066680",
        "m_fNearClip": "0.100000",
        "m_fFarClip": "300.000000"
      }
    },
    {
      "type": "SESynthSceneEntity",
      "name": "Sfx",
      "members": {
        "m_strEntityName": "Sfx",
        "m_Transform": "{1.000000,0.000000,0.000000,0.000000}{0.000000,1.000000,0.000000,0.000000}{0.000000,0.000000,1.000000,0.000000}{0.000000,0.000000,0.000000,1.000000}",
        "m_bFrustumCullable": "False",
        "m_strInstrument": "Beep",
        "m_strSongFile": "",
        "m_bGenerateSong": "False",
        "m_bAutoPlay": "False",
        "m_fVolume": "0.700000",
        "m_fPan": "0.500000"
      }
    }
  ]
}
