GlueViewOfficialPlugins.Scripting.ScriptParsingPlugin.TryAssignIAssignableReference C# (CSharp) Method

TryAssignIAssignableReference() private static method

private static TryAssignIAssignableReference ( AssignmentOperatorType assignOperator, CustomVariable customVariable, object reference ) : bool
assignOperator AssignmentOperatorType
customVariable FlatRedBall.Glue.SaveClasses.CustomVariable
reference object
return bool
        private static bool TryAssignIAssignableReference(AssignmentOperatorType assignOperator, CustomVariable customVariable, object reference)
        {
            bool wasAssigned = false;
            if (reference is IAssignableReference)
            {
                if (assignOperator == AssignmentOperatorType.Assign)
                {
                    ((IAssignableReference)reference).CurrentValue = customVariable.DefaultValue;
                    wasAssigned = true;
                }
                else if (assignOperator == AssignmentOperatorType.Add)
                {
                    object currentValue = ((IAssignableReference)reference).CurrentValue;
                    object addedResult = PrimitiveOperationManager.Self.AddObjects(currentValue, customVariable.DefaultValue);
                    ((IAssignableReference)reference).CurrentValue = addedResult;
                    wasAssigned = true;
                }
                else if (assignOperator == AssignmentOperatorType.Subtract)
                {
                    object currentValue = ((IAssignableReference)reference).CurrentValue;
                    object addedResult = PrimitiveOperationManager.Self.SubtractObjects(currentValue, customVariable.DefaultValue);
                    ((IAssignableReference)reference).CurrentValue = addedResult;
                    wasAssigned = true;
                }
                else if (assignOperator == AssignmentOperatorType.Multiply)
                {
                    object currentValue = ((IAssignableReference)reference).CurrentValue;
                    object addedResult = PrimitiveOperationManager.Self.MultiplyObjects(currentValue, customVariable.DefaultValue);
                    ((IAssignableReference)reference).CurrentValue = addedResult;
                    wasAssigned = true;
                }
                else if (assignOperator == AssignmentOperatorType.Divide)
                {
                    object currentValue = ((IAssignableReference)reference).CurrentValue;
                    object addedResult = PrimitiveOperationManager.Self.DivideObjects(currentValue, customVariable.DefaultValue);
                    ((IAssignableReference)reference).CurrentValue = addedResult;
                    wasAssigned = true;
                }
            }
            return wasAssigned;
        }