Jump to content
  • Advertisement
Sign in to follow this  

Array of (object) handles with add_on array

This topic is 1750 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

Are there any existing examples of having an array of object handles (where these are C++ -exposed objects which are reference types in script)?


The array add_on has one example which uses the syntax: array<int>.  array<@> didn't seem to work.


I've seen examples that use a syntax like: MyObjectType@[].


But that didn't seem to work for me either. There must be existing examples out there.... ?


Thank you very much.

Share this post

Link to post
Share on other sites

The syntax for arrays of object handles is like this:


array<Object@> arrayOfHandles;


Alternatively if you've registered the array add-on as the default array type, i.e. with RegisterScriptArray(engine, true), you can use the following syntax:


Object@[] arrayOfHandles;


I've taken a note to add an explanation for this in the manual, thanks.

Share this post

Link to post
Share on other sites

No, that is not what I'm saying. There is no built-in array type.



You must register the array type, either with RegisterScriptArray() or by using your own implementation.


What I'm saying is that the second argument for RegisterScriptArray() tells the compiler if it should allow the syntax 'type[]' to declare the array types or just 'array<type>'.



Observe, the syntax 'type[]' for dynamic arrays will likely be deprecated sometime in the future (as I'll need it for static arrays).

Share this post

Link to post
Share on other sites

EDIT: Ahh, sorry. I just saw that you fixed exactly that issue lately.

(Related thread: http://www.gamedev.net/topic/650055-problem-with-array-of-handles/ )

That's what I get for not using the very latest revision. Cheers. smile.png





I'm currently using AngelScript for a little game project and recently noticed a shortcoming in the ScriptArray Addon related to this topic:

I'm using an array of handles defined like so:
array<GameObject@> currentGroup;

Unfortunately, the 'find' method does not work on the array,

unless an equal-comparison operator is defined for the GameObject type.

int pos = currentGroup.find(@character);

I don't define any such operator, because I want to compare the object handles only by their address.

The expression (@character1 == @character2) works perfectly well, only the array-type does not support it.


It seems to me that the CScriptArray::Precache method must be changed to make that possible.

It's probably a small fix. But unfortunately, I don't know enough about AngelScripts internals to do it myself.


Any chance to see this fixed in the next revision?


Thank you. smile.png

Edited by TcShadowWalker

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!