GlueViewOfficialPlugins.Scripting.ExpressionParser.TryHandleElementRuntimeSpecialCases C# (CSharp) Method

TryHandleElementRuntimeSpecialCases() private static method

private static TryHandleElementRuntimeSpecialCases ( List argumentValues, Type argumentTypes, ElementRuntime caller, object &result, MemberReferenceExpression mre ) : bool
argumentValues List
argumentTypes System.Type
caller FlatRedBall.Glue.ElementRuntime
result object
mre MemberReferenceExpression
return bool
        private static bool TryHandleElementRuntimeSpecialCases(List<object> argumentValues, Type[] argumentTypes, ElementRuntime caller, ref object result, MemberReferenceExpression mre)
        {
            bool handled = false;
            
            if (argumentValues.Count == 5 && mre.MemberName == "InterpolateToState")
            {
                // using advanced interpolation
                StateViewPlugin.Self.ApplyInterpolateToState(
                    argumentValues[0],
                    argumentValues[1],
                    (float)argumentValues[2],
                    (FlatRedBall.Glue.StateInterpolation.InterpolationType)argumentValues[3],
                    (FlatRedBall.Glue.StateInterpolation.Easing)argumentValues[4]);
                result = null;
                handled = true;
            }

            if (!handled && caller.DirectObjectReference != null)
            {
                Type directObjectType = caller.DirectObjectReference.GetType();

                MethodInfo methodInfo = directObjectType.GetMethod(mre.MemberName, argumentTypes);
                if (methodInfo != null)
                {

                    result = methodInfo.Invoke(caller, argumentValues.ToArray());
                    handled = true;
                }
            }

            if (!handled && argumentValues.Count == 1 && mre.MemberName == "Set" && argumentTypes[0] == typeof(string))
            {
                result = caller.Set(argumentValues[0] as string);
                handled = true;
            }
            return handled;
        }