public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { // For all chunks where trans has changed since start of simulation // Copy trans to currentTrans if (ChangeVersionUtility.DidChange(chunk.GetComponentVersion(positionType), simStartComponentVersion)) { // Transform was interpolated by the rendering system var curPos = chunk.GetNativeArray(curPositionType); var pos = chunk.GetNativeArray(positionType); // FIXME: use a memcopy since size and layout must be identical for (int ent = 0; ent < curPos.Length; ++ent) { curPos[ent] = new CurrentSimulatedPosition { Value = pos[ent].Value }; } } }
public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { var curPos = chunk.GetNativeArray(curPositionType); var pos = chunk.GetNativeArray(positionType); var entity = chunk.GetNativeArray(entityType); // FIXME: use a memcopy since size and layout must be identical for (int ent = 0; ent < curPos.Length; ++ent) { var cp = pos[ent]; curPos[ent] = new CurrentSimulatedPosition { Value = cp.Value }; commandBuffer.AddComponent(chunkIndex, entity[ent], new PreviousSimulatedPosition { Value = cp.Value }); } }