-
Notifications
You must be signed in to change notification settings - Fork 49
Description
I'm really determined to use besen in my project, and am still working on my game with it and writing a tutorial for others to do so, but i have a odd issue which i cannot figure out how to do properly, but it's most likely a bug:
I have registered native object:
BesenInst.RegisterNativeObject('Actor', TActorInterface);
The object has a property for OnCreate:
property OnCreate : TBESENObjectFunction read FOnCreate write FOnCreate;
In Javascript i've created an additional function on class:
Actor.prototype.OnCreate = function(OtherPlayer, AIClass) {
console.log('actor_stack pushing - Actor.OnCreate')
actor_stack.push(self);
}
Inside the constructor, i am attempting to call this function:
procedure TActorInterface.ConstructObject(const ThisArgument: TBESENValue; Arguments: PPBESENValues; CountArguments: integer);
...
if Assigned(FOnCreate) then begin
TBESEN(BesenInst).GarbageCollector.Protect(OnCreate);
try
AResult.ValueType := bvtBOOLEAN;
OnCreate.Call(BESENObjectValue(OnCreate), @CallParams, 3, AResult);
except
on e: exception do HandleBesenException(e);
end;
TBESEN(BesenInst).GarbageCollector.Unprotect(OnCreate);
end;
This however does not work as planned, it does seem to work if a function is added on an instance of class itself - but how do i call a prototype method added in javascript - Assigned(FOnCreate) check fails and nothing is called.
Omiting assigned check does not work either.
I've also tried to check prototype - Prototype.HasProperty('OnCreate') to no avail.
I'm not totally sure how i should be handling this, any help will be appreciated.