Skip to content

Commit

Permalink
.NET: Add support for nulling out object fields
Browse files Browse the repository at this point in the history
  • Loading branch information
praydog committed May 13, 2024
1 parent 2f3673f commit 38db0c2
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
12 changes: 12 additions & 0 deletions csharp-api/REFrameworkNET/Field.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ namespace REFrameworkNET {
}

if (!field_type->IsValueType()) {
if (value == nullptr) {
// Lightweight managed object
auto originalObject = *(reframework::API::ManagedObject**)data_ptr;

if (originalObject != nullptr && originalObject->get_ref_count() > 0) {
originalObject->release();
}

*(uintptr_t*)data_ptr = 0;
return;
}

auto iobject = dynamic_cast<REFrameworkNET::IObject^>(value);

if (iobject != nullptr) {
Expand Down
3 changes: 3 additions & 0 deletions csharp-api/test/Test/Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,9 @@ public static void Entry() {
var position = transform.get_Position();

REFrameworkNET.API.LogInfo("Player position: " + position.x + " " + position.y + " " + position.z);

position.y += 5.0f;
transform.set_Position(position);
}
}

Expand Down

0 comments on commit 38db0c2

Please sign in to comment.