/// <returns> /// Result other than 0 means that this point lies directly on a border between two neighbouring cells. /// And thus it must be determined to which of the cells this point will fall into. This method provides an index offset to solve just that. /// </returns> public static int IsPointBetweenCells(FLOAT point, INT width, FLOAT worldSize) { float cellSize = worldSize / (float)width; float cellFraction = (point % cellSize) / cellSize; bool isMiddlePoint = AboutEqual(cellFraction, 1f); return(isMiddlePoint ? (point < 0f?-1:1) : 0); }
/// <summary> </summary> public static void GetPositionInsideCell ( FLOAT point, INT numCells, FLOAT worldSize, out int lowerCell, out int upperCell, out float normalizedPositionBetweenThoseTwoPoints ) { float cellSize = worldSize / (float)numCells; float cellFraction = point / cellSize; lowerCell = cellSize < 0f ? (int)math.ceil(cellFraction) : (int)math.floor(cellFraction); upperCell = lowerCell < 0 ? lowerCell - 1 : lowerCell + 1; normalizedPositionBetweenThoseTwoPoints = (point - (float)lowerCell * cellSize) / cellSize; }
public D2D1_BRUSH_PROPERTIES(FLOAT opacity, D2D1_MATRIX_3X2_F transform) { this.opacity = opacity; this.transform = transform; }
public static float2 Index2dToPoint(INT2 i2, FLOAT stepX, FLOAT stepY) => Index2dToPoint(i2.x, i2.y, stepX, stepY);
/// <summary> Point from 2d indices </summary> public static float2 Index2dToPoint(INT x, INT y, FLOAT stepX, FLOAT stepY) => new float2 { x = (float)x * stepX, y = (float)y * stepY };
/// <summary> System.Math.Round( value, System.MidpointRounding.AwayFromZero ) equivalent </summary> public static float MidpointRoundingAwayFromZero(FLOAT value, FLOAT step) => (float)MidpointRoundingAwayFromZero(value / step) * step;
/// <summary> System.Math.Round( value, System.MidpointRounding.AwayFromZero ) equivalent </summary> public static int MidpointRoundingAwayFromZero(FLOAT value) => (int)(value + (value < 0f ? -0.5f : 0.5f));
private static FIELD CreateNewField(BinaryReader br, int index, int fieldOffset, int dataOrDataOffset, GffFieldType fieldType) { FIELD data; switch (fieldType) { case GffFieldType.BYTE: data = new BYTE(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CHAR: data = new CHAR(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.WORD: data = new WORD(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.SHORT: data = new SHORT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DWORD: data = new DWORD(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.INT: data = new INT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DWORD64: data = new DWORD64(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.INT64: data = new INT64(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.FLOAT: data = new FLOAT(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.DOUBLE: data = new DOUBLE(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CExoString: data = new CExoString(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.ResRef: data = new ResRef(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.CExoLocString: data = new CExoLocString(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.VOID: data = new VOID(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Struct: int lbl_index = br.ReadInt32(); data = new STRUCT(br, br.ReadInt32(), lbl_index); break; case GffFieldType.List: data = new LIST(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Orientation: data = new Orientation(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.Vector: data = new Vector(br, fieldOffset + dataOrDataOffset * 12); break; case GffFieldType.StrRef: data = new StrRef(br, fieldOffset + dataOrDataOffset * 12); break; default: throw new Exception(string.Format("UNEXPECTED FIELD TYPE \"{0}\", IN STRUCT INDEX \"{1}\"", fieldType, index)); } return(data); }
public static float MidpointRoundingAwayFromZero(FLOAT value, FLOAT step) => NativeGrid.MidpointRoundingAwayFromZero(value, step);
public static object ParseExcelType(string str, string type) { if (INT.Equals(type)) { if (string.IsNullOrEmpty(str)) { return(0); } return(int.Parse(str)); } else if (NUMBER.Equals(type)) { if (string.IsNullOrEmpty(str)) { return(0); } return(LockStepConst.ParseInLevelInt(str)); } else if (FLOAT.Equals(type)) { if (string.IsNullOrEmpty(str)) { return(0); } return(float.Parse(str)); } else if (STRING.Equals(type)) { return(str); } else if (BOOL.Equals(type)) { return("true".Equals(str.ToLower())); } else if (LINT.Equals(type)) { string[] p = str.SplitStringBySplits(); List <int> result = new List <int>(p.Length); for (int i = 0; i < p.Length; i++) { if (string.IsNullOrEmpty(str)) { result.Add(0); } else { result.Add(int.Parse(p[i])); } } return(result); } else if (LNUMBER.Equals(type)) { string[] p = str.SplitStringBySplits(); List <int> result = new List <int>(p.Length); for (int i = 0; i < p.Length; i++) { if (string.IsNullOrEmpty(str)) { result.Add(0); } else { result.Add(LockStepConst.ParseInLevelInt(p[i])); } } return(result); } else if (LFLOAT.Equals(type)) { string[] p = str.SplitStringBySplits(); List <float> result = new List <float>(p.Length); for (int i = 0; i < p.Length; i++) { if (string.IsNullOrEmpty(str)) { result.Add(0); } else { result.Add(float.Parse(p[i])); } } return(result); } else if (LSTRING.Equals(type)) { string[] p = str.SplitStringBySplits(); List <string> result = new List <string>(p.Length); for (int i = 0; i < p.Length; i++) { result.Add(p[i]); } return(result); } else if (LBOOL.Equals(type)) { string[] p = str.SplitStringBySplits(); List <bool> result = new List <bool>(p.Length); for (int i = 0; i < p.Length; i++) { result.Add("true".Equals(str)); } return(result); } return(null); }
public static int MidpointRoundingAwayFromZero(FLOAT value) => NativeGrid.MidpointRoundingAwayFromZero(value);
public static int IsPointBetweenCells(FLOAT point, INT width, FLOAT worldSize) => NativeGrid.IsPointBetweenCells(point, width, worldSize);
public static void GetPositionInsideCell(FLOAT point, INT numCells, FLOAT worldSize, out int lowerCell, out int upperCell, out float normalizedPositionBetweenThoseTwoPoints) => NativeGrid.GetPositionInsideCell(point, numCells, worldSize, out lowerCell, out upperCell, out normalizedPositionBetweenThoseTwoPoints);
public static float2 Index2dToPoint(INT2 i2, FLOAT stepX, FLOAT stepY) => NativeGrid.Index2dToPoint(i2, stepX, stepY);
public static float2 Index2dToPoint(INT x, INT y, FLOAT stepX, FLOAT stepY) => NativeGrid.Index2dToPoint(x, y, stepX, stepY);