Jump to content

  • Log In with Google      Sign In   
  • Create Account

- - - - -

Variant function parameters


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 thd.MM   Members   -  Reputation: 208

Like
0Likes
Like

Posted 04 October 2012 - 01:52 PM

Hey all,
In Unity 3D you can call any function from another object with a function like:
gameObject.SendMessage ("ApplyDamage", 5.0);

This would be very useful for me, however I don't know how to make variant parameters. Cause in Unity you can specify whatever you want in the parameters like:
gameObject.SendMessage ("ApplyDamage", 5.0, 12, "hit!", object );

Any way to do this in angelscript? Or maybe fake it?

Another question, how long until we have shared module variables? So we could do it like with functions say:
import int timer from "mymodule"

Cheers

Sponsor:

#2 saejox   Members   -  Reputation: 714

Like
0Likes
Like

Posted 04 October 2012 - 04:31 PM

unity uses javascript.
javascript is a dynamic language. maybe the most!

Function prototype should be know during compile time for static typed languages.

what you want is not possible. i bet it will never will possible.

you can do something like this
void SendMessage(array<any> parameters)
yes looks silly but accepts unlimited parameters :D

#3 Andreas Jonsson   Moderators   -  Reputation: 3454

Like
0Likes
Like

Posted 04 October 2012 - 05:14 PM

It would be possible to register multiple versions of the SendMessage method that take different numbers of the variable argument type. In a future version of AngelScript I would also like to add support for ..., i.e. variable number of arguments in registered functions, but I'm not sure when I'll get to that.

Currently however, I prefer having a single version of the method that takes a variable handle (CScriptHandle add-on). The handle can then refer to an object holding all the information needed for the message.

If you're interested you can have a look can have a look at my prototype game engine to see how I implemented the SendMessage routine.





I currently don't have any firm plans as to when shared global variables in the modules will be implemented. It will probably not be ready this year though.

Edited by Andreas Jonsson, 04 October 2012 - 05:18 PM.

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 thd.MM   Members   -  Reputation: 208

Like
0Likes
Like

Posted 05 October 2012 - 08:42 AM

Thanks for the replies.
Unity also uses C# and it works somehow.

I've seen the handle as message usage in the Game sample. It isn't that convenient because every function you want to call must have a CScriptHandle parameter. I'd like to call anything from any module or script object.

I currently don't have any firm plans as to when shared global variables in the modules will be implemented. It will probably not be ready this year though.


Ahh, is it hard to do? I might have an idea how to hack it myself.

#5 Andreas Jonsson   Moderators   -  Reputation: 3454

Like
0Likes
Like

Posted 05 October 2012 - 12:24 PM

If you just want to allow shared variables but don't care about controlling who can share what, then it shouldn't be too difficult to hack. The global variables are stored in the modules as instances of asCGlobalProperty in the symbol table scriptGlobals. The asCGlobalProperty is a reference counted object, so it should in theory just be a matter of finding the global variable and insert a reference to it in the module that will share it.

The reason I haven't done this already is that I want to allow control over who can share what, and that will require a lot more changes.
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