using ET.FUIPeople; using FairyGUI; using UnityEngine; namespace ET { public class OperationComponentAwakeSystem: AwakeSystem { public override void Awake(OperationComponent self) { self.Awake(); } } public class OperationComponentUpdateSystem : UpdateSystem { public override void Update(OperationComponent self) { self.Update(); } } [FriendClass(typeof(OperationComponent))] [FriendClass(typeof(FUIComponent))] [FriendClass(typeof(FUI))] public static class OperationComponentSystem { public static void Awake(this OperationComponent self) { self.CameraComp = self.ZoneScene().CurrentScene().GetComponent(); // 操作事件 var uiComp = self.ZoneScene().GetComponent(); var holder = uiComp.Root.GObject; SwipeGesture moveGesture = new SwipeGesture(holder); moveGesture.onBegin.Add(self.OnSwipeDown); moveGesture.onMove.Add(self.OnSwipeMove); moveGesture.onEnd.Add(self.OnSwipeUp); PinchGesture scaleGesture = new PinchGesture(holder); scaleGesture.onAction.Add(self.OnPinch); } public static void Update(this OperationComponent self) { #if UNITY_EDITOR || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX if (self.Enabled) { if (!Stage.isTouchOnUI) { self.ProcessMouseEvents(); } } if (Input.GetKeyDown(KeyCode.P)) { Log.Debug("开启作弊器"); var com = self.ZoneScene().GetComponent(); var win = com.ShowWindow(); } #endif if (Input.GetKeyUp(KeyCode.K)) { var fuiComp = self.ZoneScene().GetComponent(); var skillTestWin = fuiComp.GetWindow(FUI_SkillTestWindow.UIResName); // var skillTestWinComp = fuiComp.ShowWindow(FUI_SkillTestWindow.UIPackageName); // skillTestWinComp.ShowInfo(); if (skillTestWin == null) { var skillTestWinComp = fuiComp.ShowWindow(FUI_SkillTestWindow.UIPackageName); skillTestWinComp.ShowInfo(); } else { var skillTestWinComp = skillTestWin as FUISkillTestWindowComponent; if (skillTestWinComp.IsShowing) { skillTestWin.Window.Hide(); } else { skillTestWin.Window.Show(); } } } } public static void OnSwipeDown(this OperationComponent self, EventContext context) { SwipeGesture gesture = (SwipeGesture)context.sender; self.mouseDownPos = gesture.position; self.cameraDownPos = self.CameraComp.GetCameraPos(); } public static void OnSwipeMove(this OperationComponent self, EventContext context) { if (self.Enabled && !Stage.isTouchOnUI) { self.IsDragging = true; SwipeGesture gesture = (SwipeGesture)context.sender; // 因为下面会改变Camera位置,所以mouseDownPos的toWorld也要重新算 Vector3 deltaPos = self.CameraComp.ScreenToWorldPoint(gesture.position) - self.CameraComp.ScreenToWorldPoint(self.mouseDownPos); //Debug.Log(deltaPos); deltaPos.y = -deltaPos.y; self.cameraTargetPos = self.cameraDownPos - deltaPos; self.CameraComp.SetCameraPosClamped(self.cameraTargetPos); } } public static void OnSwipeUp(this OperationComponent self, EventContext context) { self.IsDragging = false; } public static void OnPinch(this OperationComponent self, EventContext context) { if (!Stage.isTouchOnUI) { PinchGesture gesture = (PinchGesture)context.sender; self.CameraComp.ZoomCamera(gesture.delta); } } public static void ProcessMouseEvents(this OperationComponent self) { if (Input.mouseScrollDelta.y != 0) { self.CameraComp.ZoomCamera(Input.mouseScrollDelta.y); } } } }