public static void Reset() { _GlobalAssetObjectResolver.DisposeAssetBundles(); _GlobalAssetObjectResolver = new GlobalAssetObjectResolver(); foreach (var world in World.AllWorlds) { var system = world.GetExistingSystem <LiveLinkPlayerAssetRefreshSystem>(); if (system != null) { system._WaitingForAssets.Clear(); } } }
unsafe public static LiveLinkChangeSet Deserialize(EntityChangeSetSerialization.ResourcePacket resource, GlobalAssetObjectResolver resolver) { var reader = resource.ChangeSet.AsReader(); LiveLinkChangeSet changeSet; changeSet.Changes = EntityChangeSetSerialization.Deserialize(&reader, resource.GlobalObjectIds, resolver); reader.ReadNext(out changeSet.SceneGUID); reader.ReadNext(out changeSet.SceneName); reader.ReadNext(out changeSet.UnloadAllPreviousEntities); reader.ReadNext(out changeSet.FramesToRetainBlobAssets); return(changeSet); }
public static EntityChangeSet Deserialize(UnsafeAppendBuffer.Reader *bufferReader, NativeArray <RuntimeGlobalObjectId> globalObjectIDs, GlobalAssetObjectResolver resolver) { bufferReader->ReadNext <ComponentTypeHash>(out var typeHashes, Allocator.Persistent); for (int i = 0; i != typeHashes.Length; i++) { var stableTypeHash = typeHashes[i].StableTypeHash; var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(stableTypeHash); if (typeIndex == -1) { typeHashes.Dispose(); throw new ArgumentException("The LiveLink Patch Type Layout doesn't match the Data Layout of the Components. Please Rebuild the Player."); } } var createdEntityCount = bufferReader->ReadNext <int>(); var destroyedEntityCount = bufferReader->ReadNext <int>(); bufferReader->ReadNext <EntityGuid>(out var entities, Allocator.Persistent); bufferReader->ReadNext <FixedString64>(out var names, Allocator.Persistent); bufferReader->ReadNext <PackedComponent>(out var addComponents, Allocator.Persistent); bufferReader->ReadNext <PackedComponent>(out var removeComponents, Allocator.Persistent); bufferReader->ReadNext <PackedComponentDataChange>(out var setComponents, Allocator.Persistent); bufferReader->ReadNext <byte>(out var componentData, Allocator.Persistent); bufferReader->ReadNext <EntityReferenceChange>(out var entityReferenceChanges, Allocator.Persistent); bufferReader->ReadNext <BlobAssetReferenceChange>(out var blobAssetReferenceChanges, Allocator.Persistent); bufferReader->ReadNext <LinkedEntityGroupChange>(out var linkedEntityGroupAdditions, Allocator.Persistent); bufferReader->ReadNext <LinkedEntityGroupChange>(out var linkedEntityGroupRemovals, Allocator.Persistent); bufferReader->ReadNext <BlobAssetChange>(out var createdBlobAssets, Allocator.Persistent); bufferReader->ReadNext <ulong>(out var destroyedBlobAssets, Allocator.Persistent); bufferReader->ReadNext <byte>(out var blobAssetData, Allocator.Persistent); var resolvedObjects = new UnityEngine.Object[globalObjectIDs.Length]; resolver.ResolveObjects(globalObjectIDs, resolvedObjects); var reader = new ManagedObjectBinaryReader(bufferReader, resolvedObjects); var setSharedComponents = ReadSharedComponentDataChanges(bufferReader, reader, typeHashes); var setManagedComponents = ReadManagedComponentDataChanges(bufferReader, reader, typeHashes); //if (!bufferReader->EndOfBuffer) // throw new Exception("Underflow in EntityChangeSet buffer"); return(new EntityChangeSet( createdEntityCount, destroyedEntityCount, entities, typeHashes, names, addComponents, removeComponents, setComponents, componentData, entityReferenceChanges, blobAssetReferenceChanges, setManagedComponents, setSharedComponents, linkedEntityGroupAdditions, linkedEntityGroupRemovals, createdBlobAssets, destroyedBlobAssets, blobAssetData)); }
public static EntityChangeSet Deserialize(UnsafeAppendBuffer.Reader *bufferReader, NativeArray <RuntimeGlobalObjectId> globalObjectIDs, GlobalAssetObjectResolver resolver) { bufferReader->ReadNext <ComponentTypeHash>(out var typeHashes, Allocator.Persistent); for (int i = 0; i != typeHashes.Length; i++) { var stableTypeHash = typeHashes[i].StableTypeHash; var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(stableTypeHash); if (typeIndex == -1) { typeHashes.Dispose(); throw new ArgumentException("The LiveLink Patch Type Layout doesn't match the Data Layout of the Components. Please Rebuild the Player."); } } var createdEntityCount = bufferReader->ReadNext <int>(); var destroyedEntityCount = bufferReader->ReadNext <int>(); bufferReader->ReadNext <EntityGuid>(out var entities, Allocator.Persistent); bufferReader->ReadNext <NativeString64>(out var names, Allocator.Persistent); bufferReader->ReadNext <PackedComponent>(out var addComponents, Allocator.Persistent); bufferReader->ReadNext <PackedComponent>(out var removeComponents, Allocator.Persistent); bufferReader->ReadNext <PackedComponentDataChange>(out var setComponents, Allocator.Persistent); bufferReader->ReadNext <byte>(out var componentData, Allocator.Persistent); bufferReader->ReadNext <EntityReferenceChange>(out var entityReferenceChanges, Allocator.Persistent); bufferReader->ReadNext <BlobAssetReferenceChange>(out var blobAssetReferenceChanges, Allocator.Persistent); bufferReader->ReadNext <LinkedEntityGroupChange>(out var linkedEntityGroupAdditions, Allocator.Persistent); bufferReader->ReadNext <LinkedEntityGroupChange>(out var linkedEntityGroupRemovals, Allocator.Persistent); bufferReader->ReadNext <BlobAssetChange>(out var createdBlobAssets, Allocator.Persistent); bufferReader->ReadNext <ulong>(out var destroyedBlobAssets, Allocator.Persistent); bufferReader->ReadNext <byte>(out var blobAssetData, Allocator.Persistent); bufferReader->ReadNext <PackedComponent>(out var setSharedComponentPackedComponents, Allocator.Persistent); var resolvedObjects = new UnityEngine.Object[globalObjectIDs.Length]; resolver.ResolveObjects(globalObjectIDs, resolvedObjects); var reader = new PropertiesBinaryReader(bufferReader, resolvedObjects); var setSharedComponents = new PackedSharedComponentDataChange[setSharedComponentPackedComponents.Length]; for (int i = 0; i < setSharedComponentPackedComponents.Length; i++) { object componentValue; if (bufferReader->ReadNext <int>() == 1) { var packedTypeIndex = setSharedComponentPackedComponents[i].PackedTypeIndex; var stableTypeHash = typeHashes[packedTypeIndex].StableTypeHash; var typeIndex = TypeManager.GetTypeIndexFromStableTypeHash(stableTypeHash); var type = TypeManager.GetType(typeIndex); componentValue = BoxedProperties.ReadBoxedStruct(type, reader); }