Eden Editor: Configuring Attributes: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 21: Line 21:
class MyAttribute
class MyAttribute
{
{
property = "MyAttribute"; // Unique config property name saved in SQM
property = "MyAttributeUniqueID"; // Unique config property name saved in SQM
control = "Edit"; // UI control base class displayed in Edit Attributes window, points to Cfg3DEN >> Attributes
control = "Edit"; // UI control base class displayed in Edit Attributes window, points to Cfg3DEN >> Attributes
unique = 0; // When 1, only one entity of the type can have the value in the mission (used for example for variable names or player control)
unique = 0; // When 1, only one entity of the type can have the value in the mission (used for example for variable names or player control)
Line 57: Line 57:
class MyEntityAttribute
class MyEntityAttribute
{
{
// ... attribute properties, see above...
// ... attribute properties, see entity attributes
};
};
};
};
Line 63: Line 63:
};
};
</syntaxhighlight>
</syntaxhighlight>
=== Scenario Specific ===
<syntaxhighlight lang="cpp">class Cfg3DEN
{
class Mission
{
class MySection
{
displayName = "My Attributes"; // Text visible in the window title as "Edit <displayName>"
display = "Display3DENEditAttributesPreview"; // Optional - display for attributes window. Must have the same structure and IDCs as the default Display3DENEditAttributes
class AttributeCategories
{
// The following structure is the same as the one used for entity attributes
class MyMissionCategory
{
class Attributes
{
class MyMissionAttribute
{
property = "MyMissionAttributeUniqueID";
};
};
};
};
};
};
};
</syntaxhighlight>
[[edit3DENMissionAttributes]] "MySection";
[[getMissionConfigValue]] "MyMissionAttributeUniqueID"
[[set3DENMissionAttributes]] <nowiki>[</nowiki>["MySection","MyMissionAttributeUniqueID",42]]
_myAttributes = "MySection" [[get3DENMissionAttribute]] "MyMissionAttributeUniqueID";
==== Preferences ====
There is a special section called '''Preferences'''. Anny attribute configured in it will be saved in player's profile instead of inside mission file. This is used for global editor preferences, like camera speed or autosave settings.


== Presets ==
== Presets ==

Revision as of 11:48, 12 November 2015

Work In progress

Config

Global

class Cfg3DEN
{
	// Configuration of all objects
	class Object
	{
		// Categories collapsible in "Edit Attributes" window
		class AttributeCategories
		{
			// Category class, can be anything
			class MyCategory
			{
				displayName = "Object Init"; // Category name visible in Edit Attributes window
				collapsed = 1; // When 1, the category is collapsed by default
				class Attributes
				{
					// Attribute class, can be anything
					class MyAttribute
					{
						property = "MyAttributeUniqueID"; // Unique config property name saved in SQM
						control = "Edit"; // UI control base class displayed in Edit Attributes window, points to Cfg3DEN >> Attributes
						unique = 0; // When 1, only one entity of the type can have the value in the mission (used for example for variable names or player control)
						validate = "code"; // Validate the value before saving. Can be "none", "expression", "condition", "number" or "variable"
						condition = "object"; // Condition for attribute to appear (see the table below)
						// Expression called when applying the attribute in Eden and at the scenario start
						// Entity is passed as _this, value is passed as _value, property name is passed as _property
						// %s is replaced by attribute config name. It can be used only once in the expression
						expression = "_this setVariable [%s,_value];";
						// Expression called when custom property is undefined yet (i.e., when setting the attribute for the first time)
						// Entity is passed as _this
						// Returned value is the default value
						// Used when no value is returned, or when it's of other type than NUMBER, STRING or ARRAY
						// Custom attributes of logic entities (e.g., modules) are saved always, even when they have default value
						defaultValue = "42";
					};
				};
			};
		};
	};
};

Entity Specific

  • CfgVehicles
  • CfgNonAIVehicles
  • CfgWaypoints
  • CfgMarkers
class CfgVehicles
{
	class B_Soldier_F;
	class MyEntity: Soldier_F // Your entity class
	{
		class Attributes // Entity attributes have no categories, they are all defined directly in class Attributes
		{
			class MyEntityAttribute
			{
				// ... attribute properties, see entity attributes
			};
		};
	};
};

Scenario Specific

class Cfg3DEN
{
	class Mission
	{
		class MySection
		{
			displayName = "My Attributes"; // Text visible in the window title as "Edit <displayName>"
			display = "Display3DENEditAttributesPreview"; // Optional - display for attributes window. Must have the same structure and IDCs as the default Display3DENEditAttributes
			class AttributeCategories
			{
				// The following structure is the same as the one used for entity attributes
				class MyMissionCategory
				{
					class Attributes
					{
						class MyMissionAttribute
						{
							property = "MyMissionAttributeUniqueID";
						};
					};
				};
			};
		};
	};
};
edit3DENMissionAttributes "MySection";
getMissionConfigValue "MyMissionAttributeUniqueID"
set3DENMissionAttributes [["MySection","MyMissionAttributeUniqueID",42]]
_myAttributes = "MySection" get3DENMissionAttribute "MyMissionAttributeUniqueID";

Preferences

There is a special section called Preferences. Anny attribute configured in it will be saved in player's profile instead of inside mission file. This is used for global editor preferences, like camera speed or autosave settings.

Presets

  • CfgVehicles
  • CfgNonAIVehicles
  • CfgWaypoints
  • CfgMarkers
class CfgNonAIVehicles
{
	class MyTrigger
	{
		class AttributeValues
		{
			sizeA = 0; // Property name match the attribute name
			sizeB = 0;
		};
	};
};

Conditions

Conditions are written as simple expressions. Example:

objectBrain * (1 - objectDestructable)

Object must be indestructible AI character (theoretical example, no such object exists in unmodded game).

Supported conditions:

Condition For Type Description
objectBrain Object Object with simulation "soldier" or "UAVpilot"
objectControllable Object Object with simulation "soldier"
objectAgent Object Object with non-empty agentTasks[], i.e., animals
objectVehicle Object Vehicle which can be boarded
objectSimulated Object Object which is simulated (e.g., falls down when in the air)
objectDestructable Object Indestructible object, i.e., when destrType config property set not DestructNo
logicModule Logic Logic which is a module (vehicleClass config property is "Modules")

User Interface Controls

Data Validation

Scripting Commands

Event Handlers