public void PauseAllBrush() { for (int i = this.m_currentActiveBrushList.Count - 1; i >= 0; --i) { PaintBrush activeBrush = this.m_currentActiveBrushList[i]; activeBrush.PauseBrush(); } }
private void OnDrawingEnd(Gesture gesture) { if (this.m_currentBrush != null) { this.m_currentBrush.ForceBeginFade(Time.time); this.m_currentBrush = null; } }
/// <summary> /// 回收画笔 /// </summary> /// <param name="paintBrush"></param> private void RecycleBrush(PaintBrush paintBrush) { this.m_brushPoolDict[paintBrushMode].Free(paintBrush); SortOrderAllocer--; for (int i = 0; i < this.m_currentActiveBrushList.Count; ++i) this.m_currentActiveBrushList[i].BrushSortOrder--; }
/// <summary> /// 更换画笔 /// </summary> /// <returns></returns> private PaintBrush ChangeBrush(Vector3 position) { PaintBrush brush = this.m_brushPoolDict[paintBrushMode].Alloc(); if (brush == null) { if (this.paintBrushMode == PaintBrushMode.MULTIPLE) { brush = new TrailPaintBrush(); brush.BrushSize = GameConst.TRAIL_BRUSH_SIZE; } else { //todo:有时间重构 for (int i = 0; i < this.m_currentActiveBrushList.Count; ++i) { if (this.m_currentActiveBrushList[i].PaintBrushType == PaintBrush.BrushType.ONETIME_BRUSH) { brush = this.m_currentActiveBrushList[i]; this.m_currentActiveBrushList.Remove(brush); break; } } if (brush == null) { brush = new OneTimeBrush(); brush.BrushSize = GameConst.DARK_SCENE_BRUSH_SIZE; } } brush.BrushFadeTime = BrushFadeoutTime; brush.BrushTime = BrushTime; brush.InitBrush(position); } this.m_currentBrush = brush; this.m_currentBrush.BrushSortOrder = ++SortOrderAllocer; this.m_currentBrush.BrushStartTime = Time.time; this.m_currentBrush.BrushPaintStatus = PaintBrush.BrushStatus.PAINTING; this.m_currentActiveBrushList.Add(this.m_currentBrush); return brush; }
private void Update() { for (int i = this.m_currentActiveBrushList.Count - 1; i >= 0; --i) { PaintBrush activeBrush = this.m_currentActiveBrushList[i]; switch (activeBrush.BrushPaintStatus) { case PaintBrush.BrushStatus.FADING: case PaintBrush.BrushStatus.PAINTING: activeBrush.Tick(); break; case PaintBrush.BrushStatus.FADEEND: RecycleBrush(activeBrush); this.m_currentActiveBrushList.Remove(activeBrush); break; } } }
private void OnDrawing(Gesture gesture) { if (SceneModule.Instance.CurrentScene != null && SceneModule.Instance.CurrentScene is GameSceneBase) { if (((GameSceneBase)SceneModule.Instance.CurrentScene).CurGameStatus != SceneBase.GameStatus.GAMING) { return; } } if (gesture.deltaPosition.sqrMagnitude < SWIPE_THRESHOLD) return; Vector3 brushWorldPos = this.m_brushCamera.ScreenToWorldPoint(new Vector3(gesture.position.x, gesture.position.y)); brushWorldPos.z = BrushWorldZ; if (this.m_currentBrush == null || Time.time - this.m_currentBrush.BrushStartTime > BrushTime) this.m_currentBrush = ChangeBrush(brushWorldPos); this.m_currentBrush.BrushTransform.position = brushWorldPos; this.m_currentBrush.IsActive = true; }