private void New() { var per = new TB_Permission(); per.Name = txtName.Value.Trim(); per.Image = hidImage.Value; per.Delete = false; per.IsDefault = isDefault.Checked; per.Url = txtURL.Value.Trim(); // 父级菜单,为空时默认为顶级菜单 var parent = int.Parse("" == hidParent.Value ? "0" : hidParent.Value); per.Parent = parent; var brothers = PermissionInstance.FindList(p => p.Parent == parent); per.DisplayOrder = brothers.Count(); per.AddTime = DateTime.Now; per.Description = txtDescription.Value.Trim(); PermissionInstance.Add(per); // 记录历史 SaveHistory(new TB_AccountHistory { ActionId = ActionInstance.Find(f => f.Name.Equals("AddPermission")).id, ObjectA = "[id=" + per.id + "] " + per.Name }); UpdateRole(per); ShowNotification("./permission_list.aspx", "Success: You added a new menu.", true); }
private bool EstimateBindingsQuality(ActionInstance instance, WorldModel context)//calculate expected affinity from the instance, as well as expected utility, recursion would happen here to evaluate future actions { var OpenCandidateList = new List <CharModel>(context.Characters.Values); for (int i = 0; i < OpenCandidateList.Count;) { if (instance.InvolvedCharacters.ContainsValue(OpenCandidateList[i].Character)) { OpenCandidateList.RemoveAt(i); } else { i++; } } instance.RunCharacterControlledPreferenceRules(); var possibleBindingsinstances = RecursiveBindings(instance, OpenCandidateList, instance.Template.EngineControlledRoles); SetBindingsProbability(possibleBindingsinstances); instance.Affinity = EvaluateBindingsAffinity(possibleBindingsinstances); if (instance.Affinity < Electrum.affinityTreshold) { return(false); //the action will be discarded, as it is too unattractive } //utility estimation instance.ExpectedImmediateUtility = EvaluateBindingsUtility(context, possibleBindingsinstances); return(true); }
private void EditSatellite() { var num = txtNumber.Value.Trim(); var t = SatelliteInstance.Find(f => f.id == ParseInt(Utility.Decrypt(hidID.Value))); if (null != t) { var old = SatelliteInstance.Find(f => f.CardNo.Equals(num)); if (null != old && old.id != t.id) { ShowNotification("./satellite_manage.aspx", "Cannot edit the satellite object: The number has exist.", false); } else { SatelliteInstance.Update(f => f.id == t.id, act => { act.CardNo = num; }); SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("EditSat")).id, ObjectA = SatelliteInstance.ToString(t) }); ShowNotification("./satellite_manage.aspx", "You saved the satellite information."); } } else { ShowNotification("./satellite_manage.aspx", "Cannot edit the satellite object: no record exist.", false); } }
public void Trigger(ActionInstance param) { for (int i = 0; i < Mods.Count; i++) { Mods[i].Mod(param); } }
private void EditCustomer() { var id = ParseInt(Utility.Decrypt(_key)); var obj = CustomerInstance.Find(f => f.id == id); if (null == obj) { ShowNotification("./customers.aspx", "Error: could not find the customer.", false); } else { BuilldCustomer(obj); var chk = CustomerInstance.Find(f => f.Code.Equals(obj.Code) && f.id != id); if (null != chk) { ShowNotification("./customer_new.aspx", "Error: there have a same customer code exists.", false); } else { Update(obj); // 保存历史记录 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("EditCustomer")).id, ObjectA = CustomerInstance.ToString(obj) }); ShowNotification("./customers.aspx", "You have changed the customer: " + CustomerInstance.ToString(obj) + "."); } } }
protected void btDelete_Click(object sender, EventArgs e) { if (!HasSessionLose) { if ("" != hidID.Value) { var ids = GetIdList(hidID.Value.Split(new char[] { ',' })); var list = RoleInstance.FindList(f => ids.Contains(f.id) && f.Delete == false); foreach (var role in list) { role.Delete = true; Update(role); SaveHistory(new TB_AccountHistory { ActionId = ActionInstance.Find(f => f.Name.Equals("DeleteRole")).id, ObjectA = "[id=" + role.id + "] " + role.Name }); } // 更新默认角色 var dftRole = RoleInstance.Find(f => f.IsDefault == true && f.Delete == false); foreach (var role in ids) { AccountInstance.ClearRoleInfo(role, null == dftRole ? 0 : dftRole.id); } ShowNotification("./role_list.aspx", "Success: You have delete " + ids.Count() + " role(s)."); } } }
private void Edit() { // 记录历史 var his = new TB_AccountHistory(); his.Account = Account.id; his.ActionId = ActionInstance.Find(f => f.Name.Equals("EditRole")).id; his.Ip = Utility.GetClientIP(this.Context); var id = int.Parse(Utility.Decrypt(hidID.Value)); var role = RoleInstance.Find(f => f.id == id && f.Delete == false); role.Description = txtDescription.Value.Trim(); role.IsAdministrator = cbIsAdmin.Checked; role.IsDefault = cbIsDefault.Checked; var name = txtName.Value.Trim(); if (!role.Name.Equals(name)) { his.ObjectA = "[id=" + role.id + "] " + role.Name + " to " + name; } else { his.ObjectA = "[id=" + role.id + "] " + role.Name; } role.Name = name; Update(role); SaveHistory(his); ShowNotification("./role_list.aspx", "Success: You have changed role \"" + role.Name + "\".", true); }
protected void btSave_Click(object sender, EventArgs e) { var role = GetRole(); if (null != role) { string rights = ""; foreach (TreeNode tn in tvMenus.CheckedNodes) { var id = tn.NavigateUrl.Replace("#", ""); rights += "" == rights ? id : ("," + id); } RoleInstance.Update(f => f.id == role.id && f.Delete == false, action => { action.Permission = rights; }); // 记录历史 var his = new TB_AccountHistory(); his.ActionId = ActionInstance.Find(f => f.Name.Equals("RolePermission")).id; his.Ip = Utility.GetClientIP(this.Context); his.ObjectA = "[id=" + role.id + "] " + role.Name; SaveHistory(his); ShowNotification("./role_list.aspx", "You have changed permission of role \"" + role.Name + "\"."); } }
private void Edit(int id) { var obj = WorkInstance.Find(f => f.id == id && f.Deleted == false); if (null == obj) { ShowNotification("../service/as_work_dispatch.aspx", "No work exist.", false); } else { WorkInstance.Update(f => f.id == id && f.Deleted == false, act => { act.Description = description.Value; act.Director = director.Value.Trim(); if (!string.IsNullOrEmpty(end1.Value)) { act.ScheduleEnd = DateTime.Parse(end1.Value.Trim()); } if (!string.IsNullOrEmpty(start1.Value.Trim())) { act.ScheduleStart = DateTime.Parse(start1.Value); } act.Title = title.Value.Trim(); }); SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("EditWork")).id, ObjectA = WorkInstance.ToString(obj) }); ShowNotification("../service/as_work_dispatch.aspx", "The work has changed."); } }
public void CompleteAnimateAction() { // Action Complete callback if (_actionBeingExecuted != null) { _actionBeingExecuted.Template.CompleteAction(_actionBeingExecuted); } // Action sfx's if (_actionBeingExecuted.UserSfx != null) { ParticleSystem sfx = _actionBeingExecuted.UserSfx.GetNext(); AttachSpecialEffect(sfx); } if (_actionBeingExecuted.TargetSfx != null) { ParticleSystem sfx = _actionBeingExecuted.TargetSfx.GetNext(); _actionBeingExecuted.Target.AttachSpecialEffect(sfx); } // Move character back if (_mover != null && _actionBeingExecuted.MoveToAttackPosition) { _mover.GoBack(); } // Reset action being executed _actionBeingExecuted = null; }
private void NewTerminal() { TB_Terminal t = null; // 如果没有输入Sim卡号码则查询是否具有相同终端号码的记录 if (string.IsNullOrEmpty(txtSimcard.Value.Trim())) { t = TerminalInstance.Find(f => f.Number.Equals(txtNumber.Value.Trim()) && f.Delete == false); } else { // 如果有Sim卡号码输入则查询终端或Sim卡号码是否有相同记录存在 t = TerminalInstance.Find(f => (f.Number.Equals(txtNumber.Value.Trim()) || f.Sim.Equals(txtSimcard.Value.Trim())) && f.Delete == false); } if (null != t) { ShowNotification("./terminal_register.aspx", "Terminal exist: " + TerminalInstance.ToString(t), false); } else { t = TerminalInstance.GetObject(); BuildObject(t); TerminalInstance.Add(t); SaveHistory(new TB_AccountHistory { ActionId = ActionInstance.Find(f => f.Name.Equals("AddTerminal")).id, ObjectA = TerminalInstance.ToString(t) }); ShowNotification("./terminal_list.aspx", "You added a new terminal: " + TerminalInstance.ToString(t)); } }
void Die() { _actionBeingExecuted = null; _mover.GoToMainPosition(); _character.Buffs.ForEach(buff => buff.RemoveEffect()); _animator.SetTrigger("Death"); }
private void New() { var old = TrackerInstance.Find(f => f.SimCard.Equals(number.Value.Trim()) && f.Deleted == false); if (null == old) { var newOne = TrackerInstance.GetObject(); newOne.SimCard = number.Value.Trim(); newOne.CarNumber = vehicle.Value.Trim(); newOne.Director = director.Value.Trim(); TrackerInstance.Add(newOne); // 保存操作历史记录 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("AddTracker")).id, ObjectA = TrackerInstance.ToString(newOne) }); ShowNotification("/service/as_trackers.aspx", "New tracker added."); } else { ShowNotification("/service/as_trackers.aspx", "Same number of " + number.Value.Trim() + " exists.", false); } }
private void EditTerminal() { var id = ParseInt(Utility.Decrypt(hidID.Value)); var t = TerminalInstance.Find(f => (f.Number.Equals(txtNumber.Value.Trim()) || f.Sim.Equals(txtSimcard.Value.Trim())) && f.id != id && f.Delete == false); if (null == t) { t = TerminalInstance.Find(f => f.id == ParseInt(Utility.Decrypt(hidID.Value))); if (null != t) { BuildObject(t); Update(t); SaveHistory(new TB_AccountHistory { ActionId = ActionInstance.Find(f => f.Name.Equals("EditTerminal")).id, ObjectA = TerminalInstance.ToString(t) }); ShowNotification("./terminal_list.aspx", "You changed terminal: " + TerminalInstance.ToString(t)); } else { ShowNotification("./terminal_list.aspx", "Error: Cannot edit null object of Terminal.", false); } } else { ShowNotification("./terminal_register.aspx?key=" + Utility.UrlEncode(hidID.Value), "Error: New terminal number or sim card number has exists: " + TerminalInstance.ToString(t), false); } }
private void WriteActionInstance(ActionInstance actionInst, BinaryWriter spbifWriter, PageContext pageContext) { if (actionInst != null) { spbifWriter.Write((byte)11); spbifWriter.Write((byte)2); spbifWriter.Write(1); spbifWriter.Write((byte)3); if (actionInst.Label != null) { spbifWriter.Write((byte)4); spbifWriter.Write(actionInst.Label); } if (actionInst.Hyperlink != null) { ReportUrl hyperlink = actionInst.Hyperlink; if (hyperlink != null) { Uri uri = hyperlink.ToUri(); if ((Uri)null != uri) { spbifWriter.Write((byte)6); spbifWriter.Write(uri.AbsoluteUri); } } } else if (actionInst.BookmarkLink != null) { spbifWriter.Write((byte)7); spbifWriter.Write(actionInst.BookmarkLink); } spbifWriter.Write((byte)255); spbifWriter.Write((byte)255); } }
private void NewAccount() { var account = AccountInstance.GetObject(); BuildAccountInfo(account); // check the same login code var chk = AccountInstance.Find(f => f.Code.Equals(account.Code)); if (null != chk) { ShowNotification("./account_add.aspx", "The login code \"" + account.Code + "\" is exist.", false); } else { AccountInstance.Add(account); // 保存历史记录 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("AddAccount")).id, ObjectA = "[id=" + account.id + "] " + account.Name + ", " + account.Code }); ShowNotification("./account_add.aspx", "You add a new account: " + account.Name + "(" + account.Code + ")."); } }
public bool recognizeSequence(ActionInstance inst) { if (_isProcessing) { return(false); } StopCoroutine("CheckThreadsCoroutine"); _isProcessing = true; List <ActionData> actions = ActionDatabase.instance.actionsData; foreach (ActionData d in actions) { RecognitionThread w = new RecognitionThread(inst, d, stepConstraints); Thread t = new Thread(new ThreadStart(w.process)); _recognitionThreads.Add(t); _recognitionWorkers.Add(w); t.Start(); } StartCoroutine(CheckThreadsCoroutine()); return(true); }
private RPLActionInfo WriteActionInstance(ActionInstance actionInst, PageContext pageContext) { if (actionInst == null) { return(null); } RPLActionInfo rPLActionInfo = new RPLActionInfo(1); RPLAction rPLAction = null; rPLAction = ((actionInst.Label == null) ? new RPLAction() : new RPLAction(actionInst.Label)); if (actionInst.Hyperlink != null) { ReportUrl hyperlink = actionInst.Hyperlink; if (hyperlink != null) { Uri uri = hyperlink.ToUri(); if ((Uri)null != uri) { rPLAction.Hyperlink = uri.AbsoluteUri; } } } else if (actionInst.BookmarkLink != null) { rPLAction.BookmarkLink = actionInst.BookmarkLink; } rPLActionInfo.Actions[0] = rPLAction; return(rPLActionInfo); }
private void NewType() { var t = TypeInstance.GetObject(); BuildType(t); var check = TypeInstance.Find(f => f.Name.Equals(t.Name)); if (null != check) { ShowNotification("./equipment_type.aspx", "Cannot add new Equipment type, The name of \"" + t.Name + "(" + t.Code + ")\" is exist.", false); return; } else { TypeInstance.Add(t); // 保存历史记录 SaveHistory(new TB_AccountHistory { ActionId = ActionInstance.Find(f => f.Name.Equals("AddEquipmentType")).id, ObjectA = "[id=" + t.id + "] " + t.Name + ", " + t.Code }); ShowNotification("./equipment_type.aspx", "You have added a new Equipment type: " + t.Name + "(" + t.Code + ")."); } }
public void InterruptAnimateAction() { if (!_animator.GetCurrentAnimatorStateInfo(0).IsName("Death")) { _animator.SetTrigger("Idle"); } _actionBeingExecuted = null; }
public RecognitionThread(ActionInstance seq, ActionData subseq, mIndex[] stepConstraints) { _seq = seq; _subseq = subseq; dtw = new DTW(stepConstraints); _isDone = false; }
protected void btDelete_Click(object sender, EventArgs e) { // 删除设备 var id = ParseInt(Utility.Decrypt(_key)); var equipment = EquipmentInstance.Find(f => f.id == id); if (null == equipment) { ShowNotification("./equipment_setting.aspx?key=" + Utility.UrlEncode(_key), "Not found the equipment", false); } else { string number = EquipmentInstance.GetFullNumber(equipment); if ((int?)null != equipment.Terminal) { var ter = equipment.TB_Terminal.Number; // 解绑终端 TerminalInstance.Update(f => f.id == equipment.Terminal, act => { act.HasBound = false; }); // 保存解绑终端历史 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("Unbind")).id, ObjectA = "unbind terminal(delete equipment) " + ter + " and equipment " + EquipmentInstance.GetFullNumber(equipment) }); } // 更新Deleted=true EquipmentInstance.Update(f => f.id == equipment.id, act => { act.Deleted = true; act.GpsAddress = ""; act.IP = ""; act.LastAction = ""; act.LastActionBy = ""; act.LastActionTime = null; act.Latitude = 0.0; act.Longitude = 0.0; act.OnlineStyle = null; act.OnlineTime = null; act.Port = 0; act.Rpm = 0; act.Runtime = 0; act.ServerName = ""; act.Signal = 0; act.Socket = 0; act.Terminal = null; act.Voltage = "G0000"; }); // 保存删除设备历史 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("Unbind")).id, ObjectA = "delete equipment " + number }); ShowNotification("./equipment_inquiry.aspx", "You have deleted a equipment: " + number); } }
void _playAction(ActionInstance data) { AgentController[] agents = (AgentController[])FindObjectsOfType(typeof(AgentController)); foreach (AgentController agent in agents) { agent.playOnce = playOnce; agent.StartAction(data); } }
private static void Subscribe(int id, ActionInstance instance, Dictionary <int, List <ActionInstance> > dictionary) { if (!dictionary.ContainsKey(id)) { dictionary.Add(id, new List <ActionInstance>()); } dictionary[id].Add(instance); }
protected void btCheckoutStorage_Click(object sender, EventArgs e) { var id = int.Parse(hidCheckEquipmentId.Value); var equipment = EquipmentInstance.Find(f => f.id == id && f.Deleted == false); if (null == equipment) { ShowNotification("./equipment_checkout.aspx", "Cannot find the equipment.", false); //return; } else { DateTime begin; try { begin = DateTime.Parse(outTime.Value.Trim()); } catch { begin = DateTime.Now; } EquipmentInstance.Update(f => f.id == equipment.id, act => { // 出厂时,如果是普通车辆,则直接划为车辆状态,不参与出库/入库流程 if (act.TB_EquipmentModel.TB_EquipmentType.IsVehicle == true) { act.Status = StatusInstance.Find(f => f.IsItVehicle == true).id; } else { act.Status = int.Parse(ddlOuttype.SelectedValue); } act.Customer = int.Parse(hidCheckCustomerId.Value); // 出库时的总运转时间 act.OutdoorWorktime = equipment.Runtime; // 出库的时间 act.OutdoorTime = begin; // 出库后库存信息置为null act.Warehouse = null; }); equipment = EquipmentInstance.Find(f => f.id == equipment.id); // 保存出库历史记录 var history = StoreInstance.GetObject(); history.Equipment = equipment.id; history.Status = equipment.Status; history.Stocktime = begin; // 设备的出入库次数,入库时增1,出库时不变 history.StoreTimes = equipment.StoreTimes; history.Warehouse = null; StoreInstance.Add(history); // 保存操作历史记录 SaveHistory(new TB_AccountHistory() { ActionId = ActionInstance.Find(f => f.Name.Equals("Deliver")).id, ObjectA = EquipmentInstance.GetFullNumber(equipment) + " check out(" + ddlOuttype.SelectedItem.Text + ") to: " + equipment.TB_Customer.Name }); ShowNotification("./equipment_checkout.aspx", "\"" + EquipmentInstance.GetFullNumber(equipment) + "\" has delivered."); } }
public void process() { ActionInstance inst = _subseq.actionInstances[0]; warppath = dtw.warpSubsequenceDTW(_seq.poses.ToArray(), inst.poses.ToArray()); Debug.Log("worker thread done " + _subseq.actionId + ", cost " + dtw.getWarpPathCost()); _isDone = true; }
IEnumerator StartActionCoroutine(ActionInstance data) { if (isMoving) { yield return(StartCoroutine(StopActionCoroutine())); } isMoving = true; StartCoroutine(PerformCoroutine(data)); }
IEnumerator StartActionCoroutine(ActionInstance data) { if (isMoving) { yield return StartCoroutine(StopActionCoroutine()); } isMoving = true; StartCoroutine(PerformCoroutine(data)); }
internal List <ActionInstance> RecursiveBindings(ActionInstance instanceBase, List <CharModel> openCandidateList, List <RoleBinding> RoleSet, int depth = 0)//the ActionInstance passed at the base of the recursion should only have the actor role bound { List <ActionInstance> boundInstances = new List <ActionInstance>(); if (RoleSet.Count == 0 || depth == RoleSet.Count) { return(boundInstances); } foreach (var character in openCandidateList) { ActionInstance RecursionInstance = new ActionInstance(instanceBase); RecursionInstance.InvolvedCharacters.Add(RoleSet[depth].role, character.Character); bool isValidCandidate = true; foreach (var condition in RoleSet[depth].conditions.conditions) { if (!condition.isMet(RecursionInstance.InvolvedCharacters, worldModel))//character did not meet a condition for this role { isValidCandidate = false; break; } } if (isValidCandidate) { var recursionOpenlist = new List <CharModel>(openCandidateList); recursionOpenlist.Remove(character); if (depth == RoleSet.Count - 1)//this is a completely bound instance, add it to the list to be returned { //RecursionInstance.RunControlledPreferenceRules(); boundInstances.Add(RecursionInstance); } var additionalBindings = RecursiveBindings(RecursionInstance, recursionOpenlist, RoleSet, depth + 1); if (additionalBindings == null) { return(null); //action has been aborted } boundInstances.AddRange(additionalBindings); //this will contain finished bindings only } } if (boundInstances.Count > Electrum.MaxBindingCandidatesAbort) { Debug.LogError("Error : " + name + " found more possible bindings combinations than the " + Electrum.MaxBindingCandidatesAbort + " limit on the " + instanceBase.Template.name + " action. Action discarded."); return(null); } if (!instanceBase.Template.ActorControlledRoles[depth].Mandatory && depth != instanceBase.Template.ActorControlledRoles.Count - 1)//creates an extra branch with current depth's role unassigned if it is not mandatory { var additionalBindings = RecursiveBindings(instanceBase, openCandidateList, RoleSet, depth + 1); if (additionalBindings == null) { return(null); //action is aborted } boundInstances.AddRange(additionalBindings); } return(boundInstances);//should contain all completely bound possible instances of the action. If empty it means no set of characters fullfilled all conditions }
private List <ActionInstance> FindControlledBindings(Action action)//Looks for all valid bindings that are under the character control, Proably a major memory hog on some "domains" and also slow { var unboundInstance = new ActionInstance(action, new Dictionary <Role, Character>()); unboundInstance.InvolvedCharacters.Add(Role.actor, this);//binds the acting character var OpenCandidateList = new List <CharModel>(worldModel.Characters.Values); OpenCandidateList.Remove(worldModel.Characters[this]); //This is one of the point where we could do manual memory management, this is going to make a LOT of garbage return(RecursiveBindings(unboundInstance, OpenCandidateList, action.ActorControlledRoles)); }
private float EvaluateBindingsAffinity(List <ActionInstance> possibleBindingsinstances) { float Attractiveness = 1.0f; for (int i = 0; i < possibleBindingsinstances.Count; i++) { ActionInstance binding = possibleBindingsinstances[i]; Attractiveness *= Mathf.Pow(binding.Affinity, binding.expectedProbability); } return(Attractiveness); }
// perform next pose // update joint rotation or position based on which type of skeleton is used based on user input void perform(ActionInstance data) { Pose p = data.poses[currpose]; for(int i = 0; i < p.joint_locations.Count; i++) { if (joints[i] != null) { if (xyzData) { joints[i].UpdatePosition((Vector3)p.joint_locations[i]); } else { joints[i].UpdateLocalRotation(p.getJointRot(joints[i].jointType)); } } } }
public bool recognizeSequence(ActionInstance inst) { if (_isProcessing) return false; StopCoroutine("CheckThreadsCoroutine"); _isProcessing = true; List<ActionData> actions = ActionDatabase.instance.actionsData; foreach(ActionData d in actions) { RecognitionThread w = new RecognitionThread(inst, d, stepConstraints); Thread t = new Thread(new ThreadStart(w.process)); _recognitionThreads.Add(t); _recognitionWorkers.Add(w); t.Start(); } StartCoroutine(CheckThreadsCoroutine()); return true; }
IEnumerator PerformCoroutine(ActionInstance data) { while(isMoving) { yield return new WaitForSeconds(1.0f/framesPerSecond); perform(data); // print(currpose); currpose++; if (currpose >= data.poses.Count) { currpose = 0; if (playOnce) { break; } } } }
public void StartAction(ActionInstance data) { StartCoroutine(StartActionCoroutine(data)); }
void OnRecognitionDone(ActionData matchedinst, ActionInstance insttomatch, DTW dtw) { ActionInstance warpedinst = new ActionInstance(); foreach(mIndex idx in dtw.WarpPath) { warpedinst.poses.Add(insttomatch.poses[idx.x]); } print("-- cost " + matchedinst.actionId + " " + dtw.getWarpPathCost()); onRecognitionFinished(matchedinst.actionId, warpedinst); }
void OnRecognitionEnd(string actionId, ActionInstance newinst) { _message = "Recognition Done\n"; _message += " - Class: " + actionId + "\n"; _playAction(newinst); }
void _playAction(ActionInstance data) { AgentController[] agents = (AgentController[])FindObjectsOfType(typeof(AgentController)); foreach(AgentController agent in agents) { agent.playOnce = playOnce; agent.StartAction(data); } }
void OnGUI() { GUI.skin = guiSkin; if (fileBrowser != null) { fileBrowser.OnGUI(); } if (_displayMenu) { GUI.Box(new Rect(0.2f*Screen.width, 0.2f*Screen.height, 0.6f*Screen.width, 0.6f*Screen.height), ""); GUILayout.BeginArea(new Rect(0.2f*Screen.width, 0.2f*Screen.height, 0.6f*Screen.width, 0.6f*Screen.height)); GUILayout.BeginVertical(); // action id GUILayout.BeginHorizontal(); GUILayout.Label("Action Name"); actionName = GUILayout.TextField(actionName, GUILayout.MinWidth(0.4f*Screen.width), GUILayout.MaxWidth(0.4f*Screen.width)); GUILayout.EndHorizontal(); // action instance GUILayout.BeginHorizontal(); GUILayout.Label("Action File path"); if (GUILayout.Button(actionFileName, GUILayout.MinWidth(0.4f*Screen.width), GUILayout.MaxWidth(0.4f*Screen.width))) { fileBrowser = new FileBrowser( new Rect(0.2f*Screen.width, 0.2f*Screen.height, 0.6f*Screen.width, 0.6f*Screen.height), "Action File", actionFileName, onActionChosen); fileBrowser.SelectionPattern = "*.txt"; _displayMenu = false; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Perform Action", GUILayout.MinWidth(0.4f*Screen.width), GUILayout.MaxWidth(0.4f*Screen.width))) { ActionInstance data = new ActionInstance(actionFileName); _playAction(data); setMenuVisible(false); } playOnce = GUILayout.Toggle(playOnce, "Once"); GUILayout.EndHorizontal(); if (GUILayout.Button("Add Action")) { // create action data if not exist in database // add new action instance to actiondata // save action data to database ActionData data = ActionDatabase.instance.getAction(actionName); if (data == null) { data = new ActionData(actionName); } ActionInstance actionInst = new ActionInstance(actionFileName); data.actionInstances.Add(actionInst); ActionDatabase.instance.addAction(data); setMenuVisible(false); } if (GUILayout.Button("Remove Action")) { ActionDatabase.instance.removeAction(actionName); setMenuVisible(false); } if (GUILayout.Button("Recognize Action")) { // recognize a sequence // if nothing exists or no matching subsequence, add as a new sequence // otherwise, add new subsequence to data if (ActionRecognizer.instance.recognizeSequence(new ActionInstance(actionFileName))) { _message = "Performing Recognition..."; } else { _message = "Recognition already in progress"; } setMenuVisible(false); } GUILayout.EndVertical(); GUILayout.EndArea(); } GUI.Box(new Rect(0,0,0.2f*Screen.width,0.2f*Screen.height), ""); GUILayout.BeginArea(new Rect(0,0,0.2f*Screen.width,0.2f*Screen.height)); GUILayout.Label(_actionsList+"\n--\n"+_message); GUILayout.EndArea(); }