public static void Copy <T, T2, T3>(T *obj, T2 *field, T3 *destination) where T : unmanaged where T2 : unmanaged where T3 : unmanaged { var size = Unsafe.SizeOf <T>(); var length = (uint)(size - OffsetOf(obj, field)); Unsafe.CopyBlock(( void * )field, ( void * )destination, length); }
private static int OffsetOf <T, T2>(T *objPtr, T2 *fieldPtr) where T : unmanaged where T2 : unmanaged { return(( int )(( long )fieldPtr - ( long )objPtr)); }
public Batch(int entityId, T1 *component1, T2 *component2) { EntityId = entityId; Component1 = component1; Component2 = component2; }