Sign in to follow this  
Edgyr45

RegisterStaticMethod

Recommended Posts

Edgyr45    127

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
WitchLord    4677

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

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