Skip to content

Commit 1c14b20

Browse files
authored
Merge pull request #17 from AnnulusGames/add-trygetgameobject
Add: TryGetGameObject to EntityConversion
2 parents 8d1cf6d + 9d61404 commit 1c14b20

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/Arch.Unity/Assets/Arch.Unity/Runtime/Conversion/EntityConversion.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,23 @@ public static bool TryGetEntity(GameObject gameObject, out EntityReference entit
134134
return false;
135135
}
136136

137+
public static bool TryGetGameObject(Entity entity, out GameObject gameObject)
138+
{
139+
return TryGetGameObject(entity, DefaultWorld, out gameObject);
140+
}
141+
142+
public static bool TryGetGameObject(Entity entity, World world, out GameObject gameObject)
143+
{
144+
if (world.TryGet<GameObjectReference>(entity, out var reference))
145+
{
146+
gameObject = reference.GameObject;
147+
return gameObject != null;
148+
}
149+
150+
gameObject = default;
151+
return false;
152+
}
153+
137154
public static World DefaultWorld { get; set; }
138155
}
139156
}

src/Arch.Unity/Assets/Arch.Unity/Tests/Runtime/ConversionTest.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,18 @@ public void Test_TryGetEntity()
3939

4040
Object.Destroy(obj);
4141
}
42+
43+
[Test]
44+
public void Test_TryGetGameObject()
45+
{
46+
var objA = new GameObject("Target");
47+
var entity = EntityConversion.Convert(objA, new EntityConversionOptions() { ConversionMode = ConversionMode.SyncWithEntity });
48+
var result = EntityConversion.TryGetGameObject(entity, out var objB);
49+
50+
Assert.IsTrue(result);
51+
Assert.That(objA, Is.EqualTo(objB));
52+
53+
Object.Destroy(objA);
54+
}
4255
}
4356
}

0 commit comments

Comments
 (0)