private unsafe UInt16[,] GetRoomCollisionData(UnmanagedExposed.Level level, UnmanagedExposed.Room1 room1) { UnmanagedExposed.Coll coll = Util.PointerToStructure(room1.pColl); int posX = (int)coll.dwPosGameX - level.dwPosX; int posY = (int)coll.dwPosGameY - level.dwPosY; int sizeX = (int)coll.dwSizeGameX; int sizeY = (int)coll.dwSizeGameY; UInt16* data = (UInt16*)(coll.pMapStart + (int)room1.pColl); UInt16[,] roomCollisionGraph = new UInt16[sizeX, sizeY]; for (int y = 0; y < sizeY; y++) { for (int x = 0; x < sizeX; x++) { roomCollisionGraph[x, y] = *data; data++; } } return roomCollisionGraph; }