public static InstantiationData Build(SyncTokenType tokenType) { return(new InstantiationData { tokenType = tokenType }); }
/// <summary> /// Tries to parse value into sync token. /// </summary> /// <param name="value">Value to parse.</param> /// <param name="tokenType">Token type.</param> /// <param name="token">out SyncToken.</param> /// <returns></returns> public static bool TryParseFromUrl(string value, SyncTokenType tokenType, out ISyncToken token) { token = null; if (string.IsNullOrEmpty(value)) { return(false); } int startIndex = value.IndexOf(SyncToken.GetTokenPrefix(tokenType), StringComparison.OrdinalIgnoreCase); if (startIndex == -1) { return(false); } int endIndex = startIndex + SyncToken.GetTokenPrefix(tokenType).Length; string tokenValue = value.Substring(endIndex); if (tokenValue.IndexOf("&", StringComparison.Ordinal) != -1) { tokenValue = tokenValue.Split('&')[0]; } token = new SyncToken(tokenValue, tokenType); return(true); }
/// <summary> /// Setup by /// TokenHandler LOCALly /// or /// using data received from TransmissionBase.OnEnable /// </summary> /// <param name="insData"></param> public void Setup(InstantiationData insData) { tType = insData.tokenType; Debug.Log($"TransmissionBase {gameObject.name} Setup. photonView.IsMine:{photonView.IsMine} {insData}"); // get tokenUser from ObjectSupplier switch (tType) { case SyncTokenType.Player: playerCoreAdditive.Init(insData, photonView.IsMine); break; default: case SyncTokenType.General: Debug.LogWarning("TransmissionBase Setup General"); roomCoreAdditive.Init(insData, photonView.IsMine); break; } // Setup SerializableReadWrite var sData = refObj?.GetComponent <ISyncHandlerUser>()?.SerializableReadWrite; if (sData != null) { Register(sData); } else { Debug.LogWarning($"TransmissionBase {gameObject.name}: No TokenUser/ no SerializableReadWrite for Sync!"); } started = true; }
public object RequestTokenHandler(SyncTokenType tokenType, object refObj) { var go = Instantiate(NetworkSyncHandler, (refObj as GameObject).transform); var handUser = go.GetComponent <ISyncHandlerUser>(); go.GetComponent <ITokenHandler>()?.Setup(this, handUser); return(go); }
public InstantiationData(object[] data) { tokenType = (SyncTokenType)data[0]; //(i, i+1), i=1 for (int i = 1; i < data.Length; i += 2) { this[(string)data[i]] = data[i + 1]; } }
public void UpdateProperties(SyncTokenType stType, string key, object data) { switch (stType) { case SyncTokenType.Player: statHelper.UpdatePlayerProperties(key, data); break; default: case SyncTokenType.General: _ = statHelper.UpdateRoomProperties(key, data); break; } }
public ITokenHandler RequestTokenHandlerAttachment(SyncTokenType tokenType, object refScript) { Debug.LogWarning($"RequestTokenHandler Try AttachToGameObject"); var go = (refScript as Component).gameObject; if (go == null) { Debug.LogWarning($"RequestTokenHandler {refScript} is NOT AttachToGameObject"); return(null); } var handUser = go.GetComponent <ISyncHandlerUser>(); var res = go.AddComponent <TokenHandler>(); res.Setup(this, handUser); return(res); }
/// <summary> /// Get token prefix. /// </summary> /// <param name="tokenType">Type of token to retrieve prefix for.</param> /// <returns></returns> private static string GetTokenPrefix(SyncTokenType tokenType) { return(tokenType == SyncTokenType.DeltaToken ? "deltatoken=" : "skiptoken="); }
/// <summary> /// Create new instance of <see cref="SyncToken"/> /// </summary> /// <param name="rawToken"></param> /// <param name="tokenType"></param> public SyncToken(string rawToken, SyncTokenType tokenType) { ArgumentValidator.ThrowIfNullOrEmpty(rawToken, nameof(rawToken)); this.Value = rawToken; this.Type = tokenType; }
/// <summary> /// Tries to parse value of Url query into <see cref="ISyncToken"/> /// </summary> /// <param name="url"></param> /// <param name="tokenType"></param> /// <param name="token"></param> /// <returns></returns> public static bool TryParseFromUrl(Uri url, SyncTokenType tokenType, out ISyncToken token) { return(SyncToken.TryParseFromUrl(url.Query, tokenType, out token)); }