public override void DrawTask(Scene scene) { EditorGUILayout.BeginHorizontal(); TargetIntent = (eAudienceIntent)EditorGUILayout.EnumPopup(new GUIContent("Target Intent"), TargetIntent); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Target Time For Intent"); TargetTimeForIntent = EditorGUILayout.FloatField(TargetTimeForIntent); EditorGUILayout.EndHorizontal(); base.DrawTask(scene); }
public float GetTransitionTime(eAudienceIntent intent, float rating) { if (!IntentTransitions.TryGetValue(intent, out IntentTransition intentTransition)) { Logger.LogError($"IntentTransitions doesn't contain intent: \"{intent}\""); return(UnityEngine.Random.Range(0.5f, 3f)); } var time = intentTransition.TransitionTime; time += rating * intentTransition.RatingTimeMultiplier; time = Mathf.Max(time, 0f); return(time); }
bool GetIntent() { var intent = eAudienceIntent.WatchShow; TargetIntentTime -= Time.deltaTime; var currentScene = Theatre.Instance.CurrentScript.CurrentScene; if (currentScene != null) { foreach (var task in currentScene.Tasks) { if (task.State == eTaskState.CanStart || task.State == eTaskState.InProgress) { var intentTask = task as AudienceIntentTask; if (intentTask != null) { intent = intentTask.TargetIntent; } } } } if (intent != TargetIntent) { TargetIntent = intent; TargetIntentTime = ProfileData.GetTransitionTime(TargetIntent, 0f); } if (AudienceIntent == TargetIntent) { return(false); } if (TargetIntentTime <= 0) { AudienceIntent = TargetIntent; return(true); } return(false); }