#pragma once #include "BsScriptEnginePrerequisites.h" #include "BsScriptObject.h" #include "BsAsyncOp.h" namespace BansheeEngine { class BS_SCR_BE_EXPORT ScriptAsyncOp : public ScriptObject { public: SCRIPT_OBJ(BansheeEngineAssemblyName, "BansheeEngine", "AsyncOp") static MonoObject* create(const AsyncOp& op, std::function asyncOpToReturnValue); private: ScriptAsyncOp(MonoObject* instance); void initialize(const AsyncOp& op, std::function asyncOpToReturnValue); static void internal_createInstance(MonoObject* managedInstance); static void internal_isComplete(ScriptAsyncOp* thisPtr, bool* value); static MonoObject* internal_getReturnValue(ScriptAsyncOp* thisPtr); static void internal_blockUntilComplete(ScriptAsyncOp* thisPtr); AsyncOp mAsyncOp; std::function mConvertCallback; }; }