====== Mod management functions ======
All these functions are available on your mod object
===== dofile =====
Loads and runs a Lua script
Returns the file's return values
''[...] **myMod:dofile**(//scriptPath// [, //args...//])''
^ Name ^ Type ^ Description ^
| //''scriptPath''// | ''string'' | the relative path to the file, inside the mod directory |
| //''args''// | ''any'' | optional, variables passed on to the target script |
----
===== registerAsset =====
Deprecated name: ''register''
Register a new game asset
''void **myMod:registerAsset**(//assetData//)''
^ Name ^ Type ^ Description ^
| //''assetData''// | ''table'' | the data defining the new asset. The table must contain at least the asset's type (''DataType'', see [[api|API]] for the complete list) and its ID (''Id'') |
==== Example ====
local assetData = {
DataType = "ASSET_TYPE",
Id = "ASSET_ID",
...
}
myMod:registerAsset(assetData)
----
===== overrideAsset =====
Deprecated name: ''override''
Override an existing game asset (see [[:asset-override|Asset Override]] for a complete explanation)
''void **myMod:overrideAsset**(//assetData//)''
^ Name ^ Type ^ Description ^
| //''assetData''// | ''table'' | the data defining the overridden asset. The table must contain at least the existing asset's type (''Id'', see [[assets|Assets]] for the complete list) |
==== Example ====
local assetData = {
Id = "ASSET_ID",
...
}
myMod:overrideAsset(assetData)
----
===== registerBehaviorTree =====
Registers a new behavior tree (see [[:behavior-trees|Behavior Trees]] for a complete explanation)
''void **myMod:registerBehaviorTree**(//behaviorTree//)''
^ Name ^ Type ^ Description ^
| //''behaviorTree''// | ''table'' | the table defining the behavior tree's variables and node tree |
==== Example ====
myMod:registerBehaviorTree({
Id = "MY_CUSTOM_BEHAVIOR_TREE",
VariableList = {
...
},
Root = {
...
}
})
----
===== registerBehaviorTreeNode =====
Registers a new behavior tree node (see [[:behavior-trees|Behavior Trees]] for a complete explanation)
''void **myMod:registerBehaviorTreeNode**(//behaviorTreeNode//)''
^ Name ^ Type ^ Description ^
| //''behaviorTreeNode''// | ''table'' | the table defining the behavior tree node's variables and functions |
==== Example ====
myMod:registerBehaviorTreeNode({
Id = "MY_CUSTOM_BEHAVIOR_TREE_NODE",
VariableList = {
...
},
Init = function(self, instance)
...
end,
Update = function(self, level, instance)
...
return BEHAVIOR_TREE_NODE_RESULT.TRUE
end,
Finish = function(self, instance)
...
end
})
----
===== registerClass =====
Registers a new data type, or a new type extending an existing one
''void **myMod:registerClass**(//classInfo//)''
^ Name ^ Type ^ Description ^
| //''classInfo''// | ''table'' | a table containing all info about the new type |
==== Example ====
Definition of a new component type with two properties, and an init function
local newClassInfo = {
TypeName = "MY_CUSTOM_COMPONENT",
ParentType = "COMPONENT", -- if this field is missing, the new type will be a data type
Properties = {
{ Name = "CurrentRotation", Type = "float", Default = 0.0, Flags = { "SAVE_GAME" } },
{ Name = "CurrentPosition", Type = "vec3f" }
}
}
function newClassInfo:init()
self.CurrentPosition = self:getOwner():getGlobalPosition()
end
myMod:registerClass(newClassInfo)
----
===== registerAssetId =====
Assign an asset ID to an asset in the mod's directory
''void **myMod:registerAssetId**(//assetPath//, //assetId// [, //assetType//])''
^ Name ^ Type ^ Description ^
| //''assetPath''// | ''string'' | the path to the asset |
| //''assetId''// | ''string'' | the ID to assign to the asset |
| //''assetType''// | ''string'' | optional, type of the asset |
----
===== registerPrefabChild =====
Registers a new child for a prefab
''void **myMod:registerPrefabChild**(//parentPrefabIdOrPath//, //id// [, //name//] [, //transform//])''
^ Name ^ Type ^ Description ^
| //''parentPrefabIdOrPath''// | ''string'' | the ID or path to the new child's parent prefab |
| //''id''// | ''string'' | the ID of the newly created prefab |
| //''name''// | ''string'' | optional, the name of the new prefab, ''id'' will be used if no ''name'' is provided |
| //''transform''// | ''matrix'' | optional, the transform matrix of the new prefab |
==== Example ====
local newChildTransform = {
Position = { 0, 0, 1 },
Rotation = { 0, -180, 0 }
}
myMod:registerPrefabChild(prefabPath, "MY_NEW_PREFAB_CHILD_ID", "MyNewChildName", newChildTransform)
----
===== registerPrefabComponent =====
Registers a component to a prefab (see [[:components|Components]] for a complete explanation)
''void **myMod:registerPrefabComponent**(//prefabIdOrPath//, //componentData//)''
^ Name ^ Type ^ Description ^
| //''prefabIdOrPath''// | ''string'' | the ID or path to the prefab |
| //''componentData''// | ''table'' | the data defining the component. The table must contain at least the component's type (''DataType'', see [[api#component_classes|API]] for the complete list) |
==== Example ====
local componentData = {
DataType = "COMPONENT_TYPE",
...
}
myMod:registerPrefabComponent(prefabPath, componentData)
----
===== registerAssetProcessor =====
Registers an asset processor to a file (see [[:building-asset-processor|Building Asset Processor]] for a complete explanation)
''void **myMod:registerAssetProcessor**(//filePath//, //processorData//)''
^ Name ^ Type ^ Description ^
| //''filePath''// | ''string'' | the path to the file |
| //''processorData''// | ''table'' | the data defining the asset processor. The table must contain at least the processor's type (''DataType'', see [[api#asset_processor_classes|API]] for the complete list) |
==== Example ====
local processorData= {
DataType = "PROCESSOR_TYPE",
...
}
myMod:registerPrefabComponent(filePath, processorData)
----
===== registerEnumValue =====
Registers a new dynamic enumeration value
''void **myMod:registerEnumValue**(//enumeration//, //stringValue//)''
^ Name ^ Type ^ Description ^
| //''enumeration''// | ''string'' | the enumeration type |
| //''stringValue''// | ''string'' | the new value to add |
==== Example ====
myMod:registerEnumValue ("BUILDING_PART_TYPE", "DECORATION")
----
===== configurePrefabFlagList =====
Configure a prefab with a list of flags
''void **myMod:configurePrefabFlagList**(//prefabPath//, //flagArray//)''
^ Name ^ Type ^ Description ^
| //''prefabPath''// | ''string'' | the path to the prefab |
| //''flagArray''// | ''table'' | the list of flags to apply on the prefab |
==== Example ====
local flagArray = { "BRIDGE", "PLATFORM" }
myMod:configurePrefabFlagList(prefabPath, flagArray)
----
===== overrideTexture =====
Overrides an existing core texture with another one
''void **myMod:overrideTexture**(//oldTexturePath//, //newModTexturePath//, //blendMode//)''
^ Name ^ Type ^ Description ^
| //''oldTexturePath''// | ''string'' | the path to the old core game texture |
| //''newModTexturePath''// | ''string'' | the path to the new mod texture |
| //''blendMode''// | ''string'' | an option on how the new texture is used. Can be either ''REPLACE'' (to fully replace the old texture with the new one) or ''ALPHA_BLEND'' (to draw the new texture "on top" of the old one) |