当前位置: 首页>>代码示例>>C#>>正文


C# BitPack.UnpackUBits方法代码示例

本文整理汇总了C#中OpenMetaverse.BitPack.UnpackUBits方法的典型用法代码示例。如果您正苦于以下问题:C# BitPack.UnpackUBits方法的具体用法?C# BitPack.UnpackUBits怎么用?C# BitPack.UnpackUBits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在OpenMetaverse.BitPack的用法示例。


在下文中一共展示了BitPack.UnpackUBits方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ParticleSystem

            /// <summary>
            /// Decodes a byte[] array into a ParticleSystem Object
            /// </summary>
            /// <param name="data">ParticleSystem object</param>
            /// <param name="pos">Start position for BitPacker</param>
            public ParticleSystem(byte[] data, int pos)
            {
                // TODO: Not sure exactly how many bytes we need here, so partial
                // (truncated) data will cause an exception to be thrown
                if (data.Length > 0)
                {
                    BitPack pack = new BitPack(data, pos);

                    CRC = pack.UnpackUBits(32);
                    PartFlags = pack.UnpackUBits(32);
                    Pattern = (SourcePattern)pack.UnpackByte();
                    MaxAge = pack.UnpackFixed(false, 8, 8);
                    StartAge = pack.UnpackFixed(false, 8, 8);
                    InnerAngle = pack.UnpackFixed(false, 3, 5);
                    OuterAngle = pack.UnpackFixed(false, 3, 5);
                    BurstRate = pack.UnpackFixed(false, 8, 8);
                    BurstRadius = pack.UnpackFixed(false, 8, 8);
                    BurstSpeedMin = pack.UnpackFixed(false, 8, 8);
                    BurstSpeedMax = pack.UnpackFixed(false, 8, 8);
                    BurstPartCount = pack.UnpackByte();
                    float x = pack.UnpackFixed(true, 8, 7);
                    float y = pack.UnpackFixed(true, 8, 7);
                    float z = pack.UnpackFixed(true, 8, 7);
                    AngularVelocity = new Vector3(x, y, z);
                    x = pack.UnpackFixed(true, 8, 7);
                    y = pack.UnpackFixed(true, 8, 7);
                    z = pack.UnpackFixed(true, 8, 7);
                    PartAcceleration = new Vector3(x, y, z);
                    Texture = pack.UnpackUUID();
                    Target = pack.UnpackUUID();

                    PartDataFlags = (ParticleDataFlags)pack.UnpackUBits(32);
                    PartMaxAge = pack.UnpackFixed(false, 8, 8);
                    byte r = pack.UnpackByte();
                    byte g = pack.UnpackByte();
                    byte b = pack.UnpackByte();
                    byte a = pack.UnpackByte();
                    PartStartColor = new Color4(r, g, b, a);
                    r = pack.UnpackByte();
                    g = pack.UnpackByte();
                    b = pack.UnpackByte();
                    a = pack.UnpackByte();
                    PartEndColor = new Color4(r, g, b, a);
                    PartStartScaleX = pack.UnpackFixed(false, 3, 5);
                    PartStartScaleY = pack.UnpackFixed(false, 3, 5);
                    PartEndScaleX = pack.UnpackFixed(false, 3, 5);
                    PartEndScaleY = pack.UnpackFixed(false, 3, 5);
                }
                else
                {
                    CRC = PartFlags = 0;
                    Pattern = SourcePattern.None;
                    MaxAge = StartAge = InnerAngle = OuterAngle = BurstRate = BurstRadius = BurstSpeedMin =
                        BurstSpeedMax = 0.0f;
                    BurstPartCount = 0;
                    AngularVelocity = PartAcceleration = Vector3.Zero;
                    Texture = Target = UUID.Zero;
                    PartDataFlags = ParticleDataFlags.None;
                    PartMaxAge = 0.0f;
                    PartStartColor = PartEndColor = Color4.Black;
                    PartStartScaleX = PartStartScaleY = PartEndScaleX = PartEndScaleY = 0.0f;
                }
            }
开发者ID:3di,项目名称:3di-viewer-rei-libs,代码行数:68,代码来源:ParticleSystem.cs

示例2: UnpackLegacyData

 void UnpackLegacyData(ref BitPack pack)
 {
     PartDataFlags = (ParticleDataFlags)pack.UnpackUBits(32);
     PartMaxAge = pack.UnpackFixed(false, 8, 8);
     byte r = pack.UnpackByte();
     byte g = pack.UnpackByte();
     byte b = pack.UnpackByte();
     byte a = pack.UnpackByte();
     PartStartColor = new Color4(r, g, b, a);
     r = pack.UnpackByte();
     g = pack.UnpackByte();
     b = pack.UnpackByte();
     a = pack.UnpackByte();
     PartEndColor = new Color4(r, g, b, a);
     PartStartScaleX = pack.UnpackFixed(false, 3, 5);
     PartStartScaleY = pack.UnpackFixed(false, 3, 5);
     PartEndScaleX = pack.UnpackFixed(false, 3, 5);
     PartEndScaleY = pack.UnpackFixed(false, 3, 5);
 }
开发者ID:skidzTweak,项目名称:libopenmetaverse,代码行数:19,代码来源:ParticleSystem.cs

示例3: UnpackSystem

 void UnpackSystem(ref BitPack pack)
 {
     CRC = pack.UnpackUBits(32);
     PartFlags = pack.UnpackUBits(32);
     Pattern = (SourcePattern)pack.UnpackByte();
     MaxAge = pack.UnpackFixed(false, 8, 8);
     StartAge = pack.UnpackFixed(false, 8, 8);
     InnerAngle = pack.UnpackFixed(false, 3, 5);
     OuterAngle = pack.UnpackFixed(false, 3, 5);
     BurstRate = pack.UnpackFixed(false, 8, 8);
     BurstRadius = pack.UnpackFixed(false, 8, 8);
     BurstSpeedMin = pack.UnpackFixed(false, 8, 8);
     BurstSpeedMax = pack.UnpackFixed(false, 8, 8);
     BurstPartCount = pack.UnpackByte();
     float x = pack.UnpackFixed(true, 8, 7);
     float y = pack.UnpackFixed(true, 8, 7);
     float z = pack.UnpackFixed(true, 8, 7);
     AngularVelocity = new Vector3(x, y, z);
     x = pack.UnpackFixed(true, 8, 7);
     y = pack.UnpackFixed(true, 8, 7);
     z = pack.UnpackFixed(true, 8, 7);
     PartAcceleration = new Vector3(x, y, z);
     Texture = pack.UnpackUUID();
     Target = pack.UnpackUUID();
 }
开发者ID:skidzTweak,项目名称:libopenmetaverse,代码行数:25,代码来源:ParticleSystem.cs

示例4: ParticleSystem

            /// <summary>
            /// Decodes a byte[] array into a ParticleSystem Object
            /// </summary>
            /// <param name="data">ParticleSystem object</param>
            /// <param name="pos">Start position for BitPacker</param>
            public ParticleSystem(byte[] data, int pos)
            {
                PartStartGlow = 0f;
                PartEndGlow = 0f;
                BlendFuncSource = (byte)BlendFunc.SourceAlpha;
                BlendFuncDest = (byte)BlendFunc.OneMinusSourceAlpha;

                CRC = PartFlags = 0;
                Pattern = SourcePattern.None;
                MaxAge = StartAge = InnerAngle = OuterAngle = BurstRate = BurstRadius = BurstSpeedMin =
                    BurstSpeedMax = 0.0f;
                BurstPartCount = 0;
                AngularVelocity = PartAcceleration = Vector3.Zero;
                Texture = Target = UUID.Zero;
                PartDataFlags = ParticleDataFlags.None;
                PartMaxAge = 0.0f;
                PartStartColor = PartEndColor = Color4.Black;
                PartStartScaleX = PartStartScaleY = PartEndScaleX = PartEndScaleY = 0.0f;

                int size = data.Length - pos;
                BitPack pack = new BitPack(data, pos);

                if (size == LegacyDataBlockSize)
                {
                    UnpackSystem(ref pack);
                    UnpackLegacyData(ref pack);
                }
                else if (size > LegacyDataBlockSize && size <= MaxDataBlockSize)
                {
                    int sysSize = pack.UnpackBits(32);
                    if (sysSize != SysDataSize) return; // unkown particle system data size
                    UnpackSystem(ref pack);
                    int dataSize = pack.UnpackBits(32);
                    UnpackLegacyData(ref pack);

                    if ((PartDataFlags & ParticleDataFlags.DataGlow) == ParticleDataFlags.DataGlow)
                    {
                        if (pack.Data.Length - pack.BytePos < 2) return;
                        uint glow = pack.UnpackUBits(8);
                        PartStartGlow = glow / 255f;
                        glow = pack.UnpackUBits(8);
                        PartEndGlow = glow / 255f;
                    }

                    if ((PartDataFlags & ParticleDataFlags.DataBlend) == ParticleDataFlags.DataBlend)
                    {
                        if (pack.Data.Length - pack.BytePos < 2) return;
                        BlendFuncSource = (byte)pack.UnpackUBits(8);
                        BlendFuncDest = (byte)pack.UnpackUBits(8);
                    }

                }
            }
开发者ID:skidzTweak,项目名称:libopenmetaverse,代码行数:58,代码来源:ParticleSystem.cs


注:本文中的OpenMetaverse.BitPack.UnpackUBits方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。