Class Reference
The classes/objects of the HALion Script language are structured in the following class hierarchy.
HALion Script Class Hierarchy
Classes deeper down inherit the data fields and methods of classes higher up in the class hierarchy. For example, the classes Bus, Instance, Layer, Effect, and so on, inherit all data fields and methods of the Element class. Subclasses add functionality to their parent class by providing more data fields and methods.
Addressing Objects
The Lua Script MIDI module itself can be addressed with this
. Further objects can be addressed with this.parent
, this.program
or with the get/find functions.
Syntax | Object | Class |
this | Returns the object of the script module itself. | MidiModule |
this.parent | Returns the object of the parent element, which can be a Layer or the Program. | Layer or Program |
this.program | Returns the object of the Program. | Program |
After addressing an object, you can read its fields through dot-notation. In the following example, the name and the type of different objects are printed with .name
and .type
Example 1
-- print the name and type of different objects print(this.name, this.type) print(this.parent.name, this.parent.type) print(this.program.name, this.program.type) print(this.program:getChild().name, this.program:getChild().type)
For more information on the available fields, see the description of the classes in the Class Reference.
Calling Methods
To operate on an element in the Program Tree, you must first adress its object and then call the desired method. The basic syntax is as follows:
object:method()
Example 2
zone = this.parent:getZone() -- get the object of the first Zone after the script module zone:setName("MyZone") -- setName operates on the Zone object
Using type() on Objects
For the HALion Script language the type() function of Lua has been extended to return the type of an object.
Example 3
-- print the name of all zones in the program elements = this.program:findChildren(true) for i, element in ipairs(elements) do if type(element) == "Zone" then print(element.name) end end
3 Comments
Sabine Pfeifer
in der Class Hierarchy, soll da Program wirklich eingerückt sein?
Matthias Klag
Ja, weil Program in der Class Hierarchy unter Layer steht. Der Baum wird übrigens automatisch erzeugt. Stimmt also so
Sabine Pfeifer
proofread done