/// <summary> /// Initializes the AttatchedTrigger instance. /// </summary> public void Initialize(Chatbot.Core tmpbot, Trigger tmpTrigger) { // Throw exception if tmpTrigger is not assigned if (tmpTrigger == null) { Debug.LogWarning("Trigger == null"); } // Register Trigger instance trigger = tmpTrigger; // Set last time active to now and // subtract timeoutintervall, to be able // to recieve trigger from helperfunction // immediately. timelastactive = System.DateTime.Now.Subtract(TimeSpan.FromMilliseconds(tmpTrigger.timeoutintervall)); // Check, wether bot exists if (tmpbot == null) { Debug.LogWarning("Passed Chatbot.Core instance == null"); } // Retrieve Chatbor.Core instance bot = tmpbot; // Settings resetted to default (code below) isresetted = true; //Check if there are assigned settings if (trigger.Settings != null) { // Settings string array should have same size // as Settings GameObject array. Settings = new string[trigger.Settings.Length]; // Set settings name and value to default for (int i = 0; i < Settings.Length; i++) { // First check if user already assigned Setting GameObject // and wether it has Setting instance attatched if (trigger.Settings[i] != null && trigger.Settings[i].gameObject.GetComponent <Setting>()) { // Retrieve settings name Settings[i] = trigger.Settings[i].gameObject.name; // And set settings value to defaultSetting bot.SetGlobalSetting(Settings[i], defaultSetting); // Also change Settings in Unity scene to default trigger.Settings[i].gameObject.GetComponent <Setting>().value = defaultSetting; } } } // Grab Trigger values from Scene RetrieveTriggerSettingsFromScene(); }
/// <summary> /// Retrieve information from Unity Scenes Trigger instance /// </summary> /// <param name="item">Item.</param> public void RetrieveTriggerSettingsFromScene() { // If trigger and bot is assigned if (bot != null && trigger != null) { // Transfer name to tmpTriggerItem name = trigger.gameObject.name; // Get motive if assigned if (trigger.Motive != null) { // Get Motive name Motive = trigger.Motive; } // Retrieve default and enabled string defaultSetting = trigger.defaultSetting; enabledSetting = trigger.enabledSetting; // Retrieve Timeintervalls timeoutintervall = trigger.timeoutintervall; timetoreset = trigger.timetoreset; // Erase existing settings when // there are no more settings left // in the scene if (trigger.Settings == null) { // And set to null, no need to destroy array in C#. Just set to null. Settings = null; } else { // If array length differs if (trigger.Settings.Length != Settings.Length) { int oldarraysize = Settings.Length; // Use Systems array resize function to do it fast System.Array.Resize <String>(ref Settings, trigger.Settings.Length); // Calculate region to retrieve settings from int tmpsize = oldarraysize; if (trigger.Settings.Length < oldarraysize) { tmpsize = trigger.Settings.Length; } // We know that arraysize!=null, so get settings in old size area. for (int i = 0; i < tmpsize; i++) { // First check if user already assigned Setting GameObject // and wether it has Setting instance attatched if (trigger.Settings[i] && trigger.Settings[i].gameObject.GetComponent <Setting>()) { // Retrieve settings name Settings[i] = trigger.Settings[i].gameObject.name; // And set settings value to existing value bot.SetGlobalSetting(Settings[i], trigger.Settings[i].gameObject.GetComponent <Setting>().value); // Settings in Unity scene remains the same } } // If new array is bigger than old one, set new arising // Settings to default if (Settings.Length > oldarraysize) { // if oldarraysize==7 start at element 6 for (int i = oldarraysize - 1; i < trigger.Settings.Length; i++) { // First check if user already assigned Setting GameObject // and wether it has Setting instance attatched if (trigger.Settings[i] && trigger.Settings[i].gameObject.GetComponent <Setting>()) { // Retrieve settings name Settings[i] = trigger.Settings[i].gameObject.name; // And set settings value to defaultSetting bot.SetGlobalSetting(Settings[i], defaultSetting); // Also change Settings in Unity scene to default trigger.Settings[i].gameObject.GetComponent <Setting>().value = defaultSetting; } } } } // If array sizes equal else { // We know that arraysize!=null and arry.length equals. // So simple get settings from scenes settings. for (int i = 0; i < Settings.Length; i++) { // First check if user already assigned Setting GameObject // and wether it has Setting instance attatched if (trigger.Settings[i] && trigger.Settings[i].gameObject.GetComponent <Setting>()) { // Retrieve settings name Settings[i] = trigger.Settings[i].gameObject.name; // And set settings value to existing value bot.SetGlobalSetting(Settings[i], trigger.Settings[i].gameObject.GetComponent <Setting>().value); // Settings in Unity scene remains the same } } } } } }