Array of (object) handles with add_on array

Started by
3 comments, last by TcShadowWalker 10 years, 3 months ago

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.

Advertisement

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.

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

Are you saying that if I don't register the add-on array (RegisterScriptArray), there'll be some kind of default syntax?

This page seems to say that I have to register something: http://www.angelcode.com/angelscript/sdk/docs/manual/doc_datatypes_arrays.html

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).

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

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

---

Hey,

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

This topic is closed to new replies.

Advertisement