Advertisement

noob help with global class functions

Started by May 04, 2013 05:38 PM
3 comments, last by WitchLord 11 years, 6 months ago

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

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!

Advertisement

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

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

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

I'm glad you like it :D

AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

This topic is closed to new replies.

Advertisement