--list of model filenames
models = {
    brian1  = "TestModels/brian_01.obj",
    brian2  = "TestModels/brian_02.obj",
    brian3  = "TestModels/brian_03.obj",
    earth   = "TestModels/Earth.obj",
    planet0 = "Models/Planets/Planet_0.obj",
    planet1 = "Models/Planets/Planet_1.obj",
    planet2 = "Models/Planets/Planet_2.obj",
    planet3 = "Models/Planets/Planet_3.obj",
    planet4 = "Models/Planets/Planet_4.obj",
    planet5 = "Models/Planets/Planet_5.obj",
    planet6 = "Models/Planets/Planet_6.obj"
}

--list of script filenames
scripts = {
    playerScript = "Scripts/PlayerScript.lua"
}

--list of resource names
resourceNames = {
    tick    = "tick",
    input   = "input",
    camera  = "camera",
    game    = "game"
}

--the actual scene table that will be read by the game
scene = {

    --the skybox of the scene
    skybox = {
        textures = {
            left   = "Skybox/Space_1/left.png",
            right  = "Skybox/Space_1/right.png",
            top    = "Skybox/Space_1/top.png",
            bottom = "Skybox/Space_1/bottom.png",
            front  = "Skybox/Space_1/front.png",
            back   = "Skybox/Space_1/back.png"
        },
        sunPosition = { face = "top", x = 324 / 1024, y = 841 / 1024 }
    },

    --camera settings
    camera = {
        fov = radians(45.0),
        near = 0.1,
        far = 100000.0
    },

    --list of game objects to add
    objects = {
        {
            --the transform of the object (required)
            transform = {
                position = { x = 0, y = 0, z = 315 },
                rotation = { x = radians(40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 1, y = 1, z = 1 }
            },

            --the model of the object
            model = models.brian2,

            --the lua script of the object
            luaScript = scripts.playerScript,

            --the resources/entrypoints the lua script uses
            resources = { resourceNames.tick, resourceNames.input, resourceNames.camera, resourceNames.game },

            --sub-objects of this object 
            --functions declared public in the script of these objects 
            --will be accessible from the parent object's script
            subObjects = {
                {
                    name = "cameraTransform",
                    transform = {
                        position = { x = 0, y = 0, z = 0 },
                        rotation = { x = 0, y = 0, z = 0 },
                        scale    = { x = 1, y = 1, z = 1 }
                    }
                }
            }
        },
        
        {
            transform = {
                position = { x = 0, y = 5, z = -15 },
                rotation = { x = radians(40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 5, y = 5, z = 5 }
            },
            model = {
                noise = "Generation/SpaceStationInterior.lua",
                frequency = 12.0,
                isoLevel = 0.5,
                gridCount = 65,
                radius = 0.5,
                wallThickness = 0.0
            },
            resources = { resourceNames.tick, resourceNames.input },
            luaScript = "TestLuaScripts/scaleTest.lua"
        },
        
        {
            transform = {
                position = { x = 0, y = -75, z = -75 },
                rotation = { x = radians(40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet0
        },

        {
            transform = {
                position = { x = 0, y = 75, z = 75 },
                rotation = { x = radians(40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet1
        },

        {
            transform = {
                position = { x = 0, y = -75, z = 75 },
                rotation = { x = radians(40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet2
        },
        
        {
            transform = {
                position = { x = 0, y = 75, z = -75 },
                rotation = { x = radians(-40.0), y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet3
        },
        
        {
            transform = {
                position = { x = 75, y = 0, z = -75 },
                rotation = { x = 0.0, y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet4
        },

        {
            transform = {
                position = { x = -75, y = 0, z = -75 },
                rotation = { x = 0.0, y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet5
        },

        {
            transform = {
                position = { x = -75, y = 0, z = 75 },
                rotation = { x = 0.0, y = radians(30.0), z = 0.0 },
                scale    = { x = 10, y = 10, z = 10 }
            },
            model = models.planet6
        }
    }
}