Leveleditor (WIP)

leveleditor Comming soon!

Prerequisites

The first thing to do is to create a folder named 'export' in your project directory. This is the root directory for your assets. If you export a mesh from Blender the addon exports all filepaths (for example a .tex file referenced in a .material file) relative to the 'export' folder.

Exporting assets from Blender

In Blender go to 'File -> Export -> ChrisslyEngine-Mesh (.mesh)'. Select the 'export' folder (or any subfolder of it), check any options you wish, and click 'Export ChrisslyEngine-Mesh'.

Creating a level

Go to 'File -> New Level'.

Adding entities

Right click a SceneNode in the World Outliner and choose 'Add Entity'. This opens the asset root directory ('export'). Double click the .mesh file you want load or select it and click 'OK'. Press 'F' to focus the entity.

Adding lights

Right click 'Lights' in the World Outliner and choose 'Create Light'.

Adding collision geometry

Right click 'Static Collision' in the World Outliner and choose 'Add Collision Mesh'.

Keyboard Shortcuts

ShortcutAction
Deldelete selected Entity, Scenenode, Light or Collision Mesh
LCtrl + Ssave current level
Ffocus camera on selected object in the World Outliner
LCtrl + Zundo the last Scenenode transformation
RAlt + Pplay

Gamepad Shortcuts

ButtonAction
Startplay

Level-Format

world_settings
{
    shadow_technique none|texture
    shadow_colour "0xe9e0cd"
}

materials
{
    "dir/name.material"
    "dir/another.material"
    ...
}

node // this is the root node "current_level"
{
    position <x y z>
    orientation <x y z w>
    scale <x y z>
    entity
    {
        mesh "dir/name.mesh"
        cast_shadows true|false
        receives_shadows true|false
        cull_frustum true|false
        animation "AnimationName"
        {
            enable true|false
            loop true|false
            weight <f>
        }
        animation "AnotherAnimation"
        {
            ...
        }
    }
    entity
    {
        ...
    }
    node
    {
        ...
    }
}

light
{
    type point|directional|spot
    position <x y z>
    direction <x y z>
    diffuse "0xffffffff"
    specular "0x0"
    attenuation <range constant linear quadradic>
}

collision
{
    "dir/name.mesh"
}

game
{
    spawn_point <x y z>
    spawn_velocity <x y z>
}