3 namespace droid.Runtime.Utilities.GameObjects.NeodroidCamera.Synthesis {
7 public static class ColorEncoding {
13 public static byte ReverseBits(byte value) {
14 return (byte)((value * 0x0202020202 & 0x010884422010) % 1023);
23 public static int SparsifyBits(byte value,
int sparse) {
25 for (var bits = 0; bits < 8; bits++, value >>= 1) {
26 ret_val |= (value & 1);
30 return ret_val >> sparse;
38 public static Color EncodeIdAsColor(
int instance_id) {
39 var uid = instance_id * 2;
44 var sid = (SparsifyBits((byte)(uid >> 16), 3) << 2)
45 | (SparsifyBits((byte)(uid >> 8), 3) << 1)
46 | SparsifyBits((byte)(uid), 3);
49 var r = (byte)(sid >> 8);
50 var g = (byte)(sid >> 16);
54 return new Color32(r, g, b, 255);
63 public static Color EncodeTagHashCodeAsColor(
int hash) {
65 var r = (byte)(hash >> 16);
66 var g = (byte)(hash >> 8);
68 return new Color32(r, g, b, 255);
77 public static Color EncodeLayerAsColor(
int layer,
float z = .7f) {
85 var unique_colors =
new[] {
86 new Color(1, 1, 1, 1),
87 new Color(z, z, z, 1),
88 new Color(1, 1, z, 1),
89 new Color(1, z, 1, 1),
90 new Color(z, 1, 1, 1),
91 new Color(1, z, 0, 1),
92 new Color(z, 0, 1, 1),
93 new Color(0, 1, z, 1),
95 new Color(1, 0, 0, 1),
96 new Color(0, 1, 0, 1),
97 new Color(0, 0, 1, 1),
98 new Color(1, 1, 0, 1),
99 new Color(1, 0, 1, 1),
100 new Color(0, 1, 1, 1),
101 new Color(1, z, z, 1),
102 new Color(z, 1, z, 1)
107 var color = unique_colors[layer % unique_colors.Length];
108 var divider = 1.0f + Mathf.Floor(layer / unique_colors.Length);