- // Copyright (c) Microsoft Corporation. All rights reserved.
- // Licensed under the MIT License. See LICENSE in the project root for license information.
-
- namespace HoloToolkit.Sharing.SyncModel
- {
- /// <summary>
- /// This class implements the string primitive for the syncing system.
- /// It does the heavy lifting to make adding new strings to a class easy.
- /// </summary>
- public class SyncString : SyncPrimitive
- {
- private StringElement element;
- private string value = "";
-
- #if UNITY_EDITOR
- public override object RawValue
- {
- get { return value; }
- }
- #endif
-
- public string Value
- {
- get { return value; }
-
- set
- {
- // Has the value actually changed?
- if (this.value != value)
- {
- // Change the value
- this.value = value;
-
- if (element != null)
- {
- // Notify network that the value has changed
- element.SetValue(new XString(value));
- }
- }
- }
- }
-
- public SyncString(string field) : base(field) { }
-
- public override void InitializeLocal(ObjectElement parentElement)
- {
- element = parentElement.CreateStringElement(XStringFieldName, new XString(value));
- NetworkElement = element;
- }
-
- public void AddFromLocal(ObjectElement parentElement, string localValue)
- {
- InitializeLocal(parentElement);
- Value = localValue;
- }
-
- public override void AddFromRemote(Element remoteElement)
- {
- NetworkElement = remoteElement;
- element = StringElement.Cast(remoteElement);
- value = element.GetValue().GetString();
- }
-
- public override void UpdateFromRemote(XString remoteValue)
- {
- value = remoteValue.GetString();
- }
- }
- }