class ScriptManagedResource

Interop class between C++

& CLR for ManagedResource.

Public

Constructors

ScriptManagedResource

ScriptManagedResource(const HManagedResource &nativeObject)

Methods

staticGetAssemblyName

static const char *GetAssemblyName()

staticGetNamespace

static const char *GetNamespace()

staticGetTypeName

static const char *GetTypeName()

GetLifetimeTrackingMode

ScriptObjectLifetimeTrackingMode GetLifetimeTrackingMode() const override

staticSetupScriptBindings

static void SetupScriptBindings()

staticCreateScriptObject

static MonoObject *CreateScriptObject(bool construct)

Returns null as managed resources cannot be created statically.

Their script object type is mutable depending on the script type they are referencing. Use non-static CreateAndBindScriptObject() member instead.

CreateAndBindScriptObject

void CreateAndBindScriptObject()

Creates a new script object of the correct resource type and binds it to the script object wrapper.

Script object wrapper must not have a script object assigned.

GetNativeObjectAsShared

SPtr<NativeType> GetNativeObjectAsShared() const

Returns the wrapped native object as a shared pointer.

GetNativeObjectAsHandle

TResourceHandle<NativeType> GetNativeObjectAsHandle() const

Returns the wrapped native object as a handle.

GetNativeObjectReferenceCount

u32 GetNativeObjectReferenceCount() const override

GetOrCreateResourceReference

MonoObject *GetOrCreateResourceReference() const

Returns a resource reference script object, that is wrapping the provided resource.

ShouldPersistScriptReload

bool ShouldPersistScriptReload() const override

staticCreateScriptObjectAndWrapper

static MonoObject *CreateScriptObjectAndWrapper(const HResource &nativeObject)

Creates a new script object and a script object wrapper of , and associates them with the provided native object.

Should not be called if already has an associated script object.

staticGetScriptExportable

static IScriptExportable *GetScriptExportable(IReflectable *nativeObject)

Casts the reflectable object to script exportable.

staticGetOrCreateScriptObject

static MonoObject *GetOrCreateScriptObject(const TResourceHandle<NativeType> &nativeObject)

Attempts to retrieve an existing associated script object from the provided native object.

If one doesn't exist, a new script object and the associated script wrapper will be created.

~TScriptObjectWrapper<SelfType, BaseType>

virtual ~TScriptObjectWrapper<SelfType, BaseType>() = default

staticGetScriptObjectWrapper

static SelfType *GetScriptObjectWrapper(MonoObject *scriptObject)

Returns the script object wrapper associated with the provided script object.

staticGetMetaData

static const ScriptTypeMetaData *GetMetaData()

Returns the meta-data storing information about the script type.

staticInitializeMetaDataAtLoadTime

static void InitializeMetaDataAtLoadTime()

Takes care of initializing the meta-data when the application first load.

The meta-data will be registered with a global manager that will ensure it is kept up-to-date after operations such as assembly (re)load.

Protected

Methods

staticInitializeAdditionalMetaData

static void InitializeAdditionalMetaData(ScriptTypeMetaData &metaData)

Initialize RTTI type ID and callback used to create the script object/script object wrapper.

BindToScriptObject

void BindToScriptObject(MonoObject *scriptObject) override

Stores a pointer to itself in the script object.

This ensures that calls to GetScriptObjectWrapper() can return the script object wrapper associated with the script object.

Private

Methods

RecreateScriptObjectAfterScriptReload

void RecreateScriptObjectAfterScriptReload() override

BackupDataBeforeScriptReload

TOptional<ScriptObjectReloadPersistentData> BackupDataBeforeScriptReload() override

Called on all script object wrappers when script reload is about to happen.

Allows the script object to back up its current state so it may be restored after reload completes. Only relevant for script objects that persist script reload (i.e. ShouldPersistScriptReload() returns true).

RestoreDataAfterScriptReload

void RestoreDataAfterScriptReload(const ScriptObjectReloadPersistentData &data) override

Called on all script object wrappers after script objects have been created in RecreateScriptObjectAfterScriptReload().

Allows you to restore data backed up in BackupDataBeforeScriptReload() call to the newly created script object. Only relevant for script objects that persist script reload (i.e. ShouldPersistScriptReload() returns true).

staticInternalCreateInstance

static void InternalCreateInstance(MonoObject *scriptObject)

*********************************************************************