/// <summary> /// Decode (decompresss) and restore an element that was compressed by this crusher. /// </summary> public Element Decompress(CompressedElement compressed) { if (!cached) { CacheValues(); } if (_trsType == TRSType.Scale && uniformAxes != UniformAxes.NonUniform) { float val = ucrusher.Decompress((uint)compressed.cx); 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(compressed.cQuat)); } else { // Issue log error for trying to write more than 64 bits to the ulong buffer FloatCrusherUtilities.CheckBitCount(cache_TotalBits[0], 64); return(new Vector3( cache_xEnabled ? (xcrusher.Decompress((uint)compressed.cx)) : 0, cache_yEnabled ? (ycrusher.Decompress((uint)compressed.cy)) : 0, cache_zEnabled ? (zcrusher.Decompress((uint)compressed.cz)) : 0 )); } }
//public static implicit operator PackedValue(CompressedValue cv) { return new PackedValue(cv.cvalue, cv.bits); } //[System.Obsolete("PackedValue is slated to be removed.")] //public static implicit operator PackedValue(CompressedQuat cv) { return new PackedValue(cv.cvalue, cv.crusher.Bits); } public Quaternion Decompress() { return(crusher.Decompress(cvalue)); }