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;
 }
Beispiel #3
0
		////////////

		/// <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);
		}