Jump to content

  • Log In with Google      Sign In   
  • Create Account

- - - - -

Array of (object) handles with add_on array


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 iraxef   Members   -  Reputation: 345

Like
0Likes
Like

Posted 18 December 2013 - 02:36 PM

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.



Sponsor:

#2 Andreas Jonsson   Moderators   -  Reputation: 3335

Like
0Likes
Like

Posted 18 December 2013 - 03:12 PM

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

#3 iraxef   Members   -  Reputation: 345

Like
0Likes
Like

Posted 18 December 2013 - 08:49 PM

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



#4 Andreas Jonsson   Moderators   -  Reputation: 3335

Like
0Likes
Like

Posted 19 December 2013 - 07:07 AM

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

#5 TcShadowWalker   Members   -  Reputation: 135

Like
0Likes
Like

Posted 06 January 2014 - 09:04 PM

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


Edited by TcShadowWalker, 06 January 2014 - 09:09 PM.





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