public SynchronizedVariable(VariableSynchronizer.SynchronizationType synchronizationType, bool setVariable, Behavior behavior, string variableName, bool global, Component targetComponent, string targetName, bool targetGlobal) { this.synchronizationType = synchronizationType; this.setVariable = setVariable; this.behavior = behavior; this.variableName = variableName; this.global = global; this.targetComponent = targetComponent; this.targetName = targetName; this.targetGlobal = targetGlobal; }
public override void OnInspectorGUI() { VariableSynchronizer variableSynchronizer = this.target as VariableSynchronizer; if (variableSynchronizer == null) { return; } GUILayout.Space(5f); variableSynchronizer.UpdateInterval = (UpdateIntervalType)EditorGUILayout.EnumPopup("Update Interval", variableSynchronizer.UpdateInterval, new GUILayoutOption[0]); if (variableSynchronizer.UpdateInterval == UpdateIntervalType.SpecifySeconds) { variableSynchronizer.UpdateIntervalSeconds = EditorGUILayout.FloatField("Seconds", variableSynchronizer.UpdateIntervalSeconds, new GUILayoutOption[0]); } GUILayout.Space(5f); GUI.enabled = (!Application.isPlaying); this.DrawSharedVariableSynchronizer(this.sharedVariableSynchronizer, null); if (string.IsNullOrEmpty(this.sharedVariableSynchronizer.targetName)) { this.DrawSynchronizedVariables(variableSynchronizer); return; } EditorGUILayout.BeginHorizontal(new GUILayoutOption[0]); EditorGUILayout.LabelField("Direction", new GUILayoutOption[] { GUILayout.MaxWidth(146f) }); if (GUILayout.Button(BehaviorDesignerUtility.LoadTexture((!this.setVariable) ? "RightArrowButton.png" : "LeftArrowButton.png", true, this), BehaviorDesignerUtility.ButtonGUIStyle, new GUILayoutOption[] { GUILayout.Width(22f) })) { this.setVariable = !this.setVariable; } EditorGUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); this.synchronizationType = (VariableSynchronizer.SynchronizationType)EditorGUILayout.EnumPopup("Type", this.synchronizationType, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { this.targetSynchronizer = new VariableSynchronizerInspector.Synchronizer(); } if (this.targetSynchronizer == null) { this.targetSynchronizer = new VariableSynchronizerInspector.Synchronizer(); } if (this.sharedVariableValueType == null && !string.IsNullOrEmpty(this.sharedVariableValueTypeName)) { this.sharedVariableValueType = TaskUtility.GetTypeWithinAssembly(this.sharedVariableValueTypeName); } switch (this.synchronizationType) { case VariableSynchronizer.SynchronizationType.BehaviorDesigner: this.DrawSharedVariableSynchronizer(this.targetSynchronizer, this.sharedVariableValueType); break; case VariableSynchronizer.SynchronizationType.Property: this.DrawPropertySynchronizer(this.targetSynchronizer, this.sharedVariableValueType); break; case VariableSynchronizer.SynchronizationType.Animator: this.DrawAnimatorSynchronizer(this.targetSynchronizer); break; case VariableSynchronizer.SynchronizationType.PlayMaker: this.DrawPlayMakerSynchronizer(this.targetSynchronizer, this.sharedVariableValueType); break; case VariableSynchronizer.SynchronizationType.uFrame: this.DrawuFrameSynchronizer(this.targetSynchronizer, this.sharedVariableValueType); break; } if (string.IsNullOrEmpty(this.targetSynchronizer.targetName)) { GUI.enabled = (false); } if (GUILayout.Button("Add", new GUILayoutOption[0])) { VariableSynchronizer.SynchronizedVariable item = new VariableSynchronizer.SynchronizedVariable(this.synchronizationType, this.setVariable, this.sharedVariableSynchronizer.component as Behavior, this.sharedVariableSynchronizer.targetName, this.sharedVariableSynchronizer.global, this.targetSynchronizer.component, this.targetSynchronizer.targetName, this.targetSynchronizer.global); variableSynchronizer.SynchronizedVariables.Add(item); EditorUtility.SetDirty(variableSynchronizer); this.sharedVariableSynchronizer = new VariableSynchronizerInspector.Synchronizer(); this.targetSynchronizer = new VariableSynchronizerInspector.Synchronizer(); } GUI.enabled = (true); this.DrawSynchronizedVariables(variableSynchronizer); }