用于多个DCC的交叉编译插件

时间:2017-02-22 00:55:03

标签: c++ maya haxe

几年来一直在使用Haxe,我觉得这可能是编译器可能滥用的东西:

是否可以添加目标,以便在编译Haxe类时,它可以内省编译的代码并在C ++中生成样板文件?一个例子:

在Autodesk Maya中创建插件节点时,必须在子类中覆盖许多特殊函数。必须首先在头中声明节点上的属性,然后在cpp文件中静态声明,最后在其中一个函数覆盖中以特定方式(带错误检查)添加。除此之外,您必须编写从系统注册和取消注册插件的函数。这种模式非常简单,简单的搜索/替换不够好;你必须在不同的地方替换不同模式的文本,并根据属性的类型和属性的设置添加函数调用。

在Foundry的Modo中具有相同行为的节点非常不同 - 您必须定义三个类并组成功能。

在这两种情况下,从节点内部访问数据的方式也不同,因此如果要为两个程序包装单个C ++函数,那么在函数外部执行大量工作只是为了准备数据以不可知的方式。

我希望能够使用Haxe代码编写单个节点并从Haxe类生成C ++代码。对于Maya,它将从MPxNode子类化并提供适当的函数覆盖。在Modo的情况下,它将正确生成所需的类。在将来,如果我想要定位Cinema 4D,我会添加一个额外的目标并针对该SDK进行编译,以创建相同功能的版本(可能是标签)。

我实际上已经在Python中完成了这一步(生成带有节点功能存根的C ++代码),虽然它有效,但我一直很好奇是否有更好的方法可以直接通过Haxe来实现。但同样,编译器必须知道Haxe类的结构及其中的数据,以便为每个目标生成适当的代码。

提前致谢!

0 个答案:

没有答案