class ScriptResourceManager

Handles creation and lookup of script interop objects for resources.

Since resources can be created in native code yet used by managed code this manager provides lookups to find managed equivalents of native resources.

Public

Constructors

ScriptResourceManager

ScriptResourceManager()

Methods

~ScriptResourceManager

~ScriptResourceManager() noexcept

GetScriptRRef

ScriptRRefBase *GetScriptRRef(const HResource &resource, ::MonoClass *rrefClass)

Attempts to find an existing interop object for the specified resource reference, or creates a new object if one cannot be found.

resource
Resource handle to create the reference wrapper object for.
rrefClass
Class of the managed RRef object to create.

NotifyScriptRRefScriptObjectDestroyed

void NotifyScriptRRefScriptObjectDestroyed(ScriptRRefBase *scriptRRef)

Notifies the system that script object holding the resource reference has been garbage collected.

staticInstance

static T &Instance()

Returns a reference to the module instance.

Module has to have been started up first otherwise an exception will be thrown.

staticInstancePtr

static T *InstancePtr()

Returns a pointer to the module instance.

Module has to have been started up first otherwise an exception will be thrown.

staticShutDown

static void ShutDown()

Shuts down this module and frees any resources it is using.

staticIsStarted

static bool IsStarted()

Query if the module has been started.

Protected

Methods

~Module<T>

virtual ~Module<T>() = default

OnStartUp

virtual void OnStartUp()

Override if you want your module to be notified once it has been constructed and started.

OnShutDown

virtual void OnShutDown()

Override if you want your module to be notified just before it is deleted.

staticInstanceInternal

static T *&InstanceInternal()

Returns a singleton instance of this module.

staticIsDestroyed

static bool &IsDestroyed()

Checks has the Module been shut down.

staticIsStartedUp

static bool &IsStartedUp()

Checks has the Module been started up.

Private

Methods

OnResourceDestroyed

void OnResourceDestroyed(const UUID &UUID)

Triggered when the native resource has been unloaded and therefore destroyed.

ClearRRefs

void ClearRRefs()

Clears all cached RRefs.

Should be called before assembly refresh since the refs will no longer be valid after.

Fields

mScriptRRefsPerType

UnorderedMap< ::MonoClass *, UnorderedMap<UUID, ScriptRRefBase *>> mScriptRRefsPerType

mResourceDestroyedConn

HEvent mResourceDestroyedConn

mOnWillUnloadAssembliesConnection

HEvent mOnWillUnloadAssembliesConnection