Resource Manager: Config Editor – Arma Reforger
Lou Montana (talk | contribs) m (Some wiki formatting) |
Lou Montana (talk | contribs) m (Fixes) |
||
Line 349: | Line 349: | ||
* Array: "MaxSize=10" to limit the amount of possible elements | * Array: "MaxSize=10" to limit the amount of possible elements | ||
* Number: "minValue maxValue step" (e.g {{hl|"0 100 5"}} for a 0..100 range with steps of 5) | * Number: "minValue maxValue step" (e.g {{hl|"0 100 5"}} for a 0..100 range with steps of 5) | ||
* Curve: "rangeX | * Curve: "rangeX rangeY offsetX offsetY" (e.g "50.0 80.0 10.0 20.0" for curve axes to go X:10..60 (10 + 50) and Y:20..100 (20 + 80)) | ||
* Vector: "minValue maxValue step purpose=purposeType space=spaceType anglesVar=anglesVariableName coordsVar=coordsVariableName" (e.g {{hl|"0 100 5"}} for a 0..100 range with steps of 5) for each vector value.<br><!-- | * Vector: "minValue maxValue step purpose=purposeType space=spaceType anglesVar=anglesVariableName coordsVar=coordsVariableName" (e.g {{hl|"0 100 5"}} for a 0..100 range with steps of 5) for each vector value.<br><!-- | ||
-->{{hl|purpose}} and {{hl|space}} are optional; using them makes {{hl|step}} optional and allows to set the vector value in World Editor using the transformation gizmo. | -->{{hl|purpose}} and {{hl|space}} are optional; using them makes {{hl|step}} optional and allows to set the vector value in World Editor using the transformation gizmo. | ||
Line 366: | Line 366: | ||
** {{hl|extension1 extension2}} file extensions, e.g {{hl|"dds edds imageset png"}} for an Image Resource Picker | ** {{hl|extension1 extension2}} file extensions, e.g {{hl|"dds edds imageset png"}} for an Image Resource Picker | ||
** {{hl|class}} is the Entity or config class type from which the selection must inherit, e.g {{hl|"et class{{=}}AIWaypoint"}} for {{hl|AIWaypoint}} entities | ** {{hl|class}} is the Entity or config class type from which the selection must inherit, e.g {{hl|"et class{{=}}AIWaypoint"}} for {{hl|AIWaypoint}} entities | ||
** {{hl|inheritedClasses}} set to false to only have a selection from the exact class defined with {{hl|class}}, e.g {{hl|1= "conf class=TAG_MyClass | ** {{hl|inheritedClasses}} set to false to only have a selection from the exact class defined with {{hl|class}}, e.g {{hl|1= "conf class=TAG_MyClass inheritedClasses=false"}} for {{hl|.conf}} files of {{hl|TAG_MyClass}} class and only this class | ||
{{Feature|informative| | {{Feature|informative| |
Revision as of 13:46, 30 August 2023
Main Interface
Search Field
Search through value names (not values themselves).
Class
Remind the used Config class.
Parent
A button leading to the parent Config file, in the case of an inherited Config file.
Values
Below these fields are the values name/UI lines. An entry that is not the default value will be bolded.
An entry can be reset to its default value using the arrow that appears then to the right of the field.
Value Interface
The value interface is composed of two columns; on the left, the value name (extracted from the property's name) and on the right, the UI to edit it - either deduced by the property's type or forced by the Config designer (see Attribute).
See uiwidget for all possible interfaces and how to interact with them.
Array Interface
a +/- interface displaying the amount of elements between parentheses.
Press + to add an element, - to remove the highlighted one.
To edit the array in a more advanced way, right-click on an item's name to use contextual menu's additional options:
Config Base Container Class
A Base Container is a class that serves as a blueprint for the Config Editor.
BaseContainerProps
The usage of a BaseContainerProps class decoration is required for the class to be visible and editable in the Config Editor - see Examples below.
The minimum required attribute usage is
for the base object Config to be visible in the Config creation process.
A class inheriting a decorated one must be decorated as well in order to be usable.
It accepts the following parameters:
A class name display is defined as follow:
- if the class uses a name instead of a GUID (see NC_MUST_HAVE_NAME), the name is displayed - otherwise, the classname is
- the class can use an custom name with the usage of an additional decorator such as BaseContainerCustomTitle or one of its children
category
Type: string
Default: ""
The class' category - only useful in World Editor plugins definition.
description
Type: string
Default: ""
The class' description - only useful in World Editor plugins definition.
color
Type: string
Default: "255 0 0 255"
The class' colour in RGBA format (Red Green Blue Alpha) in a 0..255 range - only useful in World Editor plugins definition.
visible
Type: bool
Default: true
The class' visibility - only useful in World Editor plugins definition.
insertable
Type: bool
Default: true
configRoot
Type: bool
Default: false
Define if the class is selectable when creating a new Config.
icon
Type: string
Default: ""
The class' icon - only useful in World Editor plugins definition.
namingConvention
Type: enum
Default: NamingConvention.NC_MUST_HAVE_GUID
See the NamingConvention enum class.
NC_CAN_HAVE_NAME
Internal use.
NC_MUST_HAVE_NAME
Force providing a name on object creation (whether a class or an array of them) instead of having an automatically generated GUID. The displayed object name is then the entered name.
NC_MUST_HAVE_GUID
The default value: the Workbench generates a GUID for this config entry. The displayed object name is then the classname.
Attribute
The usage of an Attribute member variable decoration is required for the value to be visible and editable in the Config Editor - see Examples below.
The minimum required Attribute usage is [Attribute()].
A variable's display name is deduced as follows:
m_iMyVariable is split by removing m_ (conventional name prefix for a member variable), i (optional, additional prefix for variable type) and splitting the remaining part using the capital letters: here My Variable.
It accepts the following parameters:
defvalue
Type: string
Default: ""
The default value. It is always a string, even in the case of a boolean ("0", "1", not "false"/"true") or a number ("5678", "12.34").
uiwidget
Type: string
Default: "auto"
The Widget type to be used. It can be forced to whatever wanted. Note that not all widgets fit all variable types. See the UIWidgets class.
Auto
Data Type | UI Widget |
---|---|
bool | Checkbox |
int | SpinBox |
float | EditBox (numerical version) |
string | EditBox (text version) |
vector | Coords |
array | Array Widget and item type Widget |
Color | ColorPicker |
Hidden
Does not display the field.
None
Identical to Hidden.
ColorPicker
a colour modification UI. Clicking the colour rectangle will display the colour picker, allowing to set values in many ways:
ResourceNamePicker
Allows referring to a resource of any kind.
ResourcePickerThumbnail
Allows previewing images and textures - to be combined with edds and/or imageset params Attribute parameter.
FileNamePicker
Internal use.
ResourceAssignArray
Internal use.
Date
Range 01/01/2000 00:00 → 31/12/2063 23:59 UTC Time (e.g 01/01/2000 01:00 in Western Europe)
Data types:
- int
Graph
Internal use.
Font
Internal use.
FileEditBox
Internal use.
SpinBox
a numerical, editable up-down field.
Data types:
- int
- float
ComboBox
A combo box that opens and allows to pick one value among a selection.
Data type:
- int
- float
- string
EditComboBox
Data type:
- int
- float
- string
SearchComboBox
Data type:
- int
- float
- string
LocaleEditBox
Internal use.
EditBox
Data type:
- int
- float
- string
CheckBox
Checked for true, unchecked for false.
Data types:
- bool
Slider
A click and drag allows to set the value on the slider; a click on the slider itself allows to type in the wanted value.
Data types:
- int
- float
Flags
Offers checkboxes for each enums provided. Power of two values are recommended, e.g:
Data types:
- int
Button
Internal use.
Script
Internal use.
EditBoxWithButton
Internal use.
LODFactorsEdit
Internal use.
Object
Clicking the "set class" button creates an instance allowing to set its values (if any).
Data types:
- object (all classes)
Coords
Clicking an axis letter and dragging left or right changes the value.
Data type:
- vector
Range
Internal only.
Callback
Data type:
- Event
TopLevelObject
Internal use.
GraphDialog
a graph modification UI. Double-clicking on the graph creates a new point, click/dragging on a point moves it (no further than its surrounding ones on the X-axis), clicking on a point focuses it, and pressing removes that point.
Data types:
- Curve
BoundingVolume
Internal use.
Editor
Internal use.
desc
Type: string
Default: ""
The variable description; this provides a tooltip when hovering the variable name and does not replace it.
params
Type: string
Default: ""
Used to define UI-specific settings, e.g a numerical range.
- Array: "MaxSize=10" to limit the amount of possible elements
- Number: "minValue maxValue step" (e.g "0 100 5" for a 0..100 range with steps of 5)
- Curve: "rangeX rangeY offsetX offsetY" (e.g "50.0 80.0 10.0 20.0" for curve axes to go X:10..60 (10 + 50) and Y:20..100 (20 + 80))
- Vector: "minValue maxValue step purpose=purposeType space=spaceType anglesVar=anglesVariableName coordsVar=coordsVariableName" (e.g "0 100 5" for a 0..100 range with steps of 5) for each vector value.
purpose and space are optional; using them makes step optional and allows to set the vector value in World Editor using the transformation gizmo.- purpose possible values:
- coords - the vector property represents coordinates
- angles - the vector property represents rotations
- space possible values:
- entity - the vector represents a value in the entity's local space (relative coordinates)
- world - the vector is an absolute world position
- custom - any custom space defined by the entity
- anglesVar/coordsVar is the direct variable name, e.g m_vAngles/m_vRelativePos
- examples:
- inf inf purpose=coords space=entity
- -90 +90 5 purpose=angles space=world
- purpose possible values:
- ResourcePicker: "extension1 extension2 class=classname inheritedClasses=false"
- extension1 extension2 file extensions, e.g "dds edds imageset png" for an Image Resource Picker
- class is the Entity or config class type from which the selection must inherit, e.g "et class=AIWaypoint" for AIWaypoint entities
- inheritedClasses set to false to only have a selection from the exact class defined with class, e.g "conf class=TAG_MyClass inheritedClasses=false" for .conf files of TAG_MyClass class and only this class
enums
Type: ParamsEnumArray
Default: null
An array of ParamEnum. Used to define ComboBox's items. It can be defined as follows:
The description is optional and is to fill a combobox's entry tooltip. As many as needed ParamEnum entries can exist.
category
Type: string
Default: ""
The variable's category - only useful in World Editor plugins to categorise properties.
precision
Type: int
Default: 3
The wanted floating point precision. Restricts a floating point field to a certain amount of decimals.
Config File
In the Resource Browser, browse to the directory in which to create the config file; then click on the Create button and select the Config File option:
Enter the new file's name in the appearing dialog:
Look for the BaseContainer class in the next one:
After clicking the classname once, the file is created from this model in the selected directory.
Double-click on it to open it and edit it.
Config Prefab from Config
Creating a Prefab Config from a config object is doable by drag and dropping the object into the Resource Browser window.
This will display the dialog to name the new file; once filled the file is created in the selected directory.
Inherited Config File
An inherited config file is a config that will use another config file as its default values model, and obviously uses the same config class.
In order to create one, right-click on the config file wanted as model in Resource Browser, then click "Create Inherited File" - a dialog will ask to type the inherited config file name.
The created file will now have the (default) values of the model.
Filling by Config
If a Config already exists and is compatible with the target entry, dragging and dropping the config on the field/entry will fill it with Config's values. This is shown with the blue circle as well as the .conf button present in the value name, as shown below:
Editing from the current Config will only change and override the sub-Config values in the current Config.
To edit the sub-Config values directly, press the .conf button to open said Config.
Changes made in one tab are immediately broadcast to other tabs if such sub-Config is used.
Examples
The following ConfigExample.conf is created from the below SCR_ConfigExample class: