void OnDestroy() { ScriptCommand cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.SceneLeave, 1); cmd.CallParams.WriteInt(GameSceneCtr.mIns.CurScene.buildIndex); cmd.ExcuteAndRelease(); }
private KdTree.ObstacleTreeNode Assign2Kdtree(KdtreeObstacleTreeNode treenode, Dictionary <int, KdtreeObstacle> dic, Dictionary <int, KdtreeObstacleTreeNode> treedic, Dictionary <int, Obstacle> obsdic) { if (treenode == null || treenode.id == -1) { return(null); } KdTree.ObstacleTreeNode kdnode = new KdTree.ObstacleTreeNode(); kdnode.obstacle_ = CreateObstacle(dic[treenode.obstacleID], dic, obsdic); KdTree.ObstacleTreeNode left = Assign2Kdtree(treenode.leftID != -1 ? treedic[treenode.leftID]:null, dic, treedic, obsdic); KdTree.ObstacleTreeNode right = Assign2Kdtree(treenode.rightID != -1 ?treedic[treenode.rightID]:null, dic, treedic, obsdic); ScriptCommand setleft_cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.SET_LEFT_LEAF); ScriptCommand setright_cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.SET_RIGHT_LEAF); setleft_cmd.CallParams.WriteObject(kdnode); setleft_cmd.CallParams.WriteObject(left); setleft_cmd.ExcuteAndRelease(); setright_cmd.CallParams.WriteObject(kdnode); setright_cmd.CallParams.WriteObject(right); setright_cmd.ExcuteAndRelease(); return(kdnode); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); Navmesh2Obstacle script = target as Navmesh2Obstacle; if (GUILayout.Button("Do Mesh 2 Obstacle")) { ScriptCommand cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.DO_MESH_2_OBS); cmd.CallParams.WriteObject(script); cmd.ExcuteAndRelease(); } if (GUILayout.Button("Add to rvo")) { ScriptCommand cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.DO_ADD_2_RVO); cmd.CallParams.WriteObject(script); cmd.ExcuteAndRelease(); } }
public KdTree CopythisToKdtree(IList <Obstacle> target) { KdTree tree = new KdTree(); Dictionary <int, KdtreeObstacle> dic = new Dictionary <int, KdtreeObstacle>(); for (int i = 0; i < obstacles.Count; ++i) { dic[obstacles[i].id_] = obstacles[i]; } Dictionary <int, KdtreeObstacleTreeNode> treedic = new Dictionary <int, KdtreeObstacleTreeNode>(); for (int i = 0; i < treenodes.Count; ++i) { treedic[treenodes[i].id] = treenodes[i]; } Dictionary <int, Obstacle> obsdic = new Dictionary <int, Obstacle>(); KdTree.ObstacleTreeNode treenode = Assign2Kdtree(treedic[0], dic, treedic, obsdic); ScriptCommand setnode_cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.SET_KDTREE_TREENODE); setnode_cmd.CallParams.WriteObject(tree); setnode_cmd.CallParams.WriteObject(treenode); setnode_cmd.ExcuteAndRelease(); //assign obstacles target.Clear(); var en = obsdic.GetEnumerator(); while (en.MoveNext()) { target.Add(en.Current.Value); } return(tree); }
internal void UpdateInFrame(long cnt) { if (runners.Count == 0) { return; } List <NodeCanvas> values = GetAllFSM(); for (int i = 0; i < values.Count; ++i) { NodeCanvas nodecanvas = values[i]; if (nodestates.ContainsKey(nodecanvas)) { FSMRunerState runningstate = nodestates[nodecanvas]; if (runningstate.isRunning && runningstate.current != null) { FSMElement current = runningstate.current; FSMElement laststate = runningstate.laststate; if (laststate != null) { if (laststate != current) { // LogMgr.LogError("this is " + nodecanvas); ScriptCommand exitcmd = ScriptCommand.Create((int)FrameWorkCmdDefine.FSMCallExit); exitcmd.CallParams.WriteObject(laststate); exitcmd.ExcuteAndRelease(); ScriptCommand entercmd = ScriptCommand.Create((int)FrameWorkCmdDefine.FSMCallEnter); entercmd.CallParams.WriteObject(current); entercmd.ExcuteAndRelease(); } } else { // LogMgr.LogError("this is " + nodecanvas); ScriptCommand cmd = ScriptCommand.Create((int)FrameWorkCmdDefine.FSMCallEnter); cmd.CallParams.WriteObject(current); cmd.ExcuteAndRelease(); } runningstate.laststate = current; bool ret = current.UpdateFrameInFSM(cnt); if (!ret && runningstate.isRunning) { FSMElement next = current.SelectForNext(); if (next != null) { runningstate.current = next; } else { ScriptCommand exitcmd = ScriptCommand.Create((int)FrameWorkCmdDefine.FSMCallExit); exitcmd.CallParams.WriteObject(current); exitcmd.ExcuteAndRelease(); runningstate.isRunning = false; this.CallFinishCanvas(nodecanvas); } } } } } ListPool.TryDespawn(values); }