You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
The text was updated successfully, but these errors were encountered:
@Coldzer0 thanks - i did find your project and am trying to learn from it as much as possible, as it is a rare project using besen.
I also use that approach that you described and it works, the problem that i have is, that this cannot be used to call prototype functions - it works well for individual instances only, and it means copying the function to each newly created object to achieve that.
I added a function to main instance of object - by appending a function to Actor.prototype - and that itself cannot be called or reached from inside besen.
quickjs looks interesting, but so far i'll try to stick with besen - i think it has a lot of potential, it just lacks more complete examples on integration and usage scenatios.
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:
Inside the constructor, i am attempting to call this function:
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.
The text was updated successfully, but these errors were encountered: