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 obfuscateSpecifiedNamespacesRecursively: 1
obfuscateNamespaces: obfuscateNamespaces:
- Assets.AR - 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 replaceLiteralsOnSkippedClasses: 1
obfuscateUnityReflectionMethods: 1 obfuscateUnityReflectionMethods: 1
inheritBeebyteAttributes: 0 inheritBeebyteAttributes: 0

View File

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

View File

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

View File

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

View File

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