Beispiel #1
0
 protected virtual void WriteText(TextMeshProBroadcasterChangeType changeType, BinaryWriter message)
 {
     if (HasFlag(changeType, TextMeshProBroadcasterChangeType.Text))
     {
         message.Write(textMesh.text);
     }
     if (HasFlag(changeType, TextMeshProBroadcasterChangeType.FontAndPlacement))
     {
         previousProperties.Write(message);
     }
 }
Beispiel #2
0
        protected override TextMeshProBroadcasterChangeType CalculateDeltaChanges()
        {
            TextMeshProBroadcasterChangeType change = TextMeshProBroadcasterChangeType.None;
            string newText = this.textMesh.text;

            if (previousText != newText)
            {
                change      |= TextMeshProBroadcasterChangeType.Text;
                previousText = newText;
            }
            if (!previousProperties.IsCached(textMesh))
            {
                change            |= TextMeshProBroadcasterChangeType.FontAndPlacement;
                previousProperties = new TextMeshProperties(textMesh);
            }

            return(change);
        }
        public override void Read(SocketEndpoint sendingEndpoint, BinaryReader message)
        {
#if STATESYNC_TEXTMESHPRO
            EnsureTextComponent();

            TextMeshProBroadcasterChangeType changeType = (TextMeshProBroadcasterChangeType)message.ReadByte();

            if (HasFlag(changeType, TextMeshProBroadcasterChangeType.Text))
            {
                TextMeshObserver.SetText(message.ReadString());
            }

            if (HasFlag(changeType, TextMeshProBroadcasterChangeType.FontAndPlacement))
            {
                AssetId fontId = message.ReadAssetId();
                TextMeshObserver.font = TextMeshProService.Instance.GetFont(fontId);

                bool[] values = Unpack(message.ReadByte());
                TextMeshObserver.autoSizeTextContainer = values[0];
                TextMeshObserver.enableAutoSizing      = values[1];
                TextMeshObserver.enableCulling         = values[2];
                TextMeshObserver.enabled               = values[3];
                TextMeshObserver.enableKerning         = values[4];
                TextMeshObserver.enableWordWrapping    = values[5];
                TextMeshObserver.extraPadding          = values[6];
                TextMeshObserver.ignoreRectMaskCulling = values[7];

                values = Unpack(message.ReadByte());
                TextMeshObserver.ignoreVisibility    = values[0];
                TextMeshObserver.isOrthographic      = values[1];
                TextMeshObserver.isOverlay           = values[2];
                TextMeshObserver.isRightToLeftText   = values[3];
                TextMeshObserver.isVolumetricText    = values[4];
                TextMeshObserver.maskable            = values[5];
                TextMeshObserver.overrideColorTags   = values[6];
                TextMeshObserver.parseCtrlCharacters = values[7];

                values = Unpack(message.ReadByte());
                TextMeshObserver.richText               = values[0];
                TextMeshObserver.tintAllSprites         = values[1];
                TextMeshObserver.useMaxVisibleDescender = values[2];

                TextMeshObserver.alignment                = (TextAlignmentOptions)message.ReadInt32();
                TextMeshObserver.alpha                    = message.ReadSingle();
                TextMeshObserver.color                    = message.ReadColor();
                TextMeshObserver.characterSpacing         = message.ReadSingle();
                TextMeshObserver.characterWidthAdjustment = message.ReadSingle();
                TextMeshObserver.faceColor                = message.ReadColor32();
                TextMeshObserver.firstVisibleCharacter    = message.ReadInt32();
                TextMeshObserver.fontSize                 = message.ReadSingle();
                TextMeshObserver.fontSizeMax              = message.ReadSingle();
                TextMeshObserver.fontSizeMin              = message.ReadSingle();
                TextMeshObserver.fontStyle                = (FontStyles)message.ReadInt32();
                TextMeshObserver.fontWeight               = (FontWeight)message.ReadInt32();
                TextMeshObserver.horizontalMapping        = (TextureMappingOptions)message.ReadByte();
                TextMeshObserver.lineSpacing              = message.ReadSingle();
                TextMeshObserver.lineSpacingAdjustment    = message.ReadSingle();
                TextMeshObserver.mappingUvLineOffset      = message.ReadSingle();
                TextMeshObserver.margin                   = message.ReadVector4();
                TextMeshObserver.maxVisibleCharacters     = message.ReadInt32();
                TextMeshObserver.maxVisibleLines          = message.ReadInt32();
                TextMeshObserver.maxVisibleWords          = message.ReadInt32();
                TextMeshObserver.outlineColor             = message.ReadColor32();
                TextMeshObserver.outlineWidth             = message.ReadSingle();
                TextMeshObserver.overflowMode             = (TextOverflowModes)message.ReadByte();
                TextMeshObserver.pageToDisplay            = message.ReadInt32();
                TextMeshObserver.paragraphSpacing         = message.ReadSingle();
                TextMeshObserver.renderMode               = (TextRenderFlags)message.ReadByte();
                TextMeshObserver.verticalMapping          = (TextureMappingOptions)message.ReadByte();
                TextMeshObserver.wordWrappingRatios       = message.ReadSingle();
                TextMeshObserver.wordSpacing              = message.ReadSingle();

                needsUpdate = true;
            }
#endif
        }
 public static bool HasFlag(TextMeshProBroadcasterChangeType changeType, TextMeshProBroadcasterChangeType flag)
 {
     return((changeType & flag) == flag);
 }
Beispiel #5
0
        protected override void SendDeltaChanges(IEnumerable <SocketEndpoint> endpoints, TextMeshProBroadcasterChangeType changeFlags)
        {
            using (MemoryStream memoryStream = new MemoryStream())
                using (BinaryWriter message = new BinaryWriter(memoryStream))
                {
                    ComponentBroadcasterService.WriteHeader(message, this);

                    message.Write((byte)changeFlags);
                    WriteText(changeFlags, message);

                    message.Flush();
                    StateSynchronizationSceneManager.Instance.Send(endpoints, memoryStream.ToArray());
                }
        }
Beispiel #6
0
 protected override void SendDeltaChanges(IEnumerable <SocketEndpoint> endpoints, TextMeshProBroadcasterChangeType changeFlags)
 {
     throw new NotImplementedException();
 }
Beispiel #7
0
 protected override bool HasChanges(TextMeshProBroadcasterChangeType changeFlags)
 {
     throw new NotImplementedException();
 }
Beispiel #8
0
 protected override bool HasChanges(TextMeshProBroadcasterChangeType changeFlags)
 {
     return(changeFlags != TextMeshProBroadcasterChangeType.None);
 }
Beispiel #9
0
        protected override void SendDeltaChanges(IEnumerable <INetworkConnection> connections, TextMeshProBroadcasterChangeType changeFlags)
        {
            using (MemoryStream memoryStream = new MemoryStream())
                using (BinaryWriter message = new BinaryWriter(memoryStream))
                {
                    ComponentBroadcasterService.WriteHeader(message, this);

                    message.Write((byte)changeFlags);
                    WriteText(changeFlags, message);

                    message.Flush();
                    StateSynchronizationSceneManager.Instance.Send(connections, memoryStream.GetBuffer(), 0, memoryStream.Position);
                }
        }
 protected override void SendDeltaChanges(IEnumerable <INetworkConnection> connections, TextMeshProBroadcasterChangeType changeFlags)
 {
     throw new NotImplementedException();
 }