diff --git a/src/gaemstone/ECS/EntityRef.cs b/src/gaemstone/ECS/EntityRef.cs index 0340556..4ef24f4 100644 --- a/src/gaemstone/ECS/EntityRef.cs +++ b/src/gaemstone/ECS/EntityRef.cs @@ -59,7 +59,8 @@ public unsafe sealed class EntityRef { if (path?.IsAbsolute == true) throw new ArgumentException("path must not be absolute", nameof(path)); return path; } - public EntityRef? Parent => GetTarget(Universe.ChildOf); + public EntityRef? Parent + => GetTarget(Universe.ChildOf); public IEnumerable GetChildren() { @@ -163,9 +164,9 @@ public unsafe sealed class EntityRef public static IdentifierRef operator &(EntityRef relation, Entity target) => IdentifierRef.Pair(relation, target); public static IdentifierRef operator &(Entity relation, EntityRef target) => IdentifierRef.Pair(relation, target); - public static implicit operator Entity(EntityRef e) => e.Entity; - public static implicit operator ecs_entity_t(EntityRef e) => e.Entity.Value; + public static implicit operator Entity(EntityRef? e) => e?.Entity ?? default; + public static implicit operator ecs_entity_t(EntityRef? e) => e?.Entity.Value ?? default; - public static implicit operator Identifier(EntityRef e) => new(e.Entity.Value.Data); - public static implicit operator ecs_id_t(EntityRef e) => e.Entity.Value.Data; + public static implicit operator Identifier(EntityRef? e) => new(e?.Entity.Value.Data ?? default); + public static implicit operator ecs_id_t(EntityRef? e) => e?.Entity.Value.Data ?? default; }