On Wednesday, 9 May 2018 at 10:16:22 UTC, Melvin wrote:
class SomeNode : GodotScript!Node
{
    @Signal void testSignal(float a, long b);
// The declaration above would trigger the generation of this line void testSignal(float a, long b) { owner.emitSignal("testSignal", a, b); }

    @Method emitTest()
    {
        testSignal(3.1415, 42);
    }
}


The reason I want to use a UDA is to stay consistent with the other UDAs already defined for Properties and Methods. It also looks friendlier than using a mixin. Does anyone here have any thoughts as to how this could work?

My main issue is injecting that generated method without resorting to using a mixin. I was hoping that any code I needed could be generated in the template that SomeNode inherits, but that doesn't look possible because I can't inspect the subclass (for good reason).

I'm afraid a mixin is the only real solution. You could also mark testSignal as abstract, and have a template generate an implementation class, but that would pollute every place where you want to use a SomeNode, with something like SomeNode n = implement!SomeNode();

--
  Simen

Reply via email to