/// <summary>all methods, prefixed with Private, are not meant to be called from outside of BGCurve package </summary> // field added callback public static void PrivateFieldAdded(BGCurvePointField field, FieldsValues fieldsValues) { var type = FieldTypes.GetType(field.Type); var item = BGReflectionAdapter.IsValueType(type) ? Activator.CreateInstance(type) : null; switch (field.Type) { case BGCurvePointField.TypeEnum.Bool: Ensure(ref fieldsValues.boolValues); fieldsValues.boolValues = BGCurve.Insert(fieldsValues.boolValues, fieldsValues.boolValues.Length, (bool)item); break; case BGCurvePointField.TypeEnum.Int: Ensure(ref fieldsValues.intValues); fieldsValues.intValues = BGCurve.Insert(fieldsValues.intValues, fieldsValues.intValues.Length, (int)item); break; case BGCurvePointField.TypeEnum.Float: Ensure(ref fieldsValues.floatValues); fieldsValues.floatValues = BGCurve.Insert(fieldsValues.floatValues, fieldsValues.floatValues.Length, (float)item); break; case BGCurvePointField.TypeEnum.Vector3: Ensure(ref fieldsValues.vector3Values); fieldsValues.vector3Values = BGCurve.Insert(fieldsValues.vector3Values, fieldsValues.vector3Values.Length, (Vector3)item); break; case BGCurvePointField.TypeEnum.Bounds: Ensure(ref fieldsValues.boundsValues); fieldsValues.boundsValues = BGCurve.Insert(fieldsValues.boundsValues, fieldsValues.boundsValues.Length, (Bounds)item); break; case BGCurvePointField.TypeEnum.Color: Ensure(ref fieldsValues.colorValues); fieldsValues.colorValues = BGCurve.Insert(fieldsValues.colorValues, fieldsValues.colorValues.Length, (Color)item); break; case BGCurvePointField.TypeEnum.String: Ensure(ref fieldsValues.stringValues); fieldsValues.stringValues = BGCurve.Insert(fieldsValues.stringValues, fieldsValues.stringValues.Length, (string)item); break; case BGCurvePointField.TypeEnum.Quaternion: Ensure(ref fieldsValues.quaternionValues); fieldsValues.quaternionValues = BGCurve.Insert(fieldsValues.quaternionValues, fieldsValues.quaternionValues.Length, (Quaternion)item); break; case BGCurvePointField.TypeEnum.AnimationCurve: Ensure(ref fieldsValues.animationCurveValues); fieldsValues.animationCurveValues = BGCurve.Insert(fieldsValues.animationCurveValues, fieldsValues.animationCurveValues.Length, (AnimationCurve)item); break; case BGCurvePointField.TypeEnum.GameObject: Ensure(ref fieldsValues.gameObjectValues); fieldsValues.gameObjectValues = BGCurve.Insert(fieldsValues.gameObjectValues, fieldsValues.gameObjectValues.Length, (GameObject)item); break; case BGCurvePointField.TypeEnum.Component: Ensure(ref fieldsValues.componentValues); fieldsValues.componentValues = BGCurve.Insert(fieldsValues.componentValues, fieldsValues.componentValues.Length, (Component)item); break; case BGCurvePointField.TypeEnum.BGCurve: Ensure(ref fieldsValues.bgCurveValues); fieldsValues.bgCurveValues = BGCurve.Insert(fieldsValues.bgCurveValues, fieldsValues.bgCurveValues.Length, (BGCurve)item); break; case BGCurvePointField.TypeEnum.BGCurvePointComponent: Ensure(ref fieldsValues.bgCurvePointComponentValues); fieldsValues.bgCurvePointComponentValues = BGCurve.Insert(fieldsValues.bgCurvePointComponentValues, fieldsValues.bgCurvePointComponentValues.Length, (BGCurvePointComponent)item); break; case BGCurvePointField.TypeEnum.BGCurvePointGO: Ensure(ref fieldsValues.bgCurvePointGOValues); fieldsValues.bgCurvePointGOValues = BGCurve.Insert(fieldsValues.bgCurvePointGOValues, fieldsValues.bgCurvePointGOValues.Length, (BGCurvePointGO)item); break; default: throw new ArgumentOutOfRangeException("field.Type", field.Type, "Unsupported type " + field.Type); } }
//---------------------------------- Object overrides protected bool Equals(BGCurvePointField other) { return(Equals(curve, other.curve) && string.Equals(fieldName, other.fieldName)); }
/// <summary>all methods, prefixed with Private, are not meant to be called from outside of BGCurve package </summary> // field deleted callback public static void PrivateFieldDeleted(BGCurvePointField field, int indexOfField, FieldsValues fieldsValues) { switch (field.Type) { case BGCurvePointField.TypeEnum.Bool: Ensure(ref fieldsValues.boolValues); fieldsValues.boolValues = BGCurve.Remove(fieldsValues.boolValues, indexOfField); break; case BGCurvePointField.TypeEnum.Int: Ensure(ref fieldsValues.intValues); fieldsValues.intValues = BGCurve.Remove(fieldsValues.intValues, indexOfField); break; case BGCurvePointField.TypeEnum.Float: Ensure(ref fieldsValues.floatValues); fieldsValues.floatValues = BGCurve.Remove(fieldsValues.floatValues, indexOfField); break; case BGCurvePointField.TypeEnum.Vector3: Ensure(ref fieldsValues.vector3Values); fieldsValues.vector3Values = BGCurve.Remove(fieldsValues.vector3Values, indexOfField); break; case BGCurvePointField.TypeEnum.Bounds: Ensure(ref fieldsValues.boundsValues); fieldsValues.boundsValues = BGCurve.Remove(fieldsValues.boundsValues, indexOfField); break; case BGCurvePointField.TypeEnum.Color: Ensure(ref fieldsValues.colorValues); fieldsValues.colorValues = BGCurve.Remove(fieldsValues.colorValues, indexOfField); break; case BGCurvePointField.TypeEnum.String: Ensure(ref fieldsValues.stringValues); fieldsValues.stringValues = BGCurve.Remove(fieldsValues.stringValues, indexOfField); break; case BGCurvePointField.TypeEnum.Quaternion: Ensure(ref fieldsValues.quaternionValues); fieldsValues.quaternionValues = BGCurve.Remove(fieldsValues.quaternionValues, indexOfField); break; case BGCurvePointField.TypeEnum.AnimationCurve: Ensure(ref fieldsValues.animationCurveValues); fieldsValues.animationCurveValues = BGCurve.Remove(fieldsValues.animationCurveValues, indexOfField); break; case BGCurvePointField.TypeEnum.GameObject: Ensure(ref fieldsValues.gameObjectValues); fieldsValues.gameObjectValues = BGCurve.Remove(fieldsValues.gameObjectValues, indexOfField); break; case BGCurvePointField.TypeEnum.Component: Ensure(ref fieldsValues.componentValues); fieldsValues.componentValues = BGCurve.Remove(fieldsValues.componentValues, indexOfField); break; case BGCurvePointField.TypeEnum.BGCurve: Ensure(ref fieldsValues.bgCurveValues); fieldsValues.bgCurveValues = BGCurve.Remove(fieldsValues.bgCurveValues, indexOfField); break; case BGCurvePointField.TypeEnum.BGCurvePointComponent: Ensure(ref fieldsValues.bgCurvePointComponentValues); fieldsValues.bgCurvePointComponentValues = BGCurve.Remove(fieldsValues.bgCurvePointComponentValues, indexOfField); break; case BGCurvePointField.TypeEnum.BGCurvePointGO: Ensure(ref fieldsValues.bgCurvePointGOValues); fieldsValues.bgCurvePointGOValues = BGCurve.Remove(fieldsValues.bgCurvePointGOValues, indexOfField); break; default: throw new ArgumentOutOfRangeException("field.Type", field.Type, "Unsupported type " + field.Type); } }