The error message
"No Overload method for 'ISceneNode' takes 0 arguments." is because Irrlicht.Net hasn't got a constuctor for ISceneNode which takes zero arguments. So with Irrlicht.Net you
can't say:
Code: Select all
ISceneNode node = new ISceneNode();
And because you implicitely say
Code: Select all
public ExtendedSceneNode(ISceneManager smgr,ISceneNode parent,int id) : base()
you get this error.
The only constructor available for a ISceneNode in Irrlicht.Net is the one I already use (with the realSceneNode), like in this:
Code: Select all
ISceneNode alreadyInstancedNode = device.SceneManager.AddEmptySceneNode(null,-1);
irr.scene.ISceneNode* realSceneNode = alreadyInstancedNode.NativeSceneNode;
ISceneNode node = new ISceneNode(realSceneNode);
I don't know if this is the only way to get a pointer to the realSceneNode, because this isn't a very nice way to get one. But also a pointer to the Irrlicht C++ version of a ISceneNode isn't the nicest way to create a new Irrlicht.Net ISceneNode I think.
I wonder why it's done this way, and why not the constructors from the C++ Irrlicht version of ISceneNode are ported?!
Now you have to give it a unsafe
irr.scene.ISceneNode* C++ argument, which I think is pretty bizar.
But at the moment I haven't looked well enough at the problems which can (and probably will) arise when changing the constructors of the ISceneNode in Irrlicht.Net to the ones used at the standard Irrlicht version, but I think this is a lot nicer.