private void nextTest() { switch (nowStatus) { case NowStatus.NoEngNoChi: EngGrid.Visibility = Visibility.Visible; nowStatus = NowStatus.NoChi; break; case NowStatus.NoChi: ChiLB.Visibility = Visibility.Visible; nowStatus = NowStatus.ShowAll; break; case NowStatus.ShowAll: if (nowIndex == sentences.Count - 1) { return; } nowIndex++; setTest(); nowStatus = NowStatus.NoEngNoChi; break; } }
// 开始执行操作列表 public void DoOperateList() { if (NowElement != null && NowElement.CanOperate) { nowOperate = -1; nowStatus = NowStatus.Push; } }
// 按照操作类型执行 private void DoSth(Operate op) { Transform t = op.Object; if (t == null) { t = nowElement.transform; } switch (op.Type) { case OperateType.Translate: t.localPosition += (op.EndPosition - op.StartPosition) / op.Time * Speed * Time.deltaTime; break; case OperateType.Rotate: // 要把局部坐标和向量转化为世界坐标 t.RotateAround(op.pointSpace == Space.Local?t.TransformPoint(op.Point): op.Point, op.axisSpace == Space.Local ? t.TransformDirection(op.Axis): op.Axis, (op.Angle) / op.Time * Speed * Time.deltaTime); break; case OperateType.TranslateAndRotate: t.localPosition += (op.EndPosition - op.StartPosition) / op.Time * Speed * Time.deltaTime; t.RotateAround(op.pointSpace == Space.Local ? t.TransformPoint(op.Point) : op.Point, op.axisSpace == Space.Local ? t.TransformDirection(op.Axis) : op.Axis, (op.Angle) / op.Time * Speed * Time.deltaTime); break; default: break; } timer += Time.deltaTime * Speed; // 操作结束 if (timer >= op.Time) { timer = 0; nowStatus = NowStatus.Push; } }
void Update() { if (nowStatus == NowStatus.Push) { // 设定好当前要进行的操作并开始进行 nowOperate++; if (nowOperate < NowElement.List.list.Count) { nowStatus = NowStatus.Do; } else { // 操作结束,回调 nowStatus = NowStatus.None; nowOperate = -1; NowElement.Finish(); cameraControl.BackToNormal(); } } else if (nowStatus == NowStatus.Do) { DoSth(NowElement.List.list[nowOperate]); } }
private void backTest() { switch (nowStatus) { case NowStatus.NoEngNoChi: if (nowIndex == 0) { return; } nowIndex--; setTest(); break; case NowStatus.NoChi: EngGrid.Visibility = Visibility.Hidden; nowStatus = NowStatus.NoEngNoChi; break; case NowStatus.ShowAll: ChiLB.Visibility = Visibility.Hidden; nowStatus = NowStatus.NoChi; break; } }