My niagara module inputs do not show up when I add it to an emitter

I must be making a very basic mistake. I’ve created a new Niagara module and given it a few input parameters. I can now add the module to my emitter (or to my system, after setting the correct module usage bitmask - I think: Module bit and all bits for what I want to use this as).

But when I select my module in the emitter the “Details” pane just shows my module name. It does not show any of my parameters…

Am I doing something wrong in my module? Or is there some hidden setting in the details panel or somewhere that I need to enable?

You’re talking about your user parameters, right? Your user params shouldn’t be in the details panel. They are in their own window tab. If you don’t see it anywhere (iirc the default is bottom left), then you can turn it on using the window tab at the top.

If you mean you’re having trouble with adding them to certain functions on the emitter itself, you should be able to just click the carrot on the right of any of them and type in the name of your parameter you’re looking for.

I have solved my problem. I think my original problem was due to me not understanding how the Niagara scripting language works. I think it is an interesting hybrid between a “normal” control flow language and a data flow language, but all the data flow bits that aren’t used simply “disappear”. And the parameters that I had added to the module weren’t actually used (see below), therefore apparently the system decided to just remove them.

I originally had a method on my data interface that I called that had only a side effect (initialising my data interface) but it didn’t return anything. Apparently that made the data interface module input parameter disappear too.

I fixed it by having an output parameter on the DI initialise method (success boolean). Once I returned that from my module as an output the DI input paremeter immediately showed up too.

But: my C++ initialise method still wasn’t called. But as soon as I actually used the output parameter of my module (by assigning it to an emitter variable) everything suddenly started working.