Jump to content

  • Log In with Google      Sign In   
  • Create Account


- - - - -

noob help with global class functions


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 shabtronic   Members   -  Reputation: 104

Like
0Likes
Like

Posted 04 May 2013 - 11:38 AM

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


Sponsor:

#2 shabtronic   Members   -  Reputation: 104

Like
0Likes
Like

Posted 04 May 2013 - 11:57 AM

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!



#3 Andreas Jonsson   Moderators   -  Reputation: 3199

Like
0Likes
Like

Posted 04 May 2013 - 01:33 PM

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

#4 shabtronic   Members   -  Reputation: 104

Like
0Likes
Like

Posted 04 May 2013 - 01:40 PM

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



#5 Andreas Jonsson   Moderators   -  Reputation: 3199

Like
0Likes
Like

Posted 04 May 2013 - 02:28 PM

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




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS