FlatRedBall.Glue.ElementRuntime.GetStateSaveFromCustomVariableValue C# (CSharp) Method

GetStateSaveFromCustomVariableValue() public method

public GetStateSaveFromCustomVariableValue ( CustomVariable cv, object valueToSetTo ) : StateSave
cv FlatRedBall.Glue.SaveClasses.CustomVariable
valueToSetTo object
return FlatRedBall.Glue.SaveClasses.StateSave
        public StateSave GetStateSaveFromCustomVariableValue(CustomVariable cv, object valueToSetTo)
        {
            StateSave stateToSet;
            if (cv.DefaultValue is StateSave)
            {
                stateToSet = cv.DefaultValue as StateSave;
            }
            else
            {
                stateToSet = GetStateRecursively(valueToSetTo as string, cv.Type);
            }
            return stateToSet;
        }

Usage Example

        public void TestStateVariables()
        {
            EntitySave entitySave = new EntitySave();
            entitySave.Name = "CustomVariableTestStateVariableEntity";
            ObjectFinder.Self.GlueProject.Entities.Add(entitySave);

            StateSaveCategory category1 = new StateSaveCategory();
            category1.Name = "Category1";
            category1.SharesVariablesWithOtherCategories = false;
            StateSave stateSave = new StateSave();
            stateSave.Name = "Disabled";
            category1.States.Add(stateSave);

            StateSaveCategory category2 = new StateSaveCategory();
            category2.Name = "Category2";
            category2.SharesVariablesWithOtherCategories = false;
            stateSave = new StateSave();
            stateSave.Name = "Disabled";
            category2.States.Add(stateSave);

            entitySave.StateCategoryList.Add(category1);
            entitySave.StateCategoryList.Add(category2);

            CustomVariable customVariable = new CustomVariable();
            customVariable.Type = "Category2";
            customVariable.DefaultValue = "Disabled";
            customVariable.Name = "CurrentCategory2State";
            entitySave.CustomVariables.Add(customVariable);

            

            ElementRuntime elementRuntime = new ElementRuntime(entitySave, null, null, null, null);

            StateSave foundStateSave = 
                elementRuntime.GetStateSaveFromCustomVariableValue(customVariable, customVariable.DefaultValue);

            if (foundStateSave != category2.States[0])
            {
                throw new Exception("States in categories are not being found properly when referenced through custom variables");
            }

        }