public static unsafe T GetData <T>(this IBlackboard bb, ulong componentStableHash, int componentDataOffset) where T : struct { var componentPtr = (byte *)bb.GetPtrRO(componentStableHash); // TODO: type safety check var dataPtr = componentPtr + componentDataOffset; return(UnsafeUtilityEx.AsRef <T>(dataPtr)); }