// Token: 0x060059FA RID: 23034 RVA: 0x001F4220 File Offset: 0x001F2620 private void VerifyType <T>(VRC_DataStorage.VrcDataElement data) { if (typeof(T) == typeof(float)) { if (data.type != VRC_DataStorage.VrcDataType.Float) { Debug.LogError("VRCSDK2.VRC_DataStorage: " + data.name + " is not a float"); } } else if (typeof(T) == typeof(string) && data.type != VRC_DataStorage.VrcDataType.String) { Debug.LogError("VRCSDK2.VRC_DataStorage: " + data.name + " is not a String"); } }
// Token: 0x06005A00 RID: 23040 RVA: 0x001F4A64 File Offset: 0x001F2E64 public static bool Deserialize(VRC_DataStorage.VrcDataElement ds, out object obj) { obj = null; switch (ds.type) { case VRC_DataStorage.VrcDataType.None: obj = null; return(true); case VRC_DataStorage.VrcDataType.Bool: obj = ds.valueBool; return(true); case VRC_DataStorage.VrcDataType.Int: obj = ds.valueInt; return(true); case VRC_DataStorage.VrcDataType.Float: obj = ds.valueFloat; return(true); case VRC_DataStorage.VrcDataType.String: obj = ds.valueString; return(true); case VRC_DataStorage.VrcDataType.SerializeBytes: obj = ds.valueSerializedBytes; return(true); case VRC_DataStorage.VrcDataType.SerializeObject: if (ds.serializeComponent == null) { return(false); } ds.serializeComponent.SetBytes(ds.valueSerializedBytes); return(true); case VRC_DataStorage.VrcDataType.Other: { object[] array = VRC_Serialization.ParameterDecoder(ds.valueSerializedBytes, false); obj = ((array != null && array.Length != 0) ? array[0] : null); return(true); } default: Debug.LogError("Unable to handle " + ds.type.ToString()); return(false); } }
// Token: 0x060059FF RID: 23039 RVA: 0x001F4950 File Offset: 0x001F2D50 public static bool Serialize(VRC_DataStorage.VrcDataElement ds, object objectToStore) { ds.added = (ds.type == VRC_DataStorage.VrcDataType.None); ds.modified = true; if (objectToStore is bool) { ds.valueBool = (bool)objectToStore; ds.type = VRC_DataStorage.VrcDataType.Bool; return(true); } if (objectToStore is int) { ds.valueInt = (int)objectToStore; ds.type = VRC_DataStorage.VrcDataType.Int; return(true); } if (objectToStore is float) { ds.valueFloat = (float)objectToStore; ds.type = VRC_DataStorage.VrcDataType.Float; return(true); } if (objectToStore is string) { ds.valueString = (string)objectToStore; ds.type = VRC_DataStorage.VrcDataType.String; return(true); } if (objectToStore is byte[]) { ds.valueSerializedBytes = (byte[])objectToStore; ds.type = VRC_DataStorage.VrcDataType.SerializeBytes; return(true); } if (objectToStore is VRC_SerializableBehaviour) { ds.serializeComponent = (VRC_SerializableBehaviour)objectToStore; ds.valueSerializedBytes = ((VRC_SerializableBehaviour)objectToStore).GetBytes(); ds.type = VRC_DataStorage.VrcDataType.SerializeObject; return(true); } ds.valueSerializedBytes = VRC_Serialization.ParameterEncoder(new object[] { objectToStore }); ds.type = VRC_DataStorage.VrcDataType.Other; return(true); }
// Token: 0x06005A02 RID: 23042 RVA: 0x001F4B84 File Offset: 0x001F2F84 private static void SerializeDataStorage(VRC_DataStorageInternal dataStorage, PhotonStream stream) { if (dataStorage == null) { stream.SendNext(0); } else { stream.SendNext(dataStorage.GetElementCount()); for (int i = 0; i < dataStorage.GetElementCount(); i++) { VRC_DataStorage.VrcDataElement element = dataStorage.GetElement(i); stream.SendNext(element.type); stream.SendNext(element.name); stream.SendNext(element.mirror); switch (element.type) { case VRC_DataStorage.VrcDataType.Bool: stream.SendNext(dataStorage.Get <bool>(i)); break; case VRC_DataStorage.VrcDataType.Int: stream.SendNext(dataStorage.Get <int>(i)); break; case VRC_DataStorage.VrcDataType.Float: stream.SendNext(dataStorage.Get <float>(i)); break; case VRC_DataStorage.VrcDataType.String: stream.SendNext(dataStorage.Get <string>(i)); break; case VRC_DataStorage.VrcDataType.SerializeBytes: case VRC_DataStorage.VrcDataType.SerializeObject: case VRC_DataStorage.VrcDataType.Other: { byte[] obj = dataStorage.Get <byte[]>(i); stream.SendNext(obj); break; } } } } }
// Token: 0x06005A03 RID: 23043 RVA: 0x001F4CA8 File Offset: 0x001F30A8 private static void DeserializeDataStorage(VRC_DataStorageInternal dataStorage, PhotonStream stream) { int count = (int)stream.ReceiveNext(); if (dataStorage != null) { dataStorage.Resize(count); } for (int i = 0; i < dataStorage.GetElementCount(); i++) { VRC_DataStorage.VrcDataElement element = dataStorage.GetElement(i); element.type = (VRC_DataStorage.VrcDataType)stream.ReceiveNext(); element.name = (string)stream.ReceiveNext(); element.mirror = (VRC_DataStorage.VrcDataMirror)stream.ReceiveNext(); switch (element.type) { case VRC_DataStorage.VrcDataType.Bool: dataStorage.Set <bool>(i, (bool)stream.ReceiveNext()); break; case VRC_DataStorage.VrcDataType.Int: dataStorage.Set <int>(i, (int)stream.ReceiveNext()); break; case VRC_DataStorage.VrcDataType.Float: dataStorage.Set <float>(i, (float)stream.ReceiveNext()); break; case VRC_DataStorage.VrcDataType.String: dataStorage.Set <string>(i, (string)stream.ReceiveNext()); break; case VRC_DataStorage.VrcDataType.SerializeBytes: case VRC_DataStorage.VrcDataType.SerializeObject: case VRC_DataStorage.VrcDataType.Other: { byte[] value = (byte[])stream.ReceiveNext(); dataStorage.Set <byte[]>(i, value); break; } } } }
// Token: 0x060059FE RID: 23038 RVA: 0x001F45F8 File Offset: 0x001F29F8 public void Set <T>(int index, T value) { VRC_DataStorage.VrcDataElement vrcDataElement = this.dataStorage.data[index]; this.VerifyType <T>(vrcDataElement); if (this.dataHash != null && this.dataHash.Length > index) { this.dataHash[index] = null; } vrcDataElement.added = (vrcDataElement.type == VRC_DataStorage.VrcDataType.None); if (typeof(T) == typeof(bool)) { vrcDataElement.valueBool = (bool)((object)value); switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: this._rainMemory.SetItem <T>(vrcDataElement.name, value); break; case VRC_DataStorage.VrcDataMirror.Animator: if ((bool)((object)value)) { Debug.Log("True"); } this._animator.SetBool(vrcDataElement.name, (bool)((object)value)); break; default: Debug.LogError("Add Data Mirroring."); break; } } else if (typeof(T) == typeof(int)) { vrcDataElement.valueInt = (int)((object)value); switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: this._rainMemory.SetItem <T>(vrcDataElement.name, value); break; case VRC_DataStorage.VrcDataMirror.Animator: this._animator.SetInteger(vrcDataElement.name, (int)((object)value)); break; default: Debug.LogError("Add Data Mirroring."); break; } } else if (typeof(T) == typeof(float)) { vrcDataElement.valueFloat = (float)((object)value); switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: this._rainMemory.SetItem <T>(vrcDataElement.name, value); break; case VRC_DataStorage.VrcDataMirror.Animator: this._animator.SetFloat(vrcDataElement.name, (float)((object)value)); break; default: Debug.LogError("Add Data Mirroring."); break; } } else if (typeof(T) == typeof(string)) { vrcDataElement.valueString = (string)((object)value); switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: this._rainMemory.SetItem <T>(vrcDataElement.name, value); break; case VRC_DataStorage.VrcDataMirror.Animator: Debug.LogError("Cant set animator string"); break; default: Debug.LogError("Add Data Mirroring."); break; } } else if (typeof(T) == typeof(Array) || typeof(T) == typeof(byte[])) { vrcDataElement.valueSerializedBytes = (byte[])((object)value); VRC_DataStorage.VrcDataMirror mirror = vrcDataElement.mirror; if (mirror != VRC_DataStorage.VrcDataMirror.None) { if (mirror != VRC_DataStorage.VrcDataMirror.SerializeComponent) { Debug.LogError("Add Data Mirroring."); } else { vrcDataElement.serializeComponent.SetBytes(vrcDataElement.valueSerializedBytes); } } } else { vrcDataElement.Serialize <T>(value); } }
// Token: 0x060059FC RID: 23036 RVA: 0x001F42CC File Offset: 0x001F26CC public T Get <T>(int index) { VRC_DataStorage.VrcDataElement vrcDataElement = this.dataStorage.data[index]; this.VerifyType <T>(vrcDataElement); if (typeof(T) == typeof(bool)) { switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: vrcDataElement.valueBool = (bool)this._rainMemory.GetItem(vrcDataElement.name); break; case VRC_DataStorage.VrcDataMirror.Animator: vrcDataElement.valueBool = this._animator.GetBool(vrcDataElement.name); break; default: Debug.LogError("Add Data Mirroring."); break; } return((T)((object)vrcDataElement.valueBool)); } if (typeof(T) == typeof(int)) { switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: vrcDataElement.valueInt = (int)this._rainMemory.GetItem(vrcDataElement.name); break; case VRC_DataStorage.VrcDataMirror.Animator: vrcDataElement.valueInt = this._animator.GetInteger(vrcDataElement.name); break; default: Debug.LogError("Add Data Mirroring."); break; } return((T)((object)vrcDataElement.valueInt)); } if (typeof(T) == typeof(float)) { switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: vrcDataElement.valueFloat = (float)this._rainMemory.GetItem(vrcDataElement.name); break; case VRC_DataStorage.VrcDataMirror.Animator: vrcDataElement.valueFloat = this._animator.GetFloat(vrcDataElement.name); break; default: Debug.LogError("Add Data Mirroring."); break; } return((T)((object)vrcDataElement.valueFloat)); } if (typeof(T) == typeof(string)) { switch (vrcDataElement.mirror) { case VRC_DataStorage.VrcDataMirror.None: break; case VRC_DataStorage.VrcDataMirror.Rain: vrcDataElement.valueString = (string)this._rainMemory.GetItem(vrcDataElement.name); break; case VRC_DataStorage.VrcDataMirror.Animator: Debug.LogError("Cant get animator string"); break; default: Debug.LogError("Add Data Mirroring."); break; } return((T)((object)vrcDataElement.valueString)); } if (typeof(T) == typeof(Array) || typeof(T) == typeof(byte[])) { VRC_DataStorage.VrcDataMirror mirror = vrcDataElement.mirror; if (mirror != VRC_DataStorage.VrcDataMirror.None) { if (mirror != VRC_DataStorage.VrcDataMirror.SerializeComponent) { Debug.LogError("Add Data Mirroring."); } else { byte[] bytes = vrcDataElement.serializeComponent.GetBytes(); vrcDataElement.valueSerializedBytes = bytes; } } return((T)((object)vrcDataElement.valueSerializedBytes)); } T result; vrcDataElement.Deserialize <T>(out result); return(result); }