public void RemoveEventListenerTest() { int eventFireCount = 0; PermissionChangedResult <MockCollection, Identity> changedResult = null; var callback1 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data => { changedResult = data; eventFireCount++; }); _permissions.AddEventListener(_identity2, callback1); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite); var removed = _permissions.RemoveEventListener(_identity2, callback1); _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None); Assert.AreEqual(1, eventFireCount); Assert.AreEqual(_identity2, changedResult.identity); Assert.AreEqual(_collection1, changedResult.obj); Assert.AreEqual(ReadWritePermission.ReadWrite, changedResult.permission); Assert.IsTrue(removed); }
public void RemoveEventListenerTest2() { int eventFireCount1 = 0; int eventFireCount2 = 0; int eventFireCount3 = 0; PermissionChangedResult <MockCollection, Identity> changedResult1 = null; PermissionChangedResult <MockCollection, Identity> changedResult2 = null; PermissionChangedResult <MockCollection, Identity> changedResult3 = null; var callback1 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data => { changedResult1 = data; eventFireCount1++; }); var callback2 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data => { changedResult2 = data; eventFireCount2++; }); var callback3 = new NetworkPermissionsMap <MockCollection, Identity> .OnPermissionChangedDelegate(data => { changedResult3 = data; eventFireCount3++; }); _permissions.AddEventListener(_identity2, callback1); _permissions.AddEventListener(_identity2, callback2); _permissions.AddEventListener(_identity2, callback3); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite); _permissions.RemoveEventListener(_identity2, callback1); _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read); _permissions.RemoveEventListener(_identity2, callback2); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None); Assert.AreEqual(1, eventFireCount1); Assert.AreEqual(2, eventFireCount2); Assert.AreEqual(3, eventFireCount3); Assert.AreEqual(_identity2, changedResult1.identity); Assert.AreEqual(_identity2, changedResult2.identity); Assert.AreEqual(_identity2, changedResult3.identity); Assert.AreEqual(_collection1, changedResult1.obj); Assert.AreEqual(_collection2, changedResult2.obj); Assert.AreEqual(_collection1, changedResult3.obj); Assert.AreEqual(ReadWritePermission.ReadWrite, changedResult1.permission); Assert.AreEqual(ReadWritePermission.Read, changedResult2.permission); Assert.AreEqual(ReadWritePermission.None, changedResult3.permission); }
private void OnPermissionChanged(PermissionChangedResult <IUNetCollection, NetworkIdentity> result) { if (result.obj.collectionName == _collectionName) { if (result.permission.CanRead()) { _window.Show(); } else { _window.Hide(); } } }
private void OnPermissionChanged(PermissionChangedResult <IPUN2Collection, PhotonView> result) { if (result.obj.collectionName == _collectionName) { if (result.permission.CanRead()) { _window.Show(); } else { _window.Hide(); } } }
public void SetPermissionEventTest() { int eventFireCount = 0; PermissionChangedResult <MockCollection, Identity> changedResult = null; _permissions.AddEventListener(_identity2, data => { changedResult = data; eventFireCount++; }); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite); _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None); Assert.AreEqual(3, eventFireCount); Assert.AreEqual(_identity2, changedResult.identity); Assert.AreEqual(_collection1, changedResult.obj); Assert.AreEqual(ReadWritePermission.None, changedResult.permission); }
public void SetPermissionEventTest2() { int eventFireCount = 0; PermissionChangedResult <MockCollection, Identity> changedResult = null; _permissions.AddEventListener(_identity2, data => { changedResult = data; eventFireCount++; }); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.ReadWrite); _permissions.SetPermission(_collection2, _identity2, ReadWritePermission.Read); _permissions.SetPermission(_collection1, _identity2, ReadWritePermission.None); // These should be ignored by the event, as they're from another identity. _permissions.SetPermission(_collection1, _identity1, ReadWritePermission.ReadWrite); _permissions.SetPermission(_collection1, _identity3, ReadWritePermission.ReadWrite); Assert.AreEqual(3, eventFireCount); Assert.AreEqual(_identity2, changedResult.identity); Assert.AreEqual(_collection1, changedResult.obj); Assert.AreEqual(ReadWritePermission.None, changedResult.permission); }
protected virtual void OnCollectionPermissionChanged(PermissionChangedResult <IUNetCollection, NetworkIdentity> data) { // Build collection groups when permission has changed. Use the server collections if possible, otherwise use client collections. // NOTE: Could use data.permission > None to add/remove directly from the collectionGroup rather than re-creating a completely new collection every time. if (itemCollections.Contains(data.obj.collectionName)) { // Collection should be item collection var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity); var clientList = new List <Collections.ICollection <IItemInstance> >(); var serverList = new List <Collections.ICollection <IItemInstance> >(); foreach (var permission in colPermission) { var col = permission.obj as Collections.ICollection <IItemInstance>; if (col == null) { continue; } if (itemCollections.Contains(permission.obj.collectionName) == false) { continue; } if (CollectionRegistry.byID.Contains(col)) { if (clientList.Contains(col) == false) { clientList.Add(col); } } if (ServerCollectionRegistry.byID.Contains(col)) { if (serverList.Contains(col) == false) { serverList.Add(col); } } } itemCollectionGroup.Set(serverList.ToArray()); if (identity.isClient && identity.isServer == false) { itemCollectionGroup.Set(clientList.ToArray()); } } else if (equipmentCollections.Contains(data.obj.collectionName)) { // Collection should be equipment collection var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity); var clientList = new List <IEquipmentCollection <IEquippableItemInstance> >(); var serverList = new List <IEquipmentCollection <IEquippableItemInstance> >(); foreach (var permission in colPermission) { var col = permission.obj as IEquipmentCollection <IEquippableItemInstance>; if (col == null) { continue; } if (equipmentCollections.Contains(permission.obj.collectionName) == false) { continue; } if (CollectionRegistry.byID.Contains(col)) { if (clientList.Contains(col) == false) { clientList.Add(col); } } if (ServerCollectionRegistry.byID.Contains(col)) { if (serverList.Contains(col) == false) { serverList.Add(col); } } } equipmentCollectionGroup.Set(serverList.ToArray()); if (identity.isClient && identity.isServer == false) { equipmentCollectionGroup.Set(clientList.ToArray()); } } else if (currencyCollections.Contains(data.obj.collectionName)) { // Collection should be currency collection // Collection should be equipment collection var colPermission = UNetPermissionsRegistry.collections.GetAllWithPermission(identity); var clientList = new List <ICurrencyCollection <ICurrency, double> >(); var serverList = new List <ICurrencyCollection <ICurrency, double> >(); foreach (var permission in colPermission) { var col = permission.obj as ICurrencyCollection <ICurrency, double>; if (col == null) { continue; } if (currencyCollections.Contains(permission.obj.collectionName) == false) { continue; } if (CurrencyCollectionRegistry.byID.Contains(col)) { if (clientList.Contains(col) == false) { clientList.Add(col); } } if (ServerCurrencyCollectionRegistry.byID.Contains(col)) { if (serverList.Contains(col) == false) { serverList.Add(col); } } } currencyCollectionGroup.Set(serverList.ToArray()); if (identity.isClient && identity.isServer == false) { currencyCollectionGroup.Set(clientList.ToArray()); } } }