Sign in to follow this  

RegisterStaticMethod

This topic is 1758 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

For the creation of instances, I would like it to look like this :

//in angelscript:
void Function()
{
    Sprite @mMySprite = Sprite.Create();
}

 

I would like to stay away from global functions. If I have n object types to create, I would have to have n x global creates to do. And in our case, n might be big (in fact, we cannot know in advance since we parse and generate code from the production's project)

 

What I was searching for was a way to create a global function, which is a templated function, but mask it under an object type in AngelScript, for exemple : 

engine->RegisterGlobalFunction("Sprite@ Sprite.Create()", asFUNCTION(SomeClass, Factory<Sprite>), asCALL_CDECL);

Or in english : I know this is a global function but make the user belive it's a static so I can show it in the script IDE's intellisense and in scripts

 

Thanks!

Share this post


Link to post
Share on other sites

The script language currently doesn't have support for static class methods. It's on my to-do list, but currently have no estimate as to when I'll be able to implement it.

 

In the meantime global functions is the way to do it. If you have lot's of similar static methods you can possibly use namespaces to emulate the static method. But I'd recommend going with a simple prefix or suffix in the function name. For example:

 

engine->RegisterGlobalFunction("Sprite@ CreateSprite()", asFUNCTION(SomeClass, Factory<Sprite>), asCALL_CDECL);
// or
engine->RegisterGlobalFunction("Sprite@ Sprite_Create()", asFUNCTION(SomeClass, Factory<Sprite>), asCALL_CDECL);

Share this post


Link to post
Share on other sites

This topic is 1758 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this