Various fixes to scripting
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
#define FLAX_CORECLR_STRING StringAnsi
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// .NET Runtime hosting library that uses Hostfxr (https://github.com/dotnet/runtime).
|
||||
/// </summary>
|
||||
class CoreCLR
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -852,18 +852,21 @@ MONO_API MONO_RT_EXTERNAL_ONLY MonoObject* mono_property_get_value(MonoProperty*
|
||||
|
||||
MONO_API void mono_gc_wbarrier_set_field(MonoObject* obj, void* field_ptr, MonoObject* value)
|
||||
{
|
||||
ASSERT(false);
|
||||
CRASH; // Not supported on CoreCRL
|
||||
}
|
||||
|
||||
MONO_API void mono_gc_wbarrier_set_arrayref(MonoArray* arr, void* slot_ptr, MonoObject* value)
|
||||
{
|
||||
static void* SetArrayValueReferencePtr = CoreCLR::GetStaticMethodPointer(TEXT("SetArrayValueReference"));
|
||||
CoreCLR::CallStaticMethod<void, void*, void*, void*>(SetArrayValueReferencePtr, arr, slot_ptr, value);
|
||||
}
|
||||
|
||||
MONO_API void mono_gc_wbarrier_generic_store(void* ptr, MonoObject* value)
|
||||
{
|
||||
// Ignored
|
||||
*((void**)ptr) = value;
|
||||
*(void**)ptr = value;
|
||||
}
|
||||
|
||||
MONO_API void mono_gc_wbarrier_value_copy(void* dest, /*const*/ void* src, int count, MonoClass* klass)
|
||||
{
|
||||
// Ignored
|
||||
|
||||
@@ -85,6 +85,7 @@ extern "C" FLAXENGINE_API void mono_add_internal_call(const char* name, const vo
|
||||
#else
|
||||
|
||||
#define ADD_INTERNAL_CALL(fullName, method)
|
||||
#define DEFINE_INTERNAL_CALL(returnType) static returnType
|
||||
#define INTERNAL_CALL_CHECK(obj)
|
||||
#define INTERNAL_CALL_CHECK_EXP(expression)
|
||||
#define INTERNAL_CALL_CHECK_RETURN(obj, defaultValue)
|
||||
|
||||
@@ -221,12 +221,12 @@ void ScriptingObject::ChangeID(const Guid& newId)
|
||||
_type.GetType().Module->OnObjectIdChanged(this, prevId);
|
||||
}
|
||||
|
||||
void ScriptingObject::SetManagedInstance(MonoObject* instance)
|
||||
void ScriptingObject::SetManagedInstance(MObject* instance)
|
||||
{
|
||||
ASSERT(_gcHandle == 0);
|
||||
#if USE_NETCORE
|
||||
_gcHandle = (MGCHandle)instance;
|
||||
#else
|
||||
#elif !COMPILE_WITHOUT_CSHARP
|
||||
_gcHandle = MUtils::NewGCHandle(instance, false);
|
||||
#endif
|
||||
}
|
||||
@@ -454,12 +454,12 @@ ManagedScriptingObject::ManagedScriptingObject(const SpawnParams& params)
|
||||
{
|
||||
}
|
||||
|
||||
void ManagedScriptingObject::SetManagedInstance(MonoObject* instance)
|
||||
void ManagedScriptingObject::SetManagedInstance(MObject* instance)
|
||||
{
|
||||
ASSERT(_gcHandle == 0);
|
||||
#if USE_NETCORE
|
||||
_gcHandle = (MGCHandle)instance;
|
||||
#else
|
||||
#elif !COMPILE_WITHOUT_CSHARP
|
||||
_gcHandle = MUtils::NewGCHandleWeakref(instance, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ public:
|
||||
virtual void ChangeID(const Guid& newId);
|
||||
|
||||
public:
|
||||
virtual void SetManagedInstance(MonoObject* instance);
|
||||
virtual void SetManagedInstance(MObject* instance);
|
||||
virtual void OnManagedInstanceDeleted();
|
||||
virtual void OnScriptingDispose();
|
||||
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
|
||||
public:
|
||||
// [ScriptingObject]
|
||||
void SetManagedInstance(MonoObject* instance) override;
|
||||
void SetManagedInstance(MObject* instance) override;
|
||||
void OnManagedInstanceDeleted() override;
|
||||
void OnScriptingDispose() override;
|
||||
bool CreateManaged() override;
|
||||
|
||||
Reference in New Issue
Block a user