Ant+代码混淆

This commit is contained in:
lishuo 2023-05-15 19:02:41 +08:00
parent 191efae2dd
commit 16cd2fd26b
5 changed files with 169 additions and 132 deletions

View File

@ -216,6 +216,12 @@ MonoBehaviour:
obfuscateSpecifiedNamespacesRecursively: 1
obfuscateNamespaces:
- Assets.AR
- Assets.Scripts.Devices.Ant
- Assets.Scripts.Devices.Ant.Interfaces
- Assets.Scripts.Devices.Ant.LegacyPages
- Assets.Scripts.Devices.Ant.Messages
- Assets.Scripts.Devices.Ant.Pages.CalibrationPages
- Assets.Scripts.Devices.Ant.Pages
replaceLiteralsOnSkippedClasses: 1
obfuscateUnityReflectionMethods: 1
inheritBeebyteAttributes: 0

View File

@ -266,20 +266,18 @@ namespace Assets.Scripts.Devices.Ant
if (response.messageContents.Length == 3) return;
var str = string.Join(",", response.messageContents);
var cc = usedChannels.Where(d => d.Index == channelIndex).FirstOrDefault();
var dd = discoveredDevices.SingleOrDefault(d => d.searchProfile.deviceNumber.ToString() == cc.DeviceNumber && d.searchProfile.deviceType.ToString() == cc.DeviceTypeId);
if (dd != null)
var cc = usedChannels.FirstOrDefault(d => d.Index == channelIndex);
var dd = discoveredDevices.SingleOrDefault(d => cc != null && d.searchProfile.deviceNumber.ToString() == cc.DeviceNumber && d.searchProfile.deviceType.ToString() == cc.DeviceTypeId);
if (dd == null) return;
if (dd.State == DeviceState.Connecting)
{
if (dd.State == DeviceState.Connecting)
{
dd.State = DeviceState.Connected;
//IsBackgroundScanning = true;
//ReSearch();
//StartNextSearch();
return;
}
dd.handleChannelResponse(response);
dd.State = DeviceState.Connected;
//IsBackgroundScanning = true;
//ReSearch();
//StartNextSearch();
return;
}
dd.handleChannelResponse(response);
}
public bool SendMessage(byte msgID, byte[] msgData)

View File

@ -44,18 +44,25 @@ namespace Assets.Scripts.Scenes.VideoRide
private GameObject OnlinePlayer_NV;
private bool isStop { get; set; }
VideoLoading videoLoading { get; set; }
//当前是第一人称还是第三人称
public ViewMode _viewMode { get; set; }
//当前是观察者视角还是骑行者视角
public ARMode _aRMode { get; set; }
public int RankingId { get; set; }
public Dictionary<IRider, PlayerRenderer> rideObjs = new Dictionary<IRider, PlayerRenderer>();
private VideoUIManager _uiManager { get; set; }
private ARTrainingController _trainingController { get; set; }
public List<AbstractVideoPlayer> visibleRiders = new List<AbstractVideoPlayer>();//当前线路上的人
private const int limits = 5;//在线的其他人数
private double MaxVisibleDistance = 200d;//最大显示距离
float timer = 0f;
int ticks = 0;
MapRouteRankingList rankingList;
public GameObject videoPlayer;
public GameObject target;
public int CurrentUserId { get; set; }
protected override void Awake()
{
@ -73,10 +80,12 @@ namespace Assets.Scripts.Scenes.VideoRide
OnlinePlayer_NV = Resources.Load<GameObject>("UI/Prefab/AR/OnlineVideoPlayer_NV");
Player = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer");
Player_NV = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV");
_trainingController = GetComponent<ARTrainingController>();
StartCoroutine(Init());
}
void Start()
private void Start()
{
UIManager.Instance.MainPanel = GetCanvasTransform().GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("Canvas/ModalPanel").GetComponent<PFUIPanel>();
@ -110,8 +119,7 @@ namespace Assets.Scripts.Scenes.VideoRide
yield return null;
videoLoading.Init();//初始化loading页面
}
float timer = 0f;
int ticks = 0;
protected override void Update()
{
timer -= Time.deltaTime;
@ -119,23 +127,17 @@ namespace Assets.Scripts.Scenes.VideoRide
{
if (cyclingController == null)
return;
cyclingController.Run(null);
var onlineRiders = cyclingController.riders;
try
{
CreateOnlineUser(onlineRiders);
cyclingController.Run(null);//发送数据到tcp
var onlineRiders = cyclingController.riders;
CreateOnlineUser(onlineRiders); //解析tcp返回数据
if (isStart)
{
var riders = FindObjectsOfType<OnlineVideoPlayer>();
foreach (var rider in riders)
{
rider.StartAction();
}
//解决当前用户setActivefalse时仍能计算数据
if (CurrentPlayer != null && CurrentPlayer is VideoPlayer)
{
CurrentPlayer.StartAction();
}
ComputePlayerRuntimeData();
ticks++;
}
}
@ -146,7 +148,22 @@ namespace Assets.Scripts.Scenes.VideoRide
timer += 1f;
}
}
MapRouteRankingList rankingList;
//计算骑手的数据
private void ComputePlayerRuntimeData()
{
var riders = FindObjectsOfType<OnlineVideoPlayer>();
foreach (var rider in riders)
{
rider.StartAction();
}
//解决当前用户setActivefalse时仍能计算数据
if (CurrentPlayer != null && CurrentPlayer is VideoPlayer)
{
CurrentPlayer.StartAction();
}
}
public MapRouteRankingList GetRankingList(string type = "month")
{
var endTime = UIManager.Now == null ? DateTime.Now : UIManager.Now.GetDateTime();
@ -159,55 +176,58 @@ namespace Assets.Scripts.Scenes.VideoRide
return rankingList;
}
public List<AbstractVideoPlayer> visibleRiders = new List<AbstractVideoPlayer>();//当前线路上的人
private const int limits = 5;//在线的其他人数
private double MaxVisibleDistance = 200d;//最大显示距离
//创建当前线路其他选手
private void CreateOnlineUser(List<BaseRider> list)
{
list = list.Where(c => ((OnlineRiderModel)c).IsWatcher == false).ToList();
list = list.Where(c => ((OnlineRiderModel)c).IsWatcher == false).OrderByDescending(c => c.IsSelf).ToList();
//断网移除所有用户
if (list == null || list.Count == 0)
if (list.Count == 0)
{
foreach (var item in visibleRiders)
{
Debug.Log($"销毁了{item}");
DestroyImmediate(item.gameObject);
}
rideObjs.Clear();
visibleRiders.Clear();
CurrentPlayer = null;
ClearRiders();
return;
}
var trainController = GetComponent<ARTrainingController>();
//移除退出的选手
var players = FindObjectsOfType<OnlineVideoPlayer>();
foreach (var item in players)
{
var currentItem = list.FirstOrDefault(c => c.UserId == item.UserId);
if (currentItem == null)
{
rideObjs.Remove(item);
visibleRiders.Remove(item);
}
}
var currentPlayerInfo = list.FirstOrDefault(c => c.IsSelf);
var needUpdateList = list.OrderByDescending(c => c.IsSelf).ToList();
//删除离开的用户
RemovePlayers(list);
//如果当前为观察者模式且currentPlayerInfo为null随机选择以为用户观察
if (currentPlayerInfo == null)
{
currentPlayerInfo = needUpdateList.FirstOrDefault(c => c.UserId == CurrentUserId);
if(currentPlayerInfo == null)
currentPlayerInfo = needUpdateList.FirstOrDefault();
}
var current = DefaultCurrentPlayer(list);
//更新和新增用户
foreach (var item in needUpdateList)
UpdateRiders(list, current);
}
//断网清空当前线路所有用户
private void ClearRiders()
{
foreach (var item in visibleRiders)
{
DestroyImmediate(item.gameObject);
}
rideObjs.Clear();
visibleRiders.Clear();
CurrentPlayer = null;
}
//默认当前用户1.当前骑行模式下是当前用户 2.观察者模式下随机第一个用户
private BaseRider DefaultCurrentPlayer(List<BaseRider> list)
{
var current = CurrentUserId == 0 ? list.FirstOrDefault() : list.FirstOrDefault(c => c.UserId == CurrentUserId);
if(CurrentUserId == 0 && current != null)
CurrentUserId = current.UserId;
return current;
}
private void UpdateRiders(List<BaseRider> list,BaseRider current)
{
//更新和新增用户
foreach (var item in list)
{
var onlineRider = item as OnlineRiderModel;
var visibleItem = visibleRiders.FirstOrDefault(c => c.UserId == item.UserId);
if (visibleItem != null)
{
visibleItem.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
visibleItem.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, current.EndDistance, onlineRider.FrameRate.Value);
if (visibleItem.userId == CurrentUserId)
{
CurrentPlayer = visibleItem;
@ -215,70 +235,84 @@ namespace Assets.Scripts.Scenes.VideoRide
}
else
{
var diff = item.EndDistance % mapData.TotalDistance - currentPlayerInfo.EndDistance % mapData.TotalDistance;
if (Math.Abs(diff * 1000) <= MaxVisibleDistance)
var distance = item.EndDistance % mapData.TotalDistance - current.EndDistance % mapData.TotalDistance;
if (!(Math.Abs(distance * 1000) <= MaxVisibleDistance)) continue;
if (item.IsSelf)
{
GameObject obj = null;
if (!item.IsSelf)
{
if (onlineRider.Sex == 1)
{
obj = Instantiate(OnlinePlayer, transform);
}
else
{
obj = Instantiate(OnlinePlayer_NV, transform);
}
var online = obj.GetComponentInChildren<OnlineVideoPlayer>();
var rideObj = obj.GetComponentInChildren<PlayerRenderer>();
online.SetStartDistance(item.EndDistance);
rideObj.Distance = (float)online.StartDistance;
rideObj.RouteDistance = rideObj.Distance;
rideObj.UserId = item.UserId;
rideObjs.Add(online, rideObj);
visibleRiders.Add(online);
trainController.AddRider(onlineRider);
online.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
if (online.userId == CurrentUserId)
{
CurrentPlayer = visibleItem;
}
}
else
{
if (App.CurrentUser.Sex == 1)
{
var playerprefab = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer");
videoPlayer = Instantiate(playerprefab, transform);
}
else
{
var playerprefabNV = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV");
videoPlayer = Instantiate(playerprefabNV, transform);
}
CurrentUserId = App.CurrentUser.Id;
CurrentPlayer = videoPlayer.GetComponent<AbstractVideoPlayer>();
var vp = videoPlayer.GetComponent<VideoPlayer>();
vp.SetEndDistance(item.EndDistance);
CurrentPlayer.SetStartDistance(item.EndDistance);
var rideObj = videoPlayer.GetComponent<PlayerRenderer>();
rideObj.Distance = (float)CurrentPlayer.StartDistance;
rideObj.RouteDistance = rideObj.Distance;
rideObj.IsMain = true;
rideObj.UserId = item.UserId;
rideObjs.Add(CurrentPlayer, rideObj);
visibleRiders.Add(CurrentPlayer);
CurrentPlayer.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
}
CreateVideoPlayer(onlineRider,item,current);
}
else
{
CreateOnlinePlayer(onlineRider,item,visibleItem,current);
}
}
}
}
private void CreateOnlinePlayer(OnlineRiderModel onlineRider,BaseRider item,AbstractVideoPlayer visibleItem,BaseRider current)
{
var obj = CreatePlayerGameObject(false, onlineRider.Sex == 1);
var online = obj.GetComponentInChildren<OnlineVideoPlayer>();
var rideObj = obj.GetComponentInChildren<PlayerRenderer>();
online.SetStartDistance(item.EndDistance);
rideObj.Distance = (float)online.StartDistance;
rideObj.RouteDistance = rideObj.Distance;
rideObj.UserId = item.UserId;
rideObjs.Add(online, rideObj);
visibleRiders.Add(online);
_trainingController.AddRider(onlineRider);
online.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, current.EndDistance, onlineRider.FrameRate.Value);
if (online.userId == CurrentUserId)
{
CurrentPlayer = visibleItem;
}
}
private void CreateVideoPlayer(OnlineRiderModel onlineRider,BaseRider item,BaseRider current)
{
videoPlayer = CreatePlayerGameObject(true, App.CurrentUser.Sex == 1);
CurrentUserId = App.CurrentUser.Id;
CurrentPlayer = videoPlayer.GetComponent<AbstractVideoPlayer>();
var vp = videoPlayer.GetComponent<VideoPlayer>();
vp.SetEndDistance(item.EndDistance);
CurrentPlayer.SetStartDistance(item.EndDistance);
var rideObj = videoPlayer.GetComponent<PlayerRenderer>();
rideObj.Distance = (float)CurrentPlayer.StartDistance;
rideObj.RouteDistance = rideObj.Distance;
rideObj.IsMain = true;
rideObj.UserId = item.UserId;
rideObjs.Add(CurrentPlayer, rideObj);
visibleRiders.Add(CurrentPlayer);
CurrentPlayer.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, current.EndDistance, onlineRider.FrameRate.Value);
}
private GameObject CreatePlayerGameObject(bool self,bool isMale)
{
return self ? Instantiate(isMale ? Player : Player_NV, transform) : Instantiate(isMale ? OnlinePlayer : OnlinePlayer_NV, transform);
}
//移除退出的选手
private void RemovePlayers(List<BaseRider> list)
{
var players = FindObjectsOfType<OnlineVideoPlayer>();
foreach (var item in players)
{
var currentItem = list.FirstOrDefault(c => c.UserId == item.UserId);
if (currentItem != null) continue;
rideObjs.Remove(item);
visibleRiders.Remove(item);
}
}
//设置当前是骑行模式还是观察模式
public void SetCurrentMode(ARMode aRMode)
{
@ -294,9 +328,6 @@ namespace Assets.Scripts.Scenes.VideoRide
SetCyclingModel(CyclingModel.Single);
}
}
public GameObject videoPlayer;
public GameObject target;
public int CurrentUserId { get; set; }
//切换人物
public void ChangePlayer(int userId)
{

View File

@ -1009,6 +1009,8 @@ public class CyclingController : DeviceServiceMonoBase
//新增或者更新
foreach (var item in onlineRiders)
{
if(item.IsSelf) continue;
var onlineRider = item as OnlineRiderModel;
var currentUser = currentOnlineUserList.FirstOrDefault(c => c.UserId == item.UserId);
var onlineDistance = onlineRider.EndDistance - onlineRider.PreDistance;

View File

@ -11,10 +11,10 @@ EditorBuildSettings:
- enabled: 1
path: Assets/Scenes/MainScene.unity
guid: ab586a3c1bacd4a48a55178eb06fe0cc
- enabled: 1
path: Assets/Scenes/Ride.unity
guid: d9f6ee75d0d54714fb4d2f90016a28bc
- enabled: 1
path: Assets/Scenes/VideoPlay.unity
guid: f25b9f482e27079448d130ae1ed0ea34
- enabled: 1
path: Assets/Scenes/Ride.unity
guid: d9f6ee75d0d54714fb4d2f90016a28bc
m_configObjects: {}