public static PUN2ServerEquipmentCollection <IEquippableItemInstance> CreateServerEquipmentCollection( string collectionName, System.Guid collectionGuid, PhotonView owner, EquipmentCollectionSlot <IEquippableItemInstance>[] slots, IEquippableCharacter <IEquippableItemInstance> character) { var collection = new PUN2ServerEquipmentCollection <IEquippableItemInstance>(owner, 0, character) { collectionName = collectionName, ID = collectionGuid }; collection.slots = slots; for (int i = 0; i < collection.slots.Length; i++) { collection.slots[i].collection = collection; collection.slots[i].index = i; } collection.Server_Register(); // The server's owner object always has read/write permission. PUN2PermissionsRegistry.collections.SetPermission(collection, owner, ReadWritePermission.ReadWrite); _logger.Log($"[Server] Created and registered equipment collection with name '{collection.collectionName}' and guid '{collection.ID}' for ViewID: {owner.ViewID}", collection); return(collection); }
private void Server_CreateCollection() { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return; } _logger.Log($"PUN2EquipmentCollectionCreator - Server_CreateCollection ViewId: {this.photonView.ViewID}, _isPlayerCollection: {_isPlayerCollection}", this); if (_isPlayerCollection) { var bridge = GetComponent <PUN2ActionsBridge>(); if (bridge == null) { _logger.Error($"Trying to sync collection to client, but no {nameof(PUN2ActionsBridge)} found on object!", this); return; } var guid = System.Guid.NewGuid(); collection = bridge.Server_AddEquipmentCollectionToServerAndClient( //owner: this.photonView, collectionName: _collectionName, collectionGuid: guid, slots: _slots//.Select(o => string.Join(":", o.equipmentTypes.Select(j => j.ID.ToString() )) ).ToArray() ); bridge.Server_SetCollectionPermissionOnServerAndClient( collectionGuid: guid, permission: _permission ); } else { var equippableCharacter = GetComponent <IEquippableCharacter <IEquippableItemInstance> >(); collection = PUN2CollectionUtility.CreateServerEquipmentCollection(_collectionName, System.Guid.NewGuid(), this.photonView, _slots.Select(o => o.ToSlotInstance(equippableCharacter)).ToArray(), equippableCharacter); } }