public static unsafe EntityPatchInfo *AppendEntityPatches(EntityPatchInfo *patches, TypeManager.EntityOffsetInfo[] offsets, int baseOffset, int stride) { EntityPatchInfo *infoPtr; if (offsets == null) { infoPtr = patches; } else { int index = 0; while (true) { if (index >= offsets.Length) { infoPtr = patches + offsets.Length; break; } patches[index] = new EntityPatchInfo { Offset = baseOffset + offsets[index].Offset, Stride = stride }; index++; } } return(infoPtr); }
public static void PatchEntitiesForPrefab(EntityPatchInfo *scalarPatches, int scalarPatchCount, BufferEntityPatchInfo *bufferPatches, int bufferPatchCount, byte *data, int indexInChunk, int entityCount, SparseEntityRemapInfo *remapping, int remappingCount) { // Patch scalars (single components) with entity references. for (int p = 0; p < scalarPatchCount; p++) { byte *entityData = data + scalarPatches[p].Offset; for (int e = 0; e != entityCount; e++) { Entity *entity = (Entity *)(entityData + scalarPatches[p].Stride * (e + indexInChunk)); * entity = RemapEntityForPrefab(remapping + e * remappingCount, remappingCount, *entity); } } // Patch buffers that contain entity references for (int p = 0; p < bufferPatchCount; ++p) { byte *bufferData = data + bufferPatches[p].BufferOffset; for (int e = 0; e != entityCount; e++) { BufferHeader *header = (BufferHeader *)(bufferData + bufferPatches[p].BufferStride * (e + indexInChunk)); byte *elemsBase = BufferHeader.GetElementPointer(header) + bufferPatches[p].ElementOffset; int elemCount = header->Length; for (int k = 0; k != elemCount; ++k) { Entity *entityPtr = (Entity *)elemsBase; * entityPtr = RemapEntityForPrefab(remapping + e * remappingCount, remappingCount, *entityPtr); elemsBase += bufferPatches[p].ElementStride; } } } }
public static unsafe void PatchEntities(EntityPatchInfo *scalarPatches, int scalarPatchCount, BufferEntityPatchInfo *bufferPatches, int bufferPatchCount, byte *data, int count, ref NativeArray <EntityRemapInfo> remapping) { int index = 0; while (true) { if (index >= scalarPatchCount) { int num3 = 0; while (num3 < bufferPatchCount) { byte *numPtr2 = data + bufferPatches[num3].BufferOffset; int num4 = 0; while (true) { if (num4 == count) { num3++; break; } BufferHeader *header = (BufferHeader *)numPtr2; byte * numPtr3 = BufferHeader.GetElementPointer(header) + bufferPatches[num3].ElementOffset; int length = header->Length; int num6 = 0; while (true) { if (num6 == length) { numPtr2 += bufferPatches[num3].BufferStride; num4++; break; } Entity *entityPtr2 = (Entity *)numPtr3; entityPtr2[0] = RemapEntity(ref remapping, entityPtr2[0]); numPtr3 += bufferPatches[num3].ElementStride; num6++; } } } return; } byte *numPtr = data + scalarPatches[index].Offset; int num2 = 0; while (true) { if (num2 == count) { index++; break; } Entity *entityPtr = (Entity *)numPtr; entityPtr[0] = RemapEntity(ref remapping, entityPtr[0]); numPtr += scalarPatches[index].Stride; num2++; } } }
public static EntityPatchInfo *AppendEntityPatches(EntityPatchInfo *patches, EntityOffsetInfo *offsets, int offsetCount, int baseOffset, int stride) { if (offsets == null) { return(patches); } for (int i = 0; i < offsetCount; i++) { patches[i] = new EntityPatchInfo { Offset = baseOffset + offsets[i].Offset, Stride = stride } } ; return(patches + offsetCount); }
public static void PatchEntities(EntityPatchInfo *scalarPatches, int scalarPatchCount, BufferEntityPatchInfo *bufferPatches, int bufferPatchCount, byte *chunkBuffer, int entityCount, ref NativeArray <EntityRemapInfo> remapping) { // Patch scalars (single components) with entity references. for (int p = 0; p < scalarPatchCount; p++) { byte *entityData = chunkBuffer + scalarPatches[p].Offset; for (int i = 0; i != entityCount; i++) { Entity *entity = (Entity *)entityData; * entity = RemapEntity(ref remapping, *entity); entityData += scalarPatches[p].Stride; } } // Patch buffers that contain entity references for (int p = 0; p < bufferPatchCount; ++p) { byte *bufferData = chunkBuffer + bufferPatches[p].BufferOffset; for (int i = 0; i != entityCount; ++i) { BufferHeader *header = (BufferHeader *)bufferData; byte *elemsBase = BufferHeader.GetElementPointer(header) + bufferPatches[p].ElementOffset; int elemCount = header->Length; for (int k = 0; k != elemCount; ++k) { Entity *entityPtr = (Entity *)elemsBase; * entityPtr = RemapEntity(ref remapping, *entityPtr); elemsBase += bufferPatches[p].ElementStride; } bufferData += bufferPatches[p].BufferStride; } } }