Example #1
0
        /**
         * @brief Create a variable according to type and value
         *
         * @param _type the string of the type
         * @param _value the string value
         *
         * @result the variable
         * */
        public static IEffectParameter CreateVariable(string _type, string _value)
        {
            IEffectParameter newVariable = null;

            if (_type == typeof(CatMatrix).ToString())
            {
                newVariable = new CatMatrix();
            }
            else if (_type == typeof(CatFloat).ToString())
            {
                newVariable = new CatFloat();
            }
            else if (_type == typeof(CatTexture).ToString())
            {
                newVariable = new CatTexture();
            }
            else if (_type == typeof(CatVector4).ToString())
            {
                newVariable = new CatVector4();
            }
            else if (_type == typeof(CatColor).ToString())
            {
                newVariable = new CatColor();
            }
            else
            {
                Debug.Assert(false, "No matching type found. type=" + _type + " value=" + _value);
            }
            if (newVariable != null && _value != null && _value != "")
            {
                newVariable.FromString(_value);
            }

            return(newVariable);
        }
        private void SetFromValue()
        {
            Type type = refValue.GetType();

            if (type == typeof(CatVector3))
            {
                CatVector3 value = (CatVector3)refValue;
                fromValue = value.ParameterClone();
            }
            else if (type == typeof(CatVector2))
            {
                CatVector2 value = (CatVector2)refValue;
                fromValue = value.ParameterClone();
            }
            else if (type == typeof(CatFloat))
            {
                CatFloat value = (CatFloat)refValue;
                fromValue = value.ParameterClone();
            }
            else if (type == typeof(CatInteger))
            {
                CatInteger value = (CatInteger)refValue;
                fromValue = value.ParameterClone();
            }
        }
        private void SetFromAndToValue(object ToValue)
        {
            Type type = ToValue.GetType();

            if (type == typeof(CatVector3))
            {
                CatVector3 value = (CatVector3)ToValue;
                toValue = value.ParameterClone();
            }
            else if (type == typeof(CatVector2))
            {
                CatVector2 value = (CatVector2)ToValue;

                toValue = value.ParameterClone();
            }
            else if (type == typeof(CatFloat))
            {
                CatFloat value = (CatFloat)ToValue;
                toValue = value.ParameterClone();
            }
            else if (type == typeof(CatInteger))
            {
                CatInteger value = (CatInteger)ToValue;
                toValue = value.ParameterClone();
            }
        }
        private void UpdateValue()
        {
            Type type = refValue.GetType();

            if (type == typeof(CatVector3))
            {
                // delta
                CatVector3 _fromValue = (CatVector3)fromValue;
                CatVector3 _toValue   = (CatVector3)toValue;
                CatVector3 delta      = _toValue - _fromValue;
                // set value
                CatVector3 value   = (CatVector3)refValue;
                float      percent = (float)curTick / totalTick;
                value.SetValue(_fromValue.GetValue() + delta.GetValue() * GetCurveValue(percent));
            }
            else if (type == typeof(CatVector2))
            {
                //delta
                CatVector2 _fromValue = (CatVector2)fromValue;
                CatVector2 _toValue   = (CatVector2)toValue;
                CatVector2 delta      = _toValue - _fromValue;
                // set value
                CatVector2 value   = (CatVector2)refValue;
                float      percent = (float)curTick / totalTick;
                value.SetValue(_fromValue.GetValue() + delta.GetValue() * GetCurveValue(percent));
            }
            else if (type == typeof(CatFloat))
            {
                // delta
                float _fromValue = ((CatFloat)fromValue);
                float _toValue   = ((CatFloat)toValue);
                float delta      = _toValue - _fromValue;
                // set value
                CatFloat value = (CatFloat)refValue;
                value.SetValue(_fromValue + delta * GetCurveValue((float)curTick / totalTick));
            }
            else if (type == typeof(CatInteger))
            {
                // delta
                int _fromValue = ((CatInteger)fromValue);
                int _toValue   = ((CatInteger)toValue);
                int delta      = _toValue - _fromValue;
                // set value
                CatInteger value = (CatInteger)refValue;
                value.SetValue(_fromValue + (int)(delta * GetCurveValue((float)curTick / totalTick)));
            }
        }