public override void Reset() { ItemName = null; FieldName = null; operation = GDEOperation.Add; value = UnityEngine.Vector2.one; save = true; }
public override void Reset() { ItemName = null; FieldName = null; operation = GDEOperation.Add; value = 1; storeResult = null; save = true; }
//////////// /// <summary> /// Apply an operation to the given Field. /// </summary> /// <param name="itemName"></param> /// <param name="fieldName"></param> /// <param name="fieldType"></param> /// <param name="operation">Wheter to add, subtract, multiply or divide the Field value. Alternatively only store the smallest or biggest of the two or override it with the second value.</param> /// <param name="byValue"></param> public static void GDEOperator(string itemName, string fieldName, GDEFieldType fieldType, GDEOperation operation, object byValue) { //if(!CheckFieldType(itemName, fieldName, fieldType)) return; object prevValue = GetFieldValue(itemName, fieldName); switch(fieldType) { case GDEFieldType.Int: int tmpIntValue = Convert.ToInt32(prevValue); int operateIntBy = Convert.ToInt32(byValue); switch(operation) { case GDEOperation.Add: tmpIntValue += operateIntBy; break; case GDEOperation.Subtract: tmpIntValue -= operateIntBy; break; case GDEOperation.Multiply: tmpIntValue *= operateIntBy; break; case GDEOperation.Divide: tmpIntValue /= operateIntBy; break; case GDEOperation.Min: tmpIntValue = Math.Min(tmpIntValue, operateIntBy); break; case GDEOperation.Max: tmpIntValue = Math.Max(tmpIntValue, operateIntBy); break; case GDEOperation.Set: tmpIntValue = operateIntBy; break; } prevValue = tmpIntValue; break; case GDEFieldType.Float: float tmpFloatValue = Convert.ToSingle(prevValue); float operateFloatBy = Convert.ToSingle(byValue); switch(operation) { case GDEOperation.Add: tmpFloatValue += operateFloatBy; break; case GDEOperation.Subtract: tmpFloatValue -= operateFloatBy; break; case GDEOperation.Multiply: tmpFloatValue *= operateFloatBy; break; case GDEOperation.Divide: tmpFloatValue /= operateFloatBy; break; case GDEOperation.Min: tmpFloatValue = Mathf.Min(tmpFloatValue, operateFloatBy); break; case GDEOperation.Max: tmpFloatValue = Mathf.Max(tmpFloatValue, operateFloatBy); break; case GDEOperation.Set: tmpFloatValue = operateFloatBy; break; } prevValue = tmpFloatValue; break; case GDEFieldType.Vector2: Vector2 tmpV2Value = (Vector2)prevValue; Vector2 operateV2By = (Vector2)byValue; Vector2 v2Result = Vector2.zero; switch(operation) { case GDEOperation.Add: tmpV2Value += operateV2By; break; case GDEOperation.Subtract: tmpV2Value -= operateV2By; break; case GDEOperation.Multiply: v2Result.x = tmpV2Value.x * operateV2By.x; v2Result.y = tmpV2Value.y * operateV2By.y; tmpV2Value = v2Result; break; case GDEOperation.Divide: v2Result.x = tmpV2Value.x / operateV2By.x; v2Result.y = tmpV2Value.y / operateV2By.y; tmpV2Value = v2Result; break; case GDEOperation.Min: v2Result.x = Mathf.Min(tmpV2Value.x, operateV2By.x); v2Result.y = Mathf.Min(tmpV2Value.y, operateV2By.y); tmpV2Value = v2Result; break; case GDEOperation.Max: v2Result.x = Mathf.Max(tmpV2Value.x, operateV2By.x); v2Result.y = Mathf.Max(tmpV2Value.y, operateV2By.y); tmpV2Value = v2Result; break; case GDEOperation.Set: tmpV2Value = operateV2By; break; } prevValue = tmpV2Value; break; case GDEFieldType.Vector3: Vector3 tmpV3Value = (Vector3)prevValue; Vector3 operateV3By = (Vector3)byValue; Vector3 v3Result = Vector3.zero; switch(operation) { case GDEOperation.Add: tmpV3Value += operateV3By; break; case GDEOperation.Subtract: tmpV3Value -= operateV3By; break; case GDEOperation.Multiply: v3Result.x = tmpV3Value.x * operateV3By.x; v3Result.y = tmpV3Value.y * operateV3By.y; v3Result.z = tmpV3Value.z * operateV3By.z; tmpV3Value = v3Result; break; case GDEOperation.Divide: v3Result.x = tmpV3Value.x / operateV3By.x; v3Result.y = tmpV3Value.y / operateV3By.y; v3Result.z = tmpV3Value.z / operateV3By.z; tmpV3Value = v3Result; break; case GDEOperation.Min: v3Result.x = Mathf.Min(tmpV3Value.x, operateV3By.x); v3Result.y = Mathf.Min(tmpV3Value.y, operateV3By.y); v3Result.z = Mathf.Min(tmpV3Value.z, operateV3By.z); tmpV3Value = v3Result; break; case GDEOperation.Max: v3Result.x = Mathf.Max(tmpV3Value.x, operateV3By.x); v3Result.y = Mathf.Max(tmpV3Value.y, operateV3By.y); v3Result.z = Mathf.Max(tmpV3Value.z, operateV3By.z); tmpV3Value = v3Result; break; case GDEOperation.Set: tmpV3Value = operateV3By; break; } prevValue = tmpV3Value; break; case GDEFieldType.Vector4: Vector4 tmpV4Value = (Vector4)prevValue; Vector4 operateV4By = (Vector4)byValue; Vector4 v4Result = Vector4.zero; switch(operation) { case GDEOperation.Add: tmpV4Value += operateV4By; break; case GDEOperation.Subtract: tmpV4Value -= operateV4By; break; case GDEOperation.Multiply: v4Result.w = tmpV4Value.w * operateV4By.w; v4Result.x = tmpV4Value.x * operateV4By.x; v4Result.y = tmpV4Value.y * operateV4By.y; v4Result.z = tmpV4Value.z * operateV4By.z; tmpV4Value = v4Result; break; case GDEOperation.Divide: v4Result.w = tmpV4Value.w / operateV4By.w; v4Result.x = tmpV4Value.x / operateV4By.x; v4Result.y = tmpV4Value.y / operateV4By.y; v4Result.z = tmpV4Value.z / operateV4By.z; tmpV4Value = v4Result; break; case GDEOperation.Min: v4Result.w = Mathf.Min(tmpV4Value.w, operateV4By.w); v4Result.x = Mathf.Min(tmpV4Value.x, operateV4By.x); v4Result.y = Mathf.Min(tmpV4Value.y, operateV4By.y); v4Result.z = Mathf.Min(tmpV4Value.z, operateV4By.z); tmpV4Value = v4Result; break; case GDEOperation.Max: v4Result.w = Mathf.Max(tmpV4Value.w, operateV4By.w); v4Result.x = Mathf.Max(tmpV4Value.x, operateV4By.x); v4Result.y = Mathf.Max(tmpV4Value.y, operateV4By.y); v4Result.z = Mathf.Max(tmpV4Value.z, operateV4By.z); tmpV4Value = v4Result; break; case GDEOperation.Set: tmpV4Value = operateV4By; break; } prevValue = tmpV4Value; break; default: UnityEngine.Debug.LogError("Unsorted Field Type!"); break; } SetFieldValue(itemName, fieldName, prevValue, fieldType); }