void ReadFloat(IO.EndianReader s) { switch (TypeDesc.SizeOf) { case sizeof(float): { if (ArrayLength == 1) { Single = s.ReadSingle(); } else { var array = new float[ArrayLength]; for (int x = 0; x < array.Length; x++) { array[x] = s.ReadSingle(); } OpaqueArrayRef = array; } } break; case sizeof(double): { if (ArrayLength == 1) { Double = s.ReadDouble(); } else { var array = new double[ArrayLength]; for (int x = 0; x < array.Length; x++) { array[x] = s.ReadDouble(); } OpaqueArrayRef = array; } } break; default: throw new KSoft.Debug.UnreachableException(TypeDesc.SizeOf.ToString()); } }