-
Notifications
You must be signed in to change notification settings - Fork 1.3k
File Formats
dgough edited this page Nov 21, 2014
·
2 revisions
This is a work in progress. Please refer to the HTMLFile Formats file.
Legend | |
---|---|
[0..1] | Zero or one. Denotes an optional property. |
[0..*] | Zero or many. The property may appear many times. |
[1..*] | One or many. Required property and may appear many times. |
required | Required property. |
Italics | Non-literal |
// Comment | Just like in C++ |
A | B | C | A or B or C. (Shows the valid enumeration values) |
Types | |
---|---|
block | A block property that contains other properties. |
string | A string of characters with no quotations. |
bool | true or false |
float | Floating point number. Decimal is optional, don’t include "f". |
int | Integer |
uint | Unsigned integer |
axis angle | Rotation axis angle (4 floats): x, y, z, angle_in_degrees |
color | Hex color in the format #RRGGBBAA. (#FF6A00FF) |
xref | External reference. This can be
|
lua xref | External reference to a lua function. |
file path | A path to a file. This should be a relative path for the purpose of being cross platform. |
image path | A path to an image.
|
Note:
- The order of the properties does not matter.
- Blocks do not require an id.
Gameplay property files | blocks | |
---|---|---|
.config | Game config definitions. | window, graphics, scripts, aliases, gamepads |
.scene | Scene definition | scene, node, physics |
.material | Material definitions | material, technique, pass |
.physics | Collision objects and physics constraints | physics, collisionObject, constraint |
.animation | Animation and animation clip definitions | animation, clip |
.audio | Audio source definitions | audio |
.particle | Particle emitter definitions | particle |
.form | UI form definitions | form |
.theme | UI theme definitions | theme |
Gameplay files | ||
---|---|---|
.gpb | Gameplay Bundle | Binary encoded scene that is created by the gameplay-encoder from a .dae or .fbx file. |
.vert | Vertex shader | GLSL vertex shader source. |
.frag | Fragment shader | GLSL fragment shader source. |
Other file extensions | |
---|---|
.dae | COLLADA |
.fbx | Autodesk |
.mb | Maya Binary |
.ma | Maya ASCII |
.ttf | TrueType Font |
.lua | Lua source code |
.dds, .dds, .pvr | Compressed texture |
window | ||
{ | ||
width = pixels | [0..1] | int |
height = pixels | [0..1] | int |
x = x_offset_from_top_left | [0..1] | int |
y = y_offset_from_top_left | [0..1] | int |
fullscreen = bool | [0..1] | bool |
title = Hello World | [0..1] | string |
} |
graphics | ||
{ | ||
samples = multisampling_state | [0..1] | int |
defaultMaterial = none | res/foo.material#bar | [0..1] | none | file |
} |
Note: By default defaultMaterial uses a pink material.
scripts | ||
{ | ||
initialize = res/game.lua#initialize | [0..1] | lua xref |
update = res/game.lua#update | [0..1] | lua xref |
render = res/game.lua#render | [0..1] | lua xref |
finalize = res/game.lua#finalize | [0..1] | lua xref |
keyEvent = res/game.lua#keyEvent | [0..1] | lua xref |
touchEvent = res/game.lua#touchEvent | [0..1] | lua xref |
mouseEvent = res/game.lua#mouseEvent | [0..1] | lua xref |
gamepadEvent = res/game.lua#gamepadEvent | [0..1] | lua xref |
{ |
aliases | ||
{ | ||
alias_name = file_path | [0..*] | file path |
} |
gamepads | ||
{ | ||
form = res/common/gamepad.form | [0..1] | xref |
} |
// Load a scene from a .scene property file
Scene* scene = Scene::load("res/common/game.scene");
scene | [0..1] | block |
{ | ||
path = res/game.scene | [0..1] | xref |
activeCamera = node_id | [0..1] | string |
node node_id {} | [0..*] | block |
physics {} | [0..1] | block |
} |
node node_id : parent_node_id | ||
{ | ||
url = res/common/stuff.gpb#duck | [0..1] | xref |
material = res/scene.material#wood | [0..1] | xref |
collisionObject = res/obj.physics#box | [0..1] | xref |
audio = res/game.audio#quack | [0..1] | xref |
translate = x, y, z | [0..1] | 3 floats |
rotate = x, y, z, degrees | [0..1] | axis angle |
scale = x, y, z | [0..1] | 3 floats |
tags | [0..1] | block |
{ | ||
tag_name1 | [0..*] | string |
tag_name2 | ||
} | ||
} |
Note:
- id is optional for material, technique and pass.
- Materials can inherit values from another material by optionally setting a parent_material_id.
- Vertex and fragment shader file extensions do not matter. The convention in gameplay is to use “.vert” and “.frag”.
- scalar is float, int or bool.
- vector is a comma separated list of floats.
// When the .material file contains one material
Material* material = model->setMaterial("res/common/box.material");
// When the .material file contains multiple materials
Material* m = model->setMaterial("res/common/stuff.material#wood");
material material_id : parent_material_id | ||
{ | ||
uniform_name = scalar | vector | [0..*] | uniform |
uniform_name = AUTO_BIND_ENUM | [0..*] | enum |
sampler uniform_name {} | [0..*] | block |
renderState {} | [0..1] | block |
technique id {} | [0..*] | block |
} |
technique technique_id | ||
{ | ||
uniform_name = scalar | vector | [0..*] | uniform |
uniform_name = AUTO_BIND_ENUM | [0..*] | enum |
sampler uniform_name {} | [0..*] | block |
renderState {} | [0..1] | block |
pass id {} | [0..*] | block |
} |
pass pass_id | ||
{ | ||
vertexShader = res/colored.vert | [0..1] | file path |
fragmentShader = res/colored.frag | [0..1] | file path |
defines = semicolon separated list | [0..1] | string |
uniform_name = scalar | vector | [0..*] | uniform |
uniform_name = AUTO_BIND_ENUM | [0..*] | enum |
sampler uniform_name {} | [0..*] | block |
renderState {} | [0..1] | block |
} |
sampler uniform_name | ||
{ | ||
path = res/wood.png | @wood | [0..1] | image path |
mipmap = bool | [0..1] | bool |
wrapS = REPEAT | CLAMP | [0..1] | enum |
wrapT = REPEAT | CLAMP | [0..1] | enum |
minFilter = TEXTURE_MIN_FILTER_ENUM | [0..1] | enum |
magFilter = TEXTURE_MAG_FILTER_ENUM | [0..1] | enum |
} |
renderState | ||
{ | ||
blend = false | [0..1] | bool |
blendSrc = BLEND_ENUM | [0..1] | enum |
blendDst = BLEND_ENUM | [0..1] | enum |
cullFace = false | [0..1] | bool |
depthTest = false | [0..1] | bool |
depthWrite = false | [0..1] | bool |
} |
TEXTURE_MAG_FILTER_ENUM | |
---|---|
NEAREST | Lowest quality |
LINEAR | Better quality |
BLEND_ENUM | |
---|---|
ZERO | ONE_MINUS_DST_ALPHA |
ONE | CONSTANT_ALPHA |
SRC_ALPHA | ONE_MINUS_CONSTANT_ALPHA |
ONE_MINUS_SRC_ALPHA | SRC_ALPHA_SATURATE |
DST_ALPHA |
physics | ||
{ | ||
gravity = x, y, z | [0..1] | 3 floats |
constraint {} | [0..1] | block |
} |
Default gravity: 0.0, -9.8, 0.0
collisionObject id | ||
{ | ||
type = RIGID_BODY | required | enum |
shape = BOX | SPHERE | MESH | CAPSULE | HEIGHTFIELD |
required | enum |
mass = kilograms | [0..1] | float |
friction = coefficient | [0..1] | float |
restitution = coefficient | [0..1] | float |
linearDamping = coefficient | [0..1] | float |
angularDamping = coefficient | [0..1] | float |
kinematic = bool | [0..1] | bool |
anisotropicFriction = x, y, z | [0..1] | 3 floats |
gravity = x, y, z | [0..1] | 3 floats |
// BOX properties | ||
extents = x, y, z | [0..1] | 3 floats |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// SPHERE properties | ||
radius = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// CAPSULE properties | ||
radius = float | [0..1] | float |
height = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// HEIGHTFIELD properties | ||
image = res/common/image.png | [0..1] | xref |
} |
collisionObject id | ||
{ | ||
type = GHOST_OBJECT | required | enum |
shape = BOX | SPHERE | MESH | CAPSULE | HEIGHTFIELD |
required | enum |
// BOX properties | ||
extents = x, y, z | [0..1] | 3 floats |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// SPHERE properties | ||
radius = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// CAPSULE properties | ||
radius = float | [0..1] | float |
height = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// HEIGHTFIELD properties | ||
image = res/common/image.png | [0..1] | xref |
} |
collisionObject id | ||
{ | ||
type = CHARACTER | required | enum |
shape = BOX | SPHERE | MESH | CAPSULE | required | enum |
mass = kilograms | [0..1] | float |
// BOX properties | ||
extents = x, y, z | [0..1] | 3 floats |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// SPHERE properties | ||
radius = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// CAPSULE properties | ||
radius = float | [0..1] | float |
height = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
} |
collisionObject id | ||
{ | ||
type = VEHICLE | required | enum |
shape = BOX | SPHERE | MESH | CAPSULE | required | enum |
mass = kilograms | [0..1] | float |
friction = coefficient | [0..1] | float |
restitution = coefficient | [0..1] | float |
linearDamping = coefficient | [0..1] | float |
angularDamping = coefficient | [0..1] | float |
kinematic = bool | [0..1] | bool |
anisotropicFriction = x, y, z | [0..1] | 3 floats |
gravity = x, y, z | [0..1] | 3 floats |
// BOX properties | ||
extents = x, y, z | [0..1] | 3 floats |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// SPHERE properties | ||
radius = radius | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// CAPSULE properties | ||
radius = float | [0..1] | float |
height = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// VEHICLE only | ||
steeringGain = float | [0..1] | float |
brakingForce = float | [0..1] | float |
drivingForce = float | [0..1] | float |
steerdownSpeed = float | [0..1] | float |
steerdownGain = float | [0..1] | float |
brakedownStart = float | [0..1] | float |
brakedownFull = float | [0..1] | float |
drivedownStart = float | [0..1] | float |
drivedownFull = float | [0..1] | float |
boostSpeed = float | [0..1] | float |
boostGain = float | [0..1] | float |
downforce = float | [0..1] | float |
} |
collisionObject id | ||
{ | ||
type = VEHICLE_WHEEL | required | enum |
shape = BOX | SPHERE | MESH | CAPSULE | required | enum |
mass = kilograms | [0..1] | float |
friction = coefficient | [0..1] | float |
restitution = coefficient | [0..1] | float |
linearDamping = coefficient | [0..1] | float |
angularDamping = coefficient | [0..1] | float |
kinematic = bool | [0..1] | bool |
anisotropicFriction = x, y, z | [0..1] | 3 floats |
gravity = x, y, z | [0..1] | 3 floats |
// BOX properties | ||
extents = x, y, z | [0..1] | 3 floats |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// SPHERE properties | ||
radius = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// CAPSULE properties | ||
radius = float | [0..1] | float |
height = float | [0..1] | float |
center = x, y, z | [0..1] | 3 floats |
centerAbsolute = x, y, z | [0..1] | 3 floats |
// VEHICLE_WHEEL only | ||
steerable = false | [0..1] | bool |
wheelDirection = x, y, z | [0..1] | 3 floats |
wheelAxle = x, y, z | [0..1] | 3 floats |
strutConnectionOffset = x, y, z | [0..1] | 3 floats |
strutRestLength = float | [0..1] | float |
strutStiffness = coefficient | [0..1] | float |
strutDampingCompression = coefficient | [0..1] | float |
strutDampingRelaxation = coefficient | [0..1] | float |
frictionBreakout = float | [0..1] | float |
wheelRadius = radius | [0..1] | float |
rollInfluence = float | [0..1] | float |
} |
constraint id | ||
{ | ||
type = FIXED | required | enum |
breakingImpulse = float | [0..1] | float |
} |
constraint id | ||
{ | ||
type = GENERIC | required | enum |
translationOffsetA = x, y, z | [0..1] | 3 floats |
translationOffsetB = x, y, z | [0..1] | 3 floats |
rotationOffsetA = x, y, z, degrees | [0..1] | axis angle |
rotationOffsetB = x, y, z, degrees | [0..1] | axis angle |
angularLowerLimit = x, y, z | [0..1] | 3 floats |
angularUpperLimit = x, y, z | [0..1] | 3 floats |
linearLowerLimit = x, y, z | [0..1] | 3 floats |
linearUpperLimit = x, y, z | [0..1] | 3 floats |
breakingImpulse = float | [0..1] | float |
} |
constraint id | ||
{ | ||
type = HINGE | required | enum |
translationOffsetA = x, y, z | [0..1] | 3 floats |
translationOffsetB = x, y, z | [0..1] | 3 floats |
rotationOffsetA = x, y, z, degrees | [0..1] | axis angle |
rotationOffsetB = x, y, z, degrees | [0..1] | axis angle |
limits = lowerLimit, upperLimit, bounciness |
[0..1] | 2 or 3 floats |
breakingImpulse = float | [0..1] | float |
} |
constraint id | ||
{ | ||
type = SOCKET | required | enum |
translationOffsetA = x, y, z | [0..1] | 3 floats |
translationOffsetB = x, y, z | [0..1] | 3 floats |
breakingImpulse = float | [0..1] | float |
} |
constraint id | ||
{ | ||
type = SPRING | required | enum |
translationOffsetA = x, y, z | [0..1] | 3 floats |
translationOffsetB = x, y, z | [0..1] | 3 floats |
rotationOffsetA = x, y, z, degrees | [0..1] | axis angle |
rotationOffsetB = x, y, z, degrees | [0..1] | axis angle |
angularLowerLimit = x, y, z | [0..1] | 3 floats |
angularUpperLimit = x, y, z | [0..1] | 3 floats |
linearLowerLimit = x, y, z | [0..1] | 3 floats |
linearUpperLimit = x, y, z | [0..1] | 3 floats |
angularDampingX = damping | [0..1] | float |
angularDampingY = damping | [0..1] | float |
angularDampingZ = damping | [0..1] | float |
angularStrengthX = strength | [0..1] | float |
angularStrengthY = strength | [0..1] | float |
angularStrengthZ = strength | [0..1] | float |
linearDampingX = damping | [0..1] | float |
linearDampingY = damping | [0..1] | float |
linearDampingZ = damping | [0..1] | float |
linearStrengthX = strength | [0..1] | float |
linearStrengthY = strength | [0..1] | float |
linearStrengthZ = strength | [0..1] | float |
breakingImpulse = float | [0..1] | float |
} |
animation animation_id | ||
{ | ||
property = ANIMATION_PROPERTY | required | enum |
keyCount = number_of_key_frames | [0..1] | int |
keyTimes = uint uint uint uint ... | [0..1] | uint(s) |
keyValues = float float float float ... | [0..1] | float(s) |
curve = INTERPOLATION_TYPE | required | enum |
} |
// Load the animation clips for sample03-character
Animation* animation = node->getAnimation("animations");
animation->createClips("res/common/boy.animation");
animation animation_id | ||
{ | ||
frameCount = frame_count | required | int |
clip clip_id {} | [0..*] | block |
} |
clip clip_id | ||
{ | ||
begin = frame_index | [0..1] | int |
end = frame_index | [0..1] | int |
repeatCount = float | REPEAT_INDEFINITE | [0..1] | float | enum |
speed = 1.0 | [0..1] | float |
} |
ANIMATION_PROPERTY | |
ANIMATE_SCALE | ANIMATE_TRANSLATE |
ANIMATE_SCALE_X | ANIMATE_TRANSLATE_X |
ANIMATE_SCALE_Y | ANIMATE_TRANSLATE_Y |
ANIMATE_SCALE_Z | ANIMATE_TRANSLATE_Z |
ANIMATE_ROTATE | ANIMATE_ROTATE_TRANSLATE |
ANIMATE_UNIFORM | ANIMATE_SCALE_ROTATE_TRANSLATE |
INTERPOLATION_TYPE | ||
BEZIER | QUARTIC_IN | CIRCULAR_IN |
BSPLINE | QUARTIC_OUT | CIRCULAR_OUT |
FLAT | QUARTIC_IN_OUT | CIRCULAR_IN_OUT |
HERMITE | QUARTIC_OUT_IN | CIRCULAR_OUT_IN |
LINEAR | QUINTIC_IN | ELASTIC_IN |
SMOOTH | QUINTIC_OUT | ELASTIC_OUT |
STEP | QUINTIC_IN_OUT | ELASTIC_IN_OUT |
QUADRATIC_IN | QUINTIC_OUT_IN | ELASTIC_OUT_IN |
QUADRATIC_OUT | SINE_IN | OVERSHOOT_IN |
QUADRATIC_IN_OUT | SINE_OUT | OVERSHOOT_OUT |
QUADRATIC_OUT_IN | SINE_IN_OUT | OVERSHOOT_IN_OUT |
CUBIC_IN | SINE_OUT_IN | OVERSHOOT_OUT_IN |
CUBIC_OUT | EXPONENTIAL_IN | BOUNCE_IN |
CUBIC_IN_OUT | EXPONENTIAL_OUT | BOUNCE_OUT |
CUBIC_OUT_IN | EXPONENTIAL_IN_OUT | BOUNCE_IN_OUT |
EXPONENTIAL_OUT_IN | BOUNCE_OUT_IN |
// Load a sound from file
AudioSource* source = AudioSource::create("res/game.audio#explode");
audio audio_id | ||
{ | ||
path = res/common/engine_loop.ogg | [0..1] | file path |
looped = false | [0..1] | bool |
gain = volume_amplification (1.0) | [0..1] | float |
pitch = pitch_value [0.5-2.0] | [0..1] | float |
velocity = x, y, z | [0..1] | 3 floats |
} |
// Load a particle emitter from a property file
ParticleEmitter* p = ParticleEmitter::create("res/fire.particle");
particle particle_id | ||
{ | ||
sprite | [0..1] | block |
{ | ||
path = res/common/smoke.png | [0..1] | file path |
width = int | [0..1] | int |
height = int | [0..1] | int |
frameCount = count | [0..1] | int |
frameDuration = seconds | [0..1] | float |
frameRandomOffset = offset | [0..1] | int |
looped = false | [0..1] | bool |
animated = false | [0..1] | bool |
blending = OPAQUE | TRANSPARENT | ADDITIVE | MULTIPLIED |
[0..1] | enum |
} | ||
particleCountMax = 100 | [0..1] | uint |
emissionRate = particles_per_second | [0..1] | uint |
orbitPosition = false | [0..1] | bool |
orbitVelocity = false | [0..1] | bool |
orbitAcceleration = false | [0..1] | bool |
ellipsoid = false | [0..1] | bool |
sizeStartMin = 1.0 | [0..1] | float |
sizeStartMax = 1.0 | [0..1] | float |
sizeEndMin = 1.0 | [0..1] | float |
sizeEndMax = 1.0 | [0..1] | float |
energyMin = milliseconds | [0..1] | float |
energyMax = milliseconds | [0..1] | float |
rotationPerParticleSpeedMin = radians per second |
[0..1] | float |
rotationPerParticleSpeedMax = radians per second |
[0..1] | float |
colorStart = red, blue, green, alpha | [0..1] | 4 floats |
colorEnd = red, blue, green, alpha | [0..1] | 4 floats |
position = x, y, z | [0..1] | 3 floats |
positionVar = x, y, z | [0..1] | 3 floats |
velocity = x, y, z | [0..1] | 3 floats |
velocityVar = x, y, z | [0..1] | 3 floats |
acceleration = x, y, z | [0..1] | 3 floats |
accelerationVar = x, y, z | [0..1] | 3 floats |
} |
// Load a form from a property file
Form* form = Form::create("res/editor.form");
form form_id | ||
{ | ||
theme = res/editor.theme | required | xref |
layout = LAYOUT_ENUM | required | enum |
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
alignment = ALIGNMENT_ENUM | [0..1] | enum |
size = width, height | [0..1] | 2 floats |
autoWidth = false | [0..1] | bool |
autoHeight = false | [0..1] | bool |
width = width | [0..1] | float |
height = height | [0..1] | float |
consumeInputEvents = true | [0..1] | bool |
container container_id {} | [0..*] | block |
label label_id {} | [0..*] | block |
textBox textBox_id {} | [0..*] | block |
button button_id {} | [0..*] | block |
checkBox checkBox_id {} | [0..*] | block |
radioButton radioButton_id {} | [0..*] | block |
slider slider_id {} | [0..*] | block |
} |
container container_id | ||
{ | ||
layout = LAYOUT_ENUM | required | enum |
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
alignment = ALIGNMENT_ENUM | [0..1] | enum |
size = width, height | [0..1] | 2 floats |
autoWidth = false | [0..1] | bool |
autoHeight = false | [0..1] | bool |
width = width | [0..1] | float |
height = height | [0..1] | float |
consumeInputEvents = true | [0..1] | bool |
container container_id {} | [0..*] | block |
label label_id {} | [0..*] | block |
textBox textBox_id {} | [0..*] | block |
button button_id {} | [0..*] | block |
checkBox checkBox_id {} | [0..*] | block |
radioButton radioButton_id {} | [0..*] | block |
slider slider_id {} | [0..*] | block |
} |
label label_id | ||
{ | ||
text = Hello World | [0..1] | string |
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
alignment = ALIGNMENT_ENUM | [0..1] | enum |
size = width, height | [0..1] | 2 floats |
autoWidth = false | [0..1] | bool |
autoHeight = false | [0..1] | bool |
consumeInputEvents = true | [0..1] | bool |
} |
textBox textBox_id | ||
{ | ||
... same as label | ||
} |
button button_id | ||
{ | ||
... same as label | ||
} |
checkBox checkBox_id | ||
{ | ||
checked = false | [0..1] | bool |
text = Hello World | [0..1] | string |
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
alignment = ALIGNMENT_ENUM | [0..1] | enum |
size = width, height | [0..1] | 2 floats |
autoWidth = false | [0..1] | bool |
autoHeight = false | [0..1] | bool |
consumeInputEvents = true | [0..1] | bool |
} |
radioButton radioButton_id | ||
{ | ||
group = group_id | [0..1] | string |
checked = false | [0..1] | bool |
text = Hello World | [0..1] | string |
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
alignment = ALIGNMENT_ENUM | [0..1] | enum |
size = width, height | [0..1] | 2 floats |
autoWidth = false | [0..1] | bool |
autoHeight = false | [0..1] | bool |
imageSize = width, height | [0..1] | 2 floats |
consumeInputEvents = true | [0..1] | bool |
} |
slider slider_id | ||
{ | ||
style = style_id | [0..1] | string |
position = x, y | [0..1] | 2 floats |
size = width, height | [0..1] | 2 floats |
min = float | [0..1] | float |
max = float | [0..1] | float |
value = default_value | [0..1] | float |
step = discrete_steps | [0..1] | float |
text = Hello World | [0..1] | string |
consumeInputEvents = true | [0..1] | bool |
} |
LAYOUT_ENUM | |
LAYOUT_FLOW | Controls are placed next to one another horizontally until the right-most edge of the container is reached, at which point a new row is started. |
LAYOUT_VERTICAL | Controls are placed next to one another vertically until the bottom-most edge of the container is reached. |
LAYOUT_ABSOLUTE | Controls are not modified at all by this layout. They must be positioned and sized manually. |
ALIGNMENT_ENUM | |
ALIGN_LEFT | Left |
ALIGN_HCENTER | Horizontal center |
ALIGN_RIGHT | Right |
ALIGN_TOP | Top |
ALIGN_VCENTER | Vertical center |
ALIGN_BOTTOM | Bottom |
ALIGN_TOP_LEFT | ALIGN_TOP | ALIGN_LEFT |
ALIGN_VCENTER_LEFT | ALIGN_VCENTER | ALIGN_LEFT |
ALIGN_BOTTOM_LEFT | ALIGN_BOTTOM | ALIGN_LEFT |
ALIGN_TOP_HCENTER | ALIGN_TOP | ALIGN_HCENTER |
ALIGN_VCENTER_HCENTER | ALIGN_VCENTER | ALIGN_HCENTER |
ALIGN_BOTTOM_HCENTER | ALIGN_BOTTOM | ALIGN_HCENTER |
ALIGN_TOP_RIGHT | ALIGN_TOP | ALIGN_RIGHT |
ALIGN_VCENTER_RIGHT | ALIGN_VCENTER | ALIGN_RIGHT |
ALIGN_BOTTOM_RIGHT | ALIGN_BOTTOM | ALIGN_RIGHT |
theme theme_id | ||
{ | ||
texture = image_path | required | image path |
cursor cursor_id {} | [0..*] | block |
imageList imageList_id {} | [0..*] | block |
skin skin_id {} | [0..*] | block |
style style_id {} | [0..*] | block |
} |
cursor cursor_id | ||
{ | ||
region = x, y, width, height | [0..1] | 4 floats |
color = #RRGGBBAA | [0..1] | color |
} |
imageList imageList_id | ||
{ | ||
color = #RRGGBBAA | [0..1] | color |
image image_id {} | [0..*] | block |
} |
skin skin_id | ||
{ | ||
region = x, y, width, height | [0..1] | 4 floats |
color = #RRGGBBAA | [0..1] | color |
border | [0..1] | block |
{ | ||
top = top | [0..1] | int |
bottom = bottom | [0..1] | int |
left = left | [0..1] | int |
right = right | [0..1] | int |
} | ||
} |
style style_id | ||
{ | ||
margin | [0..1] | block |
{ | ||
top = top | [0..1] | int |
bottom = bottom | [0..1] | int |
left = left | [0..1] | int |
right = right | [0..1] | int |
} | ||
padding | [0..1] | block |
{ | ||
top = top | [0..1] | int |
bottom = bottom | [0..1] | int |
left = left | [0..1] | int |
right = right | [0..1] | int |
} | ||
stateNormal {} | [0..1] | block |
stateFocus {} | [0..1] | block |
stateActive {} | [0..1] | block |
stateDisabled {} | [0..1] | block |
} |
stateNormal | ||
{ | ||
skin = skin_id | [0..1] | string |
imageList = imageList_id | [0..1] | string |
cursor = cursor_id | [0..1] | string |
font = res/common/arial40.gpb | [0..1] | file path |
fontSize = fontSize | [0..1] | int |
textColor = #RRGGBBAA | [0..1] | color |
textAlignment = ALIGNMENT_ENUM | [0..1] | enum |
rightToLeft = false | [0..1] | bool |
opacity = float | [0..1] | float |
} |
stateFocus | ||
{ | ||
... same as stateNormal | ||
} |
stateActive | ||
{ | ||
... same as stateNormal | ||
} |
stateDisabled | ||
{ | ||
... same as stateNormal | ||
} |