public void WriteIntInRange(int value, int minInclusive, int maxInclusive) { value = Mathf.Clamp(value, minInclusive, maxInclusive); var bits = BitUtil.ComputeRequiredIntBits(minInclusive, maxInclusive); _bitsWritten += bits; }
public static float QuantizeFloat(float value, float min, float max, float precision = 0.1f) { value = Mathf.Clamp(value, min, max); var inv = 1 / precision; var bits = BitUtil.ComputeRequiredIntBits((int)(min * inv), (int)(max * inv)); var mask = (uint)((1L << bits) - 1); var data = (uint)((int)(value * inv) - (int)(min * inv)) & mask; return((data + (int)(min * inv)) * precision); }
public void WriteIntInRange(int value, int minInclusive, int maxInclusive) { #if UNITY_EDITOR if (value < minInclusive || value > maxInclusive) { Debug.LogWarning("Clamped value " + value + " to (" + minInclusive + "," + maxInclusive + ")"); } #endif value = Mathf.Clamp(value, minInclusive, maxInclusive); var bits = BitUtil.ComputeRequiredIntBits(minInclusive, maxInclusive); var data = (uint)(value - minInclusive) & (uint)((1L << bits) - 1); WriteBits(data, bits); }
public int ReadIntInRange(int minInclusive, int maxInclusive) { var bits = BitUtil.ComputeRequiredIntBits(minInclusive, maxInclusive); return((int)(ReadBits(bits) + minInclusive)); }