示例#1
0
        /// <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));
        }
示例#3
0
        /// <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);
            }
        }