Permalink
Fetching contributors…
Cannot retrieve contributors at this time
456 lines (410 sloc) 32.6 KB
; Orx settings template / UTF-8 unicode support
; Sections are defined using [ ]
; Example:
; [My section]
; Everything after a ';' is considered as comment
; Key/value pairs are written like this:
; MyKey = MyValue
; Warning! If you want to add comments, use the ';' separator
; Example:
; MyKey = MyValue; Everything I wrote now is part of comments and not of the value
; If you want to use a ';' in a non-numerical value, use a block assignation delimited with '"'
; Example:
; MyKey = "MyValuePart1 ; MyValuePart2"
; Blocks are also useful for assigning multi-line values
; Example:
; MyKey = "This value
; spans
; on multiple lines"
; If you double the first '"', the value won't be considered as a block but as a regular one. It'll still contain a '"' at the start of the string value;
; Example:
; MyKey = ""MyQuotedValue"
; The string <"MyQuotedValue">, including the quotes, will be stored as a value
; All sections can inherit from any other one using the inheritance marker '@'
; Example:
; [Template]
; MyKey1 = MyValue1;
; MyKey2 = MyValue2;
; [Object@Template] <= This section will contains all values defined in the section 'Template';
; A parent can be removed when overriding a section and using no name after '@'.
; The implicit default parent section can be forced to be ignored by using the specific '@@' syntax
; Example:
; [Object] <= This section doesn't use any explicit parent but will use the implicit default parent if defined (see SettingsTemplate.ini, section [Config])
; [Object@Template] <= This section now uses 'Template' as an explicit parent section;
; [Object@] <= This section now has removed any explicit parent but is still using the implicit default parent if defined (see SettingsTemplate.ini, section [Config]))
; [Object@@] <= This section now has removed any parent and will not use the implicit default parent section either
; All values can be locally inherited from another section using the inheritance marker '@', with the optional use of '.' if we want to specify another key
; Example:
; [Template]
; MyKey = MyValue;
; MyOtherKey = MyOtherValue;
; [Object]
; MyKey = @Template; <= The value for 'MyKey' will be inherited from the one in the section 'Template', with the same key. This inheritance can be chained;
; My2ndKey = @Template.MyKey; <= The value for 'My2ndKey' will be inherited from the section 'Template' using the key 'MyKey'. This inheritance can also be chained;
; MyLastKey = @.MyKey; <= The value for 'MyLastKey' will be inherited from the current section ('Object') using the key 'MyKey'. This inheritance can also be chained;
; NB: MyOtherKey isn't inherited at all in this case.
; All values can implicitly refer to their own section using the inheritance marker '@' by itself. Its value will be dynamic and carry any inheritance to always result in the name of the child section;
; Example:
; [Template]
; MyKey = @; <= The value for 'MyKey' will be 'Template', the name of this section
; MyOtherKey = @; <= Same here, the value for 'MyOtherKey' will also be the name of this section: 'Template'
; [Object@Template]
; MyNewKey = @; <= The value for 'MyNewKey' will be 'Object'
; MyKey = @Template; <= The value for 'MyKey' will be inherited from the section 'Template' using the same key and its value will be 'Object', ie. this section, not the parent one, 'Template'
; NB: MyOtherKey will use the section inheritance and its value will be 'Object', ie. this section, not the parent one, 'Template'
; In the case of the in-section/nameless inheritance (@.Key), the "nameless" section used will also be dynamic;
; [Parent]
; MyKey = MyValue
; MyOtherKey = @.MyKey
; [Child@Parent]
; MyKey = MyLastValue
; Querying Child.MyOtherKey will result in 'MyLastValue': Child.MyOtherKey -> Parent.MyOtherKey -> <nameless>.Mykey -> Child.MyKey -> MyLastValue
; If you want to load another file, you need to write this on an empty line:
; @path/to/MyOtherFile@
; Loading will happen instantly in the parsing, which can override previously defined values
; Also, values defined in the "included" file can be overridden afterward
; Lastly, after loading an "included" file, parsing will continue in the same section as before
; Example:
; [MySection]
; Key1 = Var1;
; @IncludeFile@
; Key2 = Var2; <= this will be added to the 'MySection' section
; FLOAT values are expressed with a '.' as decimal separator.
; INT values can be expressed using different prefixes (not case sensitive):
; - decimal without any prefix: 16
; - hexadecimal with prefix '0x': 0x10
; - octal with prefix '0': 020
; - binary with prefix '0b': 0b10000
; VECTOR values are expressed this way:
; MyVector = (1.0, 2.0, 3.0); NB: { } can be used in place of ( ). Components can be (x, y, z) most of the time, or (r, g, b)/(h, s, l)/(h, s, v) for color
; Wherever numerical values are used (Ints, Floats and Vectors), a random generated value can be obtained using the separator ~.
; Example:
; Value1 = 0.5 ~ 1.0;
; Value2 = (0.0, 0.0, 0.0) ~ (1.0, 1.0, 1.0);
; You can specify lists of values using the separator #.
; The default behavior will be to select randomly a value from a list *EXCEPT* if a list item index is provided in the code.
; For all properties defined in this template, values will be taken randomly if a list is provided for any field that doesn't explicitly accept one.
; Lists can contain random values.
; Example:
; Key1 = Var1 # Var2 # RandVar3 ~ RandVar4 # Var5;
; Lists can span multiple lines when using # at the end of the line (line ending comments are allowed).
; If you want to define an empty element at the end of a list, use ##
; Example:
; Key2 = Var1 # Var2 #
; Var3 #; This list still continues on next line and this comment is valid.
; Var4 ; This list is now complete and contains 4 elements.
; Key3 = Var1 # Var2 ##; This list will not span on the next line but will contain a 3rd (and last) empty element.
; You can also append items to properties using the assignment operator '+='. Append values to a property that doesn't exist is a valid behavior:
; in this case a regular value will be created, ie. the '+' is ignored.
; Example:
; Key1 = Item1 # Item2;
; Key1 += Item3;
; Key2 += NewItem1 # NewItem2;
; Key1 now contains 3 items: Item1, Item2 and Item3. Key2 only contains 2 items: NewItem1 and NewItem2.
[ObjectTemplate]
Graphic = GraphicTemplate;
AnimationSet = AnimationSetTemplate;
AnimationFrequency = [Float];
Body = BodyTemplate;
Group = [String]; NB: Defaults to default group;
Clock = ClockTemplate; NB: If no clock is specified the main clock (core) will be used for update calculations;
LifeTime = [Float]; NB: If not defined or negative, infinite life is granted;
Age = [Float]; NB: If defined, object will seem to be [Age] old upon creation, in seconds;
Color = [Vector]; NB: Values are RGB from 0 to 255;
RGB = [Vector]; NB: Values are RGB from 0.0 to 1.0; Will be used only if Color isn't defined;
HSL = [Vector]; NB: Values are HSL from 0.0 to 1.0; Will be used only if Color and RGB aren't defined;
HSV = [Vector]; NB: Values are HSV from 0.0 to 1.0; Will be used only if Color, RGB and HSL aren't defined;
Alpha = [Float];
AutoScroll = x|y|both;
Flip = x|y|both; NB: Flipping only affects the visual. Properties like physics body won't be affected;
DepthScale = [Bool];
Position = [Vector]; NB: If objects has a valid parent and use its space, this value will be considered in parent's space, ie. [0-1] defines parent size on each axis;
Speed = [Vector];
Pivot = [Vector]; NB: Overrides graphic's value if present;
Size = [Vector]; NB: Overrides graphic's value if present;
UseRelativeSpeed = [Bool]; NB: If true, the initial speed will be applied relatively to current object rotation & scale;
Rotation = [Float]; NB: Angle in degrees around z axis;
AngularVelocity = [Float]; NB: Velocity in degrees/second around z axis;
Scale = [Vector]|[Float]; NB: z is ignored for 2D objects. If it has a valid parent and use its space, this value will be considered in parent's space, ie. [0-1] defines parent size on each axis;
Smoothing = [Bool]; NB: no value will defaults to the global display settings;
BlendMode = alpha|multiply|add|premul|none; NB: Default value is alpha;
Repeat = [Vector]; NB: z is ignored and other values must be strictly positive. This will be ignored for text objects;
FXList = FXTemplate1 # FXTemplate2 # ...; NB: FX will be played immediately. Up to 4 FXs can be defined;
FXDelayList = [Float] # [Float] # ...; NB: Delays (in seconds, defaulting to 0) that will be applied to corresponding FXs from the FXList;
SoundList = SoundTemplate1 # SoundTemplate2 # ...; NB: FX will be played immediately. Up to 4 sounds can be defined;
ShaderList = ShaderTemplate1 # ShaderTemplate2 # ...; NB: Shader will be activated immediately. Up to 4 shaders can be defined;
TrackList = TimeLineTrackTemplate1 # TimeLineTrackTemplate2 # ...; NB: Timeline tracks will be played immediately. Up to 16 timeline tracks can be defined;
Spawner = SpawnerTemplate;
ChildList = ObjectTemplate1 # ObjectTemplate2 # ...; NB: Children will get deleted automatically when the current object will be deleted;
ChildJointList = JointTemplate1 # JointTemplate2 # ...; NB: Indices match those of the ChildList;
ParentCamera = CameraTemplate; NB: This will set the object as a child of the specified camera. Ex: Allows easy creation of UI objects;
UseParentSpace = true|false|both|position|scale|none; NB: If set to true/both and has a valid parent camera, its position and scale will be considered in parent camera's space at creation, ie. [0-1] defines parent size on each axis. It can be applied individually to only position or scale. Defaults to true/both;
IgnoreFromParent = none|all|rotation|scale|position|position.rotation|position.scale|position.position; NB: Defines which parts of the parent's transformation will be ignored when transmitted to the object. Defaults to none;
[GraphicTemplate]
Texture = path/to/ImageFile.ext; NB: If provided, text data will be ignored. If the value is 'pixel', a 1x1 white bitmap with full opacity will be used. If it begins with the character '$', it will be used as a locale key instead of as a plain texture. It will then be automatically updated upon a new language selection;
TextureOrigin = [Vector]; NB: Top left corner, z is ignored. This will be ignored for text data;
TextureSize = [Vector]; NB: Texture size, z is ignored. This will be ignored for text data;
KeepInCache = [Bool]; NB: If true, the associated texture will always stay in cache. This value is ignored for a text. Defaults to false;
Text = TextTemplate; NB: Will be ignored if a valid texture is provided;
Pivot = center(+truncate|round)|left|right|top|bottom|[Vector]; NB: Truncate and round will adjust pivot values if they are not integers; z is ignored for 2D graphics;
Repeat = [Vector]; NB: z is ignored and other values must be strictly positive. This will be ignored for text data;
Flip = x|y|both;
Color = [Vector]; NB: Values are RGB from 0 to 255;
RGB = [Vector]; NB: Values are RGB from 0.0 to 1.0; Will be used only if Color isn't defined;
HSL = [Vector]; NB: Values are HSL from 0.0 to 1.0; Will be used only if Color and RGB aren't defined;
HSV = [Vector]; NB: Values are HSV from 0.0 to 1.0; Will be used only if Color, RGB and HSL aren't defined;
Alpha = [Float];
BlendMode = alpha|multiply|add|premul|none; NB: Default value is alpha;
Smoothing = [Bool]; NB: no value will defaults to the object settings. This will be ignored for text data;
[TextTemplate]
String = "string to display"; NB: If this string begins with the character '$', it will be used as a locale key instead of as a plain text. It will then be automatically updated upon a new language selection;
Font = FontTemplate; NB: If none is provided or 'default' is used, orx's default font will be used; If it begins with the character '$', it will be used as a locale key instead of as a plain section name. It will then be automatically updated upon a new language selection;
[FontTemplate]
Texture = path/to/ImageFile.ext;
TextureOrigin = [Vector]; NB: Top left corner, z is ignored; Defaults to (0, 0, 0);
TextureSize = [Vector]; NB: Texture size for the character definition area, z is ignored; Defaults to texture's width & height;
KeepInCache = [Bool]; NB: If true, the associated texture will always stay in cache. Defaults to false;
CharacterList = "ordered list of character"; NB: All characters with a glyph in the texture file have to be specified in order of appearance; Supports ANSI or UTF-8 strings (*NOT* ISO-Latin-1!)
CharacterSize = [Vector]; NB: If defined, CharacterHeight & CharacterWidthList will be ignored. z value is ignored;
CharacterHeight = [Float]; NB: This is only used for non-monospaced fonts, ie. when CharacterSize isn't defined;
CharacterWidthList = [Float] # [Float] # ...; NB: This is only used for non-monospaced fonts, ie. when CharacterSize isn't defined. There should be exactly one value per character defined in CharacterList;
CharacterSpacing = [Vector]; NB: Empty space between characters, z is ignored. Defaults to (0, 0, 0);
[BodyTemplate]
Inertia = [Float];
Mass = [Float];
LinearDamping = [Float];
AngularDamping = [Float];
FixedRotation = [Bool];
HighSpeed = [Bool];
Dynamic = [Bool];
CustomGravity = [Vector]; NB: If none is provided, world's gravity will be applied to the body;
AllowSleep = [Bool]; NB: Defaults to true;
AllowMoving = [Bool]; NB: This is only used by static bodies. If set to true, the static body can be moved via its speed/angular velocity accessors. Defaults to true;
PartList = BodyPartTemplate1 # BodyPartTemplate2 # ...;
[BodyPartSphereTemplate]
Type = sphere;
Center = [Vector]|full;
Radius = [Float]|full;
Friction = [Float];
Restitution = [Float];
Density = [Float];
SelfFlags = flags;
CheckMask = flags;
Solid = [Bool];
[BodyPartBoxTemplate]
Type = box;
TopLeft = [Vector]|full;
BottomRight = [Vector]|full;
Friction = [Float];
Restitution = [Float];
Density = [Float];
SelfFlags = flags;
CheckMask = flags;
Solid = [Bool];
[BodyPartMeshTemplate]
Type = mesh;
VertexList = [Vector] # [Vector] # ...; NB: There is a maximum of 8 vertices and they *HAVE* to be entered clockwise;
Friction = [Float];
Restitution = [Float];
Density = [Float];
SelfFlags = flags;
CheckMask = flags;
Solid = [Bool];
[RevoluteJoint]
Type = revolute;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
Rotation = [Float]; NB: Default rotation between parent and child bodies, in degrees. If none is provided, the current rotation difference between both bodies will be used;
MinRotation = [Float]; NB: Only used if MaxRotation is also defined;
MaxRotation = [Float]; NB: Only used if MinRotation is also defined;
MotorSpeed = [Float]; NB: Only used if MaxMotorTorque is also defined. In degrees / seconds;
MaxMotorTorque = [Float]; NB: Only used if MotorSpeed is also defined;
[PrismaticJoint]
Type = prismatic;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
Rotation = [Float]; NB: Default rotation between parent and child bodies, in degrees. If none is provided, the current rotation difference between both bodies will be used;
TranslationAxis = [Vector]; NB: Should be normalized;
MinTranslation = [Float]; NB: Only used if MaxTranslation is also defined;
MaxTranslation = [Float]; NB: Only used if MinTranslation is also defined;
MotorSpeed = [Float]; NB: Only used if MaxMotorForce is also defined. In units / seconds;
MaxMotorForce = [Float]; NB: Only used if MotorSpeed is also defined;
[SpringJoint]
Type = spring;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
Length = [Float]; NB: If not defined, the current distance between parent and child bodies will be used;
Frequency = [Float]; NB: In hertz;
Damping = [Float]; NB: 0 for no damping, 1 for max damping;
[RopeJoint]
Type = rope;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
Length = [Float]; NB: If not defined, the current distance between parent and child bodies will be used;
[PulleyJoint]
Type = pulley;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
ParentGroundAnchor = [Vector];
ChildGroundAnchor = [Vector];
ParentLength = [Float]; NB: If not defined, the current distance between parent and its ground anchor will be used;
MaxParentLength = [Float]; NB: If not defined ParentLength + LengthRatio * ChildLength will be used;
ChildLength = [Float]; NB: If not defined, the current distance between child and its ground anchor will be used;
MaxChildLength = [Float]; NB: If not defined ParentLength + LengthRatio * ChildLength will be used;
LengthRatio = [Float];
[SuspensionJoint]
Type = suspension;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
TranslationAxis = [Vector]; NB: Should be normalized;
MinTranslation = [Float]; NB: Only used if MaxTranslation is also defined;
MaxTranslation = [Float]; NB: Only used if MinTranslation is also defined;
MotorSpeed = [Float]; NB: Only used if MaxMotorForce is also defined. In units / seconds;
MaxMotorForce = [Float]; NB: Only used if MotorSpeed is also defined;
[WeldJoint]
Type = weld;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
Rotation = [Float]; NB: Default rotation between parent and child bodies, in degrees. If none is provided, the current rotation difference between both bodies will be used;
[FrictionJoint]
Type = friction;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
MaxForce = [Float];
MaxTorque = [Float];
[GearJoint]
Type = gear;
ParentAnchor = [Vector]; NB: In local parent's space;
ChildAnchor = [Vector]; NB: In local child's space;
Collide = [Bool]; NB: Allows collision between joint's parent and child bodies. Defaults to false;
ParentJoint = [String]; NB: Should be a revolute or prismatic joint already existing on the parent.
ChildJoint = [String]; NB: Should be a revolute or prismatic joint already existing on the child.
JointRatio = [Float];
[AnimationSetTemplate]
; NB: This section will become the parent of any animation section used by it, so any common properties to all the animations or animation frames, such as FrameSize, Texture, KeyDuration or Direction can be defined here;
Frequency = [Float]; NB: Relative frequency to which the animations will be played. Defaults to 1;
KeepInCache = [Bool]; NB: If true, the animation set will always stay in cache, even if not currently used by any objects. Can save time but costs memory. Defaults to false;
StartAnim = Animation; NB: Entry point of the animation graph, first animation to be played by default;
Prefix = [String]; NB: Prefix that will used in front of all animation names and frames. Defaults to empty string;
Digits = [Int]; NB: How many digits will be used for the animation frame suffixes. Defaults to 0 (ie. as many digits as needed, without any prefixed 0);
Animation = [String] # [Int]; NB: The first value, optional, defines a name for the animation config template to use, defaults to the key itself. The second value, optional, specifies how many frames should be created: >0 => maximum frames to be loaded, -1 => as many frames as can fit inside the whole texture, 0 => as many frames as are defined in config, defaults to -1;
Animation = [String] # [String]; NB: In this mode, separate texture files are expected for all the frames. The first value defines the animation base file name, the second one defines the file extension;
Animation-> = {.!+-}Animation1 # {.!+-}Animation2 # ...; NB: Defines all the possible transitions (ie. links) coming from Animation. The optional prefixes are properties for the link: . => immediate, ! => clear target, + => high priority, - => low priority; Defaults to looping onto itself if not defined;
[AnimationTemplate]
; NB: Do not use manual inheritance at the section level as it will be overridden at runtime: its parent will then become the animation set section;
Texture = path/to/ImageFile.ext; NB: cf. GraphicTemplate for more details on this property;
TextureOrigin = [Vector]; NB: Defines the origin of the texture from which to get the frames. Defaults to top left corner, ie. (0, 0, 0);
TextureSize = [Vector]; NB: Defines the size of the texture from which to get the frames. Defaults to the actual physical size of the texture;
Direction = left|right|down|up # left|right|down|up; NB: Defines how the frames are read inside the texture. First value defines the direction of the rows, second one the direction of the columns. Defaults to right # down (ie. western writing direction);
FrameSize = [Vector]; NB: Default size of all the frames of this animation;
KeyDuration = [Float]; NB: Default key duration for all the frames of this animation;
[AnimationTemplate1]
; NB: Do not use manual inheritance at the section level as it will be overridden at runtime: its parent will then become the animation section;
KeyEvent = [String] # [Float]; NB: Optional. Defines a custom event that will be sent when this key is played. The first value is the event's name, the second one, the event's numerical value, which is optional and defaults to 0.0;
TextureOrigin = [Vector]; NB: Optional. Overrides the computed origin of the frame. Only define it for manual override;
TextureSize = [Vector]; NB: Optional. Overrides the default size of the frame (the FrameSize attribute in the animation/Animation Set). Only define it for manual override;
KeyDuration = [Float]; NB: Optional. Overrides the default key duration of the frame;
; NB: Any other Graphic property like Pivot or Flip can be used here;
[ViewportTemplate]
TextureList = Texture1 # ... # TextureN; NB: Textures used as destination when rendering that viewport; If the specified name doesn't refer to an existing texture, a texture of that name will be automatically created, matching the viewport's dimensions; Defaults to screen when not defined.
KeepInCache = [Bool]; NB: If true, the associated textures will always stay in cache. Defaults to false;
Position = [Vector]; NB: Position in pixels, from the top left corner;
RelativePosition = left|right|top|bottom; Example: RelativePosition = top left; Ignored if Position is specified;
Size = [Vector]; NB: Size in pixels;
RelativeSize = [Vector]; Example: RelativeSize = (1.0, 1.0, 0.0); Ignored if Size is specified;
BackgroundColor = [Vector]; NB: If not set, the viewport won't erase any part of other viewports previously rendered this frame if there are overlaps;
BackgroundAlpha = [Float]; NB: If BackgroundColor is set, this value will be used as alpha; Defaults to 1.0;
Camera = CameraTemplate;
FixedRatio = [Float]; NB: Only used when no camera is linked, otherwise the aspect ratio of the camera will act as ratio for the viewport; Defaults to none, ie. no fixed ratio is enforced;
ShaderList = ShaderTemplate1 # ShaderTemplate2 # ...; NB: Shader will be activated immediately. Up to 4 shaders can be defined;
BlendMode = alpha|multiply|add|premul|none; NB: Default value is none, used only when active shaders are attached;
AutoResize = [Bool]; NB: Default value is true if no fixed size is given, false otherwise. It's only applicable to viewports with linked textures. If true, viewport's dimension, position and linked textures will be resized/updated upon video mode changes;
NoDebug = [Bool]; NB: When set, no debug rendering will happen in this viewport; Defaults to false;
[CameraTemplate]
GroupList = Group1 # ... # GroupN; NB: Groups (of objects) will be rendered in the order of declaration. Up to 16 groups can be associated to a camera. Defaults to "default" group;
Zoom = [Float];
Position = [Vector];
Rotation = [Float];
FrustumNear = [Float];
FrustumFar = [Float];
FrustumWidth = [Float];
FrustumHeight = [Float];
ParentCamera = CameraTemplate; NB: This will set this camera as a child of the specified camera;
IgnoreFromParent = none|all|rotation|scale|position|position.rotation|position.scale|position.position; NB: Defines which parts of the parent's transformation will be ignored when transmitted to the camera. Defaults to none;
[ClockTemplate]
Frequency = [Float]; NB: If not defined, 0.0 will be used meaning the clock will run as fast as possible;
ModifierType = multiply|fixed|capped; NB: If none if given, no modifier will be used. If capped is specified, the modifier value will be used as a minimum frequency;
ModifierValue = [Float];
[SoundTemplate]
Sound = path/to/SoundFile.ext; NB: If defined, Music will be ignored. Use it for short sound effects; If it begins with the character '$', it will be used as a locale key instead of as a plain sound. It will then be automatically updated upon a new language selection;
Music = path/to/MusicFile.ext|empty; NB: If Sound is not defined, it'll be used to load a buffered stream of sound in memory. If empty is used, an empty stream will be generated; If it begins with the character '$', it will be used as a locale key instead of as a plain music. It will then be automatically updated upon a new language selection;
Bus = [String]; NB: Defaults to master bus;
Loop = [Bool];
Pitch = [Float]; NB: The default pitch is 1.0, which correspond to the sound recording frequency;
Volume = [Float]; NB: Volume is in [0.0-1.0]. Defaults to 1.0;
Attenuation = [Float]; NB: Attenuation factor defaults to 1.0;
RefDistance = [Float]; NB: Distance within which the sound's maximum volume will be perceived. Defaults to 1.0;
KeepInCache = [Bool]; NB: If true, the sound data (ie. the sample itself) will always stay in cache. This value is ignored for a music. Defaults to false;
[FXTemplate]
SlotList = FXSlotTemplate1 # FXSlotTemplate2 # ...; NB: There is a maximum of 8 slots;
Loop = [Bool];
DoNotCache = [Bool]; NB: If true, the FX won't get cached and will be recreated from config every time, which allows random values & variations but is more expensive. Defaults to false;
KeepInCache = [Bool]; NB: If true , the FX will always stay in cache, even if no FX of this type is currently in use. Can save time but costs memory. Ignored if DoNotCache is set to true. Defaults to false;
[FXSlotTemplate]
Type = alpha|color|rgb|hsl|hsv|scale|rotation|position|speed|volume|pitch;
StartTime = [Float]; NB: Start time in seconds;
EndTime = [Float]; NB: End time in seconds;
Period = [Float]; NB: Cycle period is in seconds. 0.0 means the whole length will be used as a period;
Phase = [Float]; NB: Cycle phase is [0.0-1.0];
Amplification = [Float]; NB: Curve amplification coef over time. < 1.0 => attenuation, = 1.0 => constant, > 1.0 => amplification. Defaults to 1.0;
Acceleration = [Float]; NB: Curve acceleration over time. < 1.0 => deceleration, = 1.0 => constant, > 1.0 => acceleration. Defaults to 1.0;
Curve = linear|triangle|square|sine|smooth|smoother;
Pow = [Float]; NB: 1.0 is the default value and will result in a regular curve;
Absolute = [Bool]; NB: The curve coefficient will be used as an absolute value. Defaults to false (=relative);
UseRotation = [Bool]; NB: Only used for position & speed FX type, ignored otherwise. FX uses object's rotation to compute positions;
UseScale = [Bool]; NB: Only used for position & speed FX type, ignored otherwise. FX uses object's scale to compute positions;
StartValue = [Float]|[Vector]; NB: Vectors are only used for anisotropic scale, position, speed and color;
EndValue = [Float]|[Vector]; NB: Vectors are only used for anisotropic scale, position, speed and color;
[SpawnerTemplate]
Object = ObjectTemplate; NB: This can be a randomized value;
TotalObject = [Int]; NB: 0 or no value means unlimited total objects;
ActiveObject = [Int]; NB: 0 or no value means unlimited active objects;
Position = [Vector];
Rotation = [Float]; NB: Angle in degrees around z axis;
Scale = [Vector]|[Float]; NB: z is ignored for 2D objects;
Interpolate = [Bool]; NB: When interpolate is set to true, sub-frame precision spawning will be emulated if needed. Defaults to false;
AutoReset = [Bool]; NB: If true, spawner will auto reset when emptied;
UseAlpha = [Bool]; NB: Will only work if the spawner is linked to a parent object, from which it'll take the alpha;
UseColor = [Bool]; NB: Will only work if the spawner is linked to a parent object, from which it'll take the color;
UseRotation = [Bool]; NB: If true, spawner's rotation will be transmitted to the spawned object. Defaults to true;
UseScale = [Bool]; NB: If true, spawner's scale will be transmitted to the spawned object. Defaults to true;
WaveSize = Int; NB: Number of object to spawn in every wave. 0 or no value means no automated wave spawning. This can be a randomized value;
WaveDelay = Float; NB: elapsed time between two spawned waves, in seconds. 0 means all the objects spawned at once. This can be a randomized value;
Immediate = [Bool]; NB: If set, the delay will be ignored for the first wave after creation or reset; Defaults to false;
ObjectSpeed = [Vector]; NB: If specified, this speed will be applied to spawned object. This can be a randomized value;
UseRelativeSpeed = [Bool]; NB: If true, the speed will be applied relatively to the current rotation & scale of the spawner. Defaults to false;
UseSelfAsParent = [Bool]; NB: If set to true, the created object's parent will be the spawner, and will be always relative to the spawner's position, scale and rotation. Defaults to false;
CleanOnDelete = [Bool]; NB: If set to true, all the live spawned objects will be deleted when the spawner gets deleted. Defaults to false;
IgnoreFromParent = none|all|rotation|scale|position|position.rotation|position.scale|position.position; NB: Defines which parts of the parent's transformation will be ignored when transmitted to the spawner. Defaults to none;
[ShaderTemplate]
Code = "Your shader code block" ; NB: Used to declare a monolithic shader; Will be ignored if CodeList is defined;
CodeList = CodeKey1 # ... # CodeKeyN ; NB: The values of this list will be used as config keys from this section to reconstruct, in the given order, a multi-part shader; If not defined, Code will be used instead;
ParamList = ParamFloat # ParamTexture # ParamVector # ...; NB: Define all the parameters your shader code needs. Defined params then must have a default value to guess their type. If none is provided, type defaults to texture and will use shader's owner texture as value;
ParamFloat = [Float]|time; NB: If a list is explicitly defined here, orx will create an array of floats of the same size as shader parameter; Use 'time' to get the 'active time' of the owner (will force UseCustomParam to true).
ParamVector = [Vector]; NB: If a list is explicitly defined here, orx will create an array of vectors of the same size as shader parameter;
ParamTexture = path/to/texture; NB: If an invalid path is given, or nothing is specified, the owner's texture will be used by default. If a list is explicitly defined here, orx will create an array of textures of the same size as shader parameter;
UseCustomParam = [Bool]; NB: When set to true, an event will be sent to override params values at runtime as well as the automated "time" value. Defaults to false, ie. no runtime override unless "time" is used for a float param;
KeepInCache = [Bool]; NB: If true, the shader will always stay in cache, even if no shader of this type is currently in use. Can save time but costs memory. Defaults to false;
[TimeLineTrackTemplate]
FloatValue = "Your timeline event text here" | "Your command"; NB: FloatValue is a time in second (>= 0) after which this timeline event is going to be triggered; If the event is a valid command it'll get executed by the command module;
Loop = [Bool];
Immediate = [Bool]; NB: If true, track will be executed immediately after being added to a timeline as opposed to during the next object update. Defaults to false;
KeepInCache = [Bool]; NB: If true, the timeline track will always stay in cache, even if no track of this type is currently in use. Can save time but costs memory. Defaults to false;