예제 #1
0
        public Element Decompress(ulong cval)
        {
            if (!cached)
            {
                CacheValues();
            }

            if (_trsType == TRSType.Scale && uniformAxes != UniformAxes.NonUniform)
            {
                float val = ucrusher.Decompress((uint)cval);
                return(new Vector3(val, val, val));
            }
            else if (_trsType == TRSType.Quaternion)
            {
                //Debug.Log("We should not see this! Quats should be getting called to DecompressToQuat");
                return(qcrusher.Decompress(cval));
            }
            else
            {
                // Issue log error for trying to write more than 64 bits to the ulong buffer
                FloatCrusherUtilities.CheckBitCount(cache_TotalBits[0], 64);

                int bitposition = 0;
                return(new Vector3(
                           cache_xEnabled ? (xcrusher.ReadAndDecompress(ref cval, ref bitposition)) : 0,
                           cache_yEnabled ? (ycrusher.ReadAndDecompress(ref cval, ref bitposition)) : 0,
                           cache_zEnabled ? (zcrusher.ReadAndDecompress(ref cval, ref bitposition)) : 0
                           ));
            }
        }