Sign in to follow this  
Followers 0
shabtronic

noob help with global class functions

4 posts in this topic

Hi All

 

I've just discovered angelscript and totally love it - having used lua,squirrel e.t.c. it's just awesome - everything I've need in a script lang - typed fast and easy to convert to native code.

 

I've currently got a problem with my vec3 class - I'm using global functions instead of member functions so I can directly match GLSL - this is so I can easily convert code from native c++ to GLSL and to script if needed.

 

I'm trying to register a global func:

 

 

r = gScriptEngine->RegisterGlobalFunction("vec3 normalize( vec3 &v1)", asFUNCTION(normalize), asCALL_CDECL);
 
 
but I get error -10 and
"Failed in call to function 'RegisterGlobalFunction' with 'vec3 normalize( vec3 &v1)' (Code: -10)"
 
and I just can't figure out the issue, apologies in advance if it's silly problem - I've looked at all the various vector3 classes out there and search the net for answers - but no joy yet :(
 
thanks
 
Shabby
0

Share this post


Link to post
Share on other sites

Heh - in answer to my own question - and a few posts down

 

gScriptEngine->SetEngineProperty(asEP_ALLOW_UNSAFE_REFERENCES, true);

 

allows the ref to work - sweet!

0

Share this post


Link to post
Share on other sites

That will work. 

 

But even without it, you can get references to work by using the directional attribute 'in', i.e.

 

r = gScriptEngine->RegisterGlobalFunction("vec3 normalize( const vec3 &in v1)", asFUNCTION(normalize), asCALL_CDECL);

 

To the bound C++ function it doesn't make a difference, but to AngelScript the compiler will know that the reference is only used as an input value, and can thus allow the reference without sacrificing the guarantee that the reference can't be invalidated by some improperly written code.

 

Regards,

Andreas

0

Share this post


Link to post
Share on other sites

Hey Andreas 

 

Yeah I thought there would be some sort of declaration I was missing, I just couldn't find it in the doc.

 

Just got my vec2,vec3 and vec4 classes 100% matched to GLSL and my own native classes - let the uber quick prototyping begin :)

 

Just wanted to say - thanks for all your awesome work on Angelscript - it's like a dream come true - soo soo soo easy to bind to native c++

it's the script system I've been after for ages - but only just found it now :)

 

 

Shabby

0

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  
Followers 0