using System.Collections; using System.Collections.Generic; using UnityEngine; using AX.MessageSystem; using System; public class ObjRotate : MonoBehaviour { public float rotateSpeed = 60; // Use this for initialization protected virtual void Start() { MessageDispatcher.AddListener("ReplayEvent", ReplayEventRoate); } protected virtual void AddRecordEventRoage(RecordEventType type) { if (ReplaySetting.PlayStatus == PlayStatus.isEditor && RecordManager.Instance.recordStatus == RecordStatus.normal) { var eventData = new EventData(); eventData.time = RecordManager.Instance.RecordTimer; eventData.cloneObjType = GetComponent().gameObjType; eventData.eventType = RecordEventType.Rotate; RotateData data = new RotateData() { gamename = gameObject.name, localEulerAngles = transform.localEulerAngles, }; eventData.json = Newtonsoft.Json.JsonConvert.SerializeObject(data); RecordManager.Instance.jsonData.eventDataList.Add(eventData); } } protected virtual void ReplayEventRoate(IMessage obj) { var eventData = (EventData)obj.Data; if (eventData.eventType == RecordEventType.Rotate) { RotateData data = Newtonsoft.Json.JsonConvert.DeserializeObject(eventData.json); if (data.gamename == gameObject.name) { transform.localEulerAngles = data.localEulerAngles; } } } // Update is called once per frame void Update() { } void OnEnable() { MessageDispatcher.AddListener("LEFT_ROTATE_COMMAND", LeftRotate); MessageDispatcher.AddListener("RIGHT_ROTATE_COMMAND", RightRotate); MessageDispatcher.AddListener("UP_ROTATE_COMMAND", UpRotate); MessageDispatcher.AddListener("DOWN_ROTATE_COMMAND", DownRotate); } void OnDisable() { MessageDispatcher.RemoveListener("LEFT_ROTATE_COMMAND", LeftRotate); MessageDispatcher.RemoveListener("RIGHT_ROTATE_COMMAND", RightRotate); MessageDispatcher.RemoveListener("UP_ROTATE_COMMAND", UpRotate); MessageDispatcher.RemoveListener("DOWN_ROTATE_COMMAND", DownRotate); } void OnDestroy() { MessageDispatcher.RemoveListener("LEFT_ROTATE_COMMAND", LeftRotate); MessageDispatcher.RemoveListener("RIGHT_ROTATE_COMMAND", RightRotate); MessageDispatcher.RemoveListener("UP_ROTATE_COMMAND", UpRotate); MessageDispatcher.RemoveListener("DOWN_ROTATE_COMMAND", DownRotate); MessageDispatcher.RemoveListener("ReplayEvent", ReplayEventRoate); } protected virtual void LeftRotate(IMessage obj) { if (SelectedObjs.selectedObj == gameObject || (SelectedObjs.selectedCharacters.Count>0&&gameObject == SelectedObjs.selectedCharacters[0])) { if (gameObject.GetComponent()) { if (gameObject.GetComponent().ControlTruckArmFlag) { return; } } transform.Rotate(0, -Time.deltaTime * rotateSpeed, 0, Space.World); AddRecordEventRoage(RecordEventType.LeftRotate); } } protected virtual void RightRotate(IMessage obj) { if (SelectedObjs.selectedObj == gameObject|| (SelectedObjs.selectedCharacters.Count > 0 && gameObject == SelectedObjs.selectedCharacters[0])) { if (gameObject.GetComponent()) { if (gameObject.GetComponent().ControlTruckArmFlag) { return; } } transform.Rotate(0, Time.deltaTime * rotateSpeed, 0, Space.World); AddRecordEventRoage(RecordEventType.RightRotate); } } protected virtual void UpRotate(IMessage obj) { } protected virtual void DownRotate(IMessage obj) { } }