/// <summary> /// Update inspector content. /// </summary> public override void OnInspectorGUI() { castedTargetComponent = (MobileInputReaction)target; serializedObject.Update(); reactionFieldAmount = GUIFactory.CreateIntFieldGUI("Reaction Amount (0 - 10):", castedTargetComponent.inputReactionFields.Count, 0, maxReactionFields); inputReactionFields.arraySize = reactionFieldAmount; ResizeUsageDictionary(ref useActionTriggerContainer); ResizeUsageDictionary(ref useArgumentTriggerContainer); HandleReactionFields(); UpdateActionTriggerUsage(castedTargetComponent); UpdateArgumentTriggerUsage(castedTargetComponent); serializedObject.ApplyModifiedProperties(); if (GUI.changed) { EditorUtility.SetDirty(castedTargetComponent); EditorSceneManager.MarkSceneDirty(castedTargetComponent.gameObject.scene); } }
/// <summary> /// Updates dictionary which contains information about the usage of action triggers. /// </summary> /// <param name="castedTarget">MobileInputReaction target object of the editor script.</param> private void UpdateActionTriggerUsage(MobileInputReaction castedTarget) { List <int> updatedTriggersUsingActions = new List <int>(); foreach (var useActionTriggerEntry in useActionTriggerContainer) { if (useActionTriggerEntry.Value) { updatedTriggersUsingActions.Add(useActionTriggerEntry.Key); } } var updatedUseActionTrigger = new Dictionary <int, bool>(); foreach (var trigger in useActionTriggerContainer) { updatedUseActionTrigger.Add(trigger.Key, updatedTriggersUsingActions.Contains(trigger.Key)); } castedTarget.reactionFieldsUsingActions = updatedTriggersUsingActions; castedTarget.useActionTriggerContainer = updatedUseActionTrigger; }
/// <summary> /// Set serialized properties by getting them from the serialized object. /// </summary> private void SetupSerializedProperties() { castedTargetComponent = (MobileInputReaction)target; inputReactionFields = serializedObject.FindProperty("inputReactionFields"); var useActionTriggerDictionary = new Dictionary <int, bool>(); for (int i = 0; i < inputReactionFields.arraySize; i++) { useActionTriggerDictionary.Add(i, castedTargetComponent.reactionFieldsUsingActions.Contains(i)); } var useArgumentTriggerDictionary = new Dictionary <int, bool>(); for (int i = 0; i < inputReactionFields.arraySize; i++) { useArgumentTriggerDictionary.Add(i, castedTargetComponent.reactionFieldsUsingArguments.Contains(i)); } useActionTriggerContainer = useActionTriggerDictionary; useArgumentTriggerContainer = useArgumentTriggerDictionary; }