Adding First Class

Let's go ahead and make a class in Haxe to compile into GDScript!

// MyClass.hx
package;

class MyClass {
	public function new(myNumber: Int) {
		trace('Received number: $myNumber');
	}
}
# Compile.hxml
-p src
-lib gdscript
-D gdscript-output=out

WAIT! There's no main function? Godot doesn't use a main, it just takes GDScript files created by the user. But because of Haxe's DCE, our MyClass class won't be compiled.

Choosing What to Compile

Since GDScript does not rely on a main function, you need to tell Haxe what files it needs to compile for your project. This can be done by listing modules in your .hxml file.

// MyClass.hx
package;

class MyClass {
	public function new(myNumber: Int) {
		trace('Received number: $myNumber');
	}
}
# Compile.hxml
-p src
-lib gdscript
-D gdscript-output=out

MyClass

Just Compile Everything!

This could get annoying when adding new files, so instead you can also place all of your "to-be-compiled" classes in a package and write that.

// game/MyClass.hx
package game;

class MyClass {
	public function new(myNumber: Int) {
		trace('Received number: $myNumber');
	}
}
# Compile.hxml
-p src
-lib gdscript
-D gdscript-output=out

game # Every class in `game` will now be compiled

Output

Aaaand now you should receive some output like this:

class_name MyClass;

func _init(myNumber: int):
	print("game/MyClass.hx:6: Received number: " + myNumber);