You can define new types with the
mod:registerClass function. This function allows you to create new data types, or extend existing core classes.
When you define a new type, you can assign it functions and properties. Properties are editable, usable in your type's behavior, and that can be saved in a savegame. Those properties must have a name and a type. They can also have a default value, flags, and access functions (getter and setter).
You can find more information on on the
registerClass function on the mod management functions page.
Some core types are flagged as Extendable in the documentation. This means an extendable type can be used as parent type when creating a custom type. In addition to new functions, you can override some base functions existing in the parent type, flagged as Virtual function. When extend a virtual function, define a new function for your custom type with the same type and parameters. You can call the parent function using the keyword
function myCustomTypeInfo:someVirtualFunction(param1, param2) self.super:someVirtualFunction(param1, param2) ... -- custom additional behavior end
For custom types extending
COMPONENT, you can override some base functions that are automatically called for all components:
create(): when the component is created
init(): when the component is initialized in the game
update(): at each frame
onEnabled(): when the component is enabled
onDisabled(): when the component is disabled
onFinalize(_isClearingLevel): when the component is destroyed, only if it has been initialized
onDestroy(_isClearingLevel): when the component is destroyed, after
You can see an example of component definition in the mod Example 02 in