public static uint PackSigned(uint bitmask, float value) { float num = bitmask >> 1; float min = -num - 1f; return((uint)((int)PackUtils.ClampAndRound(value, min, num) & (int)bitmask)); }
public static uint PackSNorm(uint bitmask, float value) { float num = bitmask >> 1; value *= num; return((uint)((int)PackUtils.ClampAndRound(value, -num, num) & (int)bitmask)); }
public static uint PackSNorm(uint bitmask, float value) { float single = (float)((float)(bitmask >> 1)); value = value * single; return((uint)PackUtils.ClampAndRound(value, -single, single) & bitmask); }
public static uint PackSigned(uint bitmask, float value) { float single = (float)((float)(bitmask >> 1)); float single1 = -single - 1f; return((uint)PackUtils.ClampAndRound(value, single1, single) & bitmask); }
private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW) { uint num = PackUtils.PackUNorm(255f, vectorX); uint num2 = PackUtils.PackUNorm(255f, vectorY) << 8; uint num3 = PackUtils.PackUNorm(255f, vectorZ) << 16; uint num4 = PackUtils.PackUNorm(255f, vectorW) << 24; return(num | num2 | num3 | num4); }
private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW) { uint num4 = PackUtils.PackUNorm(255f, vectorX); uint num3 = PackUtils.PackUNorm(255f, vectorY) << 8; uint num2 = PackUtils.PackUNorm(255f, vectorZ) << 0x10; uint num = PackUtils.PackUNorm(255f, vectorW) << 0x18; return(((num4 | num3) | num2) | num); }
public Vector3 ToVector3() { Vector3 vector; vector.X = PackUtils.UnpackUNorm(0xff, this.packedValue); vector.Y = PackUtils.UnpackUNorm(0xff, this.packedValue >> 8); vector.Z = PackUtils.UnpackUNorm(0xff, this.packedValue >> 0x10); return(vector); }
public Vector3 ToVector3() { Vector3 result; result.X = PackUtils.UnpackUNorm(255u, this.packedValue); result.Y = PackUtils.UnpackUNorm(255u, this.packedValue >> 8); result.Z = PackUtils.UnpackUNorm(255u, this.packedValue >> 24); return(result); }
/// <summary> /// 获取该对象的ColorF表示 /// </summary> /// <returns>对象的ColorF表示</returns> public ColorF ToColorF() { ColorF colorF; colorF.R = PackUtils.UnpackUNorm(0xff, this.packedValue); colorF.G = PackUtils.UnpackUNorm(0xff, this.packedValue >> 8); colorF.B = PackUtils.UnpackUNorm(0xff, this.packedValue >> 0x10); colorF.A = PackUtils.UnpackUNorm(0xff, this.packedValue >> 0x18); return(colorF); }
/// <summary> /// 颜色的线性插值 /// </summary> /// <param name="value1">颜色四元组</param> /// <param name="value2">颜色四元组</param> /// <param name="amount">插值因子</param> /// <returns>颜色四元组</returns> public static Color32 Lerp(Color32 value1, Color32 value2, float amount) { Color32 color; uint packedValue = value1.packedValue; uint num2 = value2.packedValue; int num7 = (byte)packedValue; int num6 = (byte)(packedValue >> 8); int num5 = (byte)(packedValue >> 0x10); int num4 = (byte)(packedValue >> 0x18); int num15 = (byte)num2; int num14 = (byte)(num2 >> 8); int num13 = (byte)(num2 >> 0x10); int num12 = (byte)(num2 >> 0x18); int num = (int)PackUtils.PackUNorm(65536f, amount); int num11 = num7 + (((num15 - num7) * num) >> 0x10); int num10 = num6 + (((num14 - num6) * num) >> 0x10); int num9 = num5 + (((num13 - num5) * num) >> 0x10); int num8 = num4 + (((num12 - num4) * num) >> 0x10); color.packedValue = (uint)(((num11 | (num10 << 8)) | (num9 << 0x10)) | (num8 << 0x18)); return(color); }
public static Color Lerp(Color value1, Color value2, float amount) { uint num = value1.packedValue; uint num2 = value2.packedValue; int num3 = (int)((byte)num); int num4 = (int)((byte)(num >> 8)); int num5 = (int)((byte)(num >> 16)); int num6 = (int)((byte)(num >> 24)); int num7 = (int)((byte)num2); int num8 = (int)((byte)(num2 >> 8)); int num9 = (int)((byte)(num2 >> 16)); int num10 = (int)((byte)(num2 >> 24)); int num11 = (int)PackUtils.PackUNorm(65536f, amount); int num12 = num3 + ((num7 - num3) * num11 >> 16); int num13 = num4 + ((num8 - num4) * num11 >> 16); int num14 = num5 + ((num9 - num5) * num11 >> 16); int num15 = num6 + ((num10 - num6) * num11 >> 16); Color result; result.packedValue = (uint)(num12 | num13 << 8 | num14 << 16 | num15 << 24); return(result); }
public void MakePackage() { string logFile = QQnPath.Combine(LoggerPath, "QQn.TurtleMSBuild.tbLog"); if (!File.Exists(logFile)) { BuildInternal(); } TBLogFile log = TBLogFile.Load(logFile); Assert.That(!string.IsNullOrEmpty(log.Project.Name)); DebugReference reference = null; foreach (TBLogItem item in log.Configurations[0].ProjectOutput.Items) { if (!item.IsShared && !item.IsCopy) { switch (Path.GetExtension(item.Src).ToUpperInvariant()) { case ".PDB": case ".DLL": if (reference == null) { reference = AssemblyUtils.GetDebugReference(item.FullSrc); Assert.That(reference, Is.Not.Null); Assert.That(reference.PdbFile, Is.Not.Null); } else { DebugReference dr = AssemblyUtils.GetDebugReference(item.FullSrc); Assert.That(dr, Is.Not.Null); // Path does not have to equal; the pdb information contains the sourcepath (obj directory for c# code) Assert.That(Path.GetFileName(dr.PdbFile), Is.EqualTo(Path.GetFileName(reference.PdbFile))); Assert.That(dr.DebugId, Is.EqualTo(reference.DebugId)); } break; } } } Pack pack = null; Assert.That(PackUtils.TryCreatePack(log, out pack)); string path = QQnPath.Combine(PackagePath, "QQn.TurtleMSBuild.tpZip"); TPack tp = TPack.Create(path, pack); using (TPack pkg = TPack.OpenFrom(path, VerificationMode.Full)) using (DirectoryMap dm = DirectoryMap.Get(ExtractPath)) { Assert.That(pkg, Is.Not.Null); pkg.ExtractTo(dm); } using (TPack pkg = TPack.OpenFrom(path, VerificationMode.Full)) { Assert.That(pkg, Is.Not.Null); pkg.ExtractTo(ExtractPath); } }
public static uint PackUnsigned(float bitmask, float value) { return((uint)PackUtils.ClampAndRound(value, 0f, bitmask)); }
public static uint PackUNorm(float bitmask, float value) { value *= bitmask; return((uint)PackUtils.ClampAndRound(value, 0f, bitmask)); }