Merge remote-tracking branch 'origin/dev_mobile_ble' into dev_mobile

# Conflicts:
#	Assets/Scripts/Scenes/MainController.cs
This commit is contained in:
Caiyanpeng committed 2021-09-28 11:30:08 +08:00
commit 5bd1c3b1ca
278 files changed
+19740 -112

No files matched your search

+2 -2
View File
@@ -36,9 +36,9 @@ public class MainController : BaseScene
//rect1.offsetMin = Vector2.zero;
//rect1.offsetMax = Vector2.zero;
//transform.Find("ModalPanel").GetComponent<RectTransform>().sizeDelta = new Vector2(844, 390);
#else
App.MainDeviceAdapter.StartScan();
#endif
//StartCoroutine(setWidth());
//App.MainDeviceAdapter.StartScan();
}
// Start is called before the first frame update
@@ -11,7 +11,7 @@ namespace Assets.Scenes.Ride.Scripts
{
public class CompetitionRankingFactory : BaseListFactory
{
private bool isInit = false;
public bool isInit = false;
private bool isnext = false;
private List<CompetitionRankingSortModel> rankingList {get;set;}
private AbstractPlayer currentPlayer { get; set; }
@@ -71,7 +71,6 @@ namespace Assets.Scenes.Ride.Scripts
int index = 0;
protected override void CreateList()
{
index = 0;
CompetitionModel s = cyclingController.cyclingController as CompetitionModel;
var ss = s?.competitionRankingModel;
rankingList = ss?.Sorts;
@@ -97,6 +96,10 @@ namespace Assets.Scenes.Ride.Scripts
//当前用户在第几页
pageIndex = (pageSize > 0 ? currentIndex / pageSize : 1) + (currentIndex % pageSize > 0 ? 1 : 0);
}
var p = pageIndex > 0 ? pageIndex : 1;
index = (p - 1) * pageSize;
Rank.text = $"{pageIndex}/{totalPages}";
var pagedList = rankingList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
//删除
@@ -126,21 +126,6 @@ namespace Assets.Scenes.Ride.Scripts
cyclingExcutor = mainController.cyclingController;
ComputeNextSlope();//计算下一个坡度相关数据
}
IEnumerator TestExcute()
{
while (true)
{
yield return new WaitForSeconds(1);
//CamControl();
timer -= Time.deltaTime;
if (timer <= 0)//定时器 一秒执行一次
{
BeforeRun();
Run();
timer = 1.0f;
}
}
}
protected virtual void Excute()
{
@@ -180,7 +165,7 @@ namespace Assets.Scenes.Ride.Scripts
characterAnimator.SetBool("ReachEnd", true);//到达终点
}
}
Compute();//接受蓝牙设备数据计算
//开始骑行
if (GetStart())
{
@@ -188,7 +173,8 @@ namespace Assets.Scenes.Ride.Scripts
{
ticks++;
}
Compute();//接受蓝牙设备数据计算
totalDistance += distance;
if (totalDistance >= mapData.TotalDistance)
{
@@ -197,8 +183,8 @@ namespace Assets.Scenes.Ride.Scripts
}
ComputeNextSlope();//计算下一个坡度相关数据和累计爬升
Record();
//数据处理
Record();//数据处理
if (totalDistance >= mapData.TotalDistance)
{
stopRecord = true;
@@ -240,10 +240,11 @@ namespace Assets.Scenes.Ride.Scripts
protected virtual void Update()
{
time -= Time.deltaTime;
while (time < 0) {
while (time < 0)
{
MoveElevationImage();
BindDataSource();
time = 1;
time += 1f;
}
MoveCamera();
}
@@ -40,7 +40,6 @@ namespace Assets.Scenes.Ride.Scripts
current = current - targetPoints > 0? current - targetPoints : 0;
}
var ss = mData.Count - targetPoints;
var interval = currentIndex - current;
int mid = (int)(graph.DataSource.HorizontalViewSize / 2);
//是否到达中间及以后的位置
@@ -51,9 +50,19 @@ namespace Assets.Scenes.Ride.Scripts
{
current = current + interval- mid;
}
if (isReachEnd)
{
current = mData.Count - targetPoints;
}
return current;
}
public double GetCurrentEnd(int currentIndex)
{
var start = GetCurrentStart(currentIndex);
return start + targetPoints;
}
public double GetRealTimeEnd()
{
return (graph.HorizontalScrolling+ graph.DataSource.HorizontalViewSize) / mData.Count();
@@ -106,6 +106,48 @@ public class CyclingController : DeviceServiceMonoBase
Transform uiParent;
GameObject uipanel { get; set; }
GameObject onlineUserPrefab3d { get; set; }
GameObject OnlineHeadPanel { get; set; }
public GameObject GetOnlineheadPanel()
{
if (OnlineHeadPanel == null)
{
OnlineHeadPanel = Resources.Load<GameObject>("UI/Prefab/Ride/OnlineHeadPanel");
}
return OnlineHeadPanel;
}
Material Graph3d { get; set; }
public Material Get3dGraph2()
{
if (Graph3d == null)
{
Graph3d = Resources.Load<Material>("UI/Material/3dGraph2");
}
return Graph3d;
}
Image CompetitionArrow { get; set; }
public Image GetCompetitionArrow()
{
if (CompetitionArrow == null)
{
CompetitionArrow = Resources.Load<Image>("UI/Prefab/Match/CompetitionArrow");
}
return CompetitionArrow;
}
Image CompetitionMobileArrow { get; set; }
public Image GetCompetitionMobileArrow()
{
if (CompetitionMobileArrow == null)
{
CompetitionMobileArrow = Resources.Load<Image>("UI/Prefab/Match/Mobile/CompetitionArrow");
}
return CompetitionMobileArrow;
}
private void Start()
{
var uicanvasScaler = UIObject.GetComponent<CanvasScaler>();
@@ -130,7 +172,8 @@ public class CyclingController : DeviceServiceMonoBase
UIManager.Instance.MainPanel = uipanel.GetComponent<PFUIPanel>();
UIManager.Instance.ModalsPanel = this.transform.Find("UI/ModalPanel").GetComponent<PFUIPanel>();
onlineUserPrefab = Resources.Load<GameObject>("UI/Prefab/Match/OnlinePlayer");
onlineUserPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/EmptyOnlinePlayer");
onlineUserPrefab3d = Resources.Load<GameObject>("UI/Prefab/Match/onlinePlayerNoScript");
miniMapPlayerPrefab = Resources.Load<GameObject>("UI/Prefab/Ride/MiniMapPlayer");
watcher = Resources.Load<GameObject>("UI/Prefab/Match/Watcher");
target = transform.Find("Target");
@@ -381,7 +424,7 @@ public class CyclingController : DeviceServiceMonoBase
private GameObject onlinePlayer { get; set; }
Vector3 MAX_SIZE = new Vector3(3f, 3f, 3f);
Vector3 MIN_SIZE = new Vector3(0.01f, 0.01f, 0.01f);
Vector3 MIN_SIZE = new Vector3(1f, 1f, 1f);
public void ChangeCurrentPlayer(int userId)
{
var coll = FindObjectsOfType<AbstractPlayer>();
@@ -389,13 +432,26 @@ public class CyclingController : DeviceServiceMonoBase
if (selectedPlayer != null)
{
currentPlayer = selectedPlayer;
selectedPlayer.transform.localScale = Is3dView? MAX_SIZE : MIN_SIZE;
if (selectedPlayer is PlayerController)
{
selectedPlayer.transform.localScale = Is3dView ? MAX_SIZE : MIN_SIZE;
}
else
{
Utils.DestroyChildren(selectedPlayer.transform);
var ss = Instantiate(onlineUserPrefab3d, selectedPlayer.transform);
ss.transform.localScale = Is3dView ? MAX_SIZE : MIN_SIZE;
}
}
var unselectedPlayers = coll.Where(c => c.UserId != userId).ToList();
foreach (var item in unselectedPlayers)
{
item.transform.localScale = MIN_SIZE;
if (item.transform.childCount > 0)
{
Utils.DestroyChildren(item.transform);
}
}
//重置海拔图进度
var currentIndex = currentPlayer.CurrentIndex;
@@ -421,6 +477,8 @@ public class CyclingController : DeviceServiceMonoBase
currentPos.y += 1f;
player.transform.position = currentPos;
playerController.currentPos = currentPos;
var trail = FindObjectOfType<TrailRenderer>();
trail.enabled = true;
Vector2d nextLatLon = Along(recorderData.EndDistance + 0.1);
//设定人物方向
@@ -514,10 +572,15 @@ public class CyclingController : DeviceServiceMonoBase
currentUser.SetDataSource(onlineTotalDistance, onlineDistance, onlineRider.Power, onlineRider.HeartRate, onlineRider.Cadence, onlineRider.TotalTicks, onlineRider.NickName, onlineRider.WeightKg, new Vector2d(onlineRider.Point.Latitude, onlineRider.Point.Longitude), index);
}
//如果是观察者且当前第一此进入场景(TODO:这样切换会闪一下待解决)
if (isWatch && currentPlayer is PlayerController)
if (isWatch && (currentPlayer is PlayerController || currentPlayer == null))
{
var userId = onlineRiders.FirstOrDefault()?.UserId??0;
var userId = onlineRiders.FirstOrDefault()?.UserId ?? 0;
ChangeCurrentPlayer(userId);
var competitionRankingFactory = FindObjectOfType<CompetitionRankingFactory>();
if (competitionRankingFactory != null)
{
competitionRankingFactory.isInit = false;
}
}
//显示观察者头像
}
@@ -531,7 +594,6 @@ public class CyclingController : DeviceServiceMonoBase
{
item.RemoveSelf();
}
var s = playerController.TotalDistance - item.TotalDistance;
}
//显示面板信息
var others = FindObjectsOfType<AbstractPlayer>();
@@ -819,6 +881,10 @@ public class CyclingController : DeviceServiceMonoBase
int index = 0;
var pointList = mapData.List;
double sumDistance = 0;
if (endDistance >= mapData.TotalDistance)
{
return pointList.Count - 1;
}
for (int i = 0; i < pointList.Count; i++)
{
@@ -831,7 +897,7 @@ public class CyclingController : DeviceServiceMonoBase
break;
}
}
index = endDistance >= mapData.TotalDistance ? index + 1 : index;
index = endDistance >= mapData.TotalDistance ? pointList.Count - 1 : index;
return index;
}
public Vector2d Along(double endDistance)
@@ -33,9 +33,11 @@ namespace Assets.Scenes.Ride.Scripts
if (mainController.cyclingController.Mode == CyclingModel.Competition)
{
#if UNITY_IOS || UNITY_ANDROID
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Match/Mobile/CompetitionArrow"), uiObject);
var CompetitionArrow = mainController.GetCompetitionMobileArrow();
arrowImage = Instantiate(CompetitionArrow, uiObject);
#else
arrowImage = Instantiate(Resources.Load<Image>("UI/Prefab/Match/CompetitionArrow"), uiObject);
var CompetitionArrow = mainController.GetCompetitionArrow();
arrowImage = Instantiate(CompetitionArrow, uiObject);
#endif
//比赛模式
if (!string.IsNullOrEmpty(headUrl))
@@ -57,7 +59,6 @@ namespace Assets.Scenes.Ride.Scripts
}
protected override void Compute()
{
currentlatlong = mainController.Along(totalDistance);//下一个坐标
if (mainController.currentPlayer != null)
{
diff = Math.Round((totalDistance - mainController.currentPlayer.TotalDistance) * 1000, 0);
@@ -168,7 +169,7 @@ namespace Assets.Scenes.Ride.Scripts
trailRenderer = gameObject.AddComponent<TrailRenderer>();
trailRenderer = FindObjectOfType<TrailRenderer>();
//var color7 = Resources.Load<Material>("UI/Material/color7");
var Graph2 = Resources.Load<Material>("UI/Material/3dGraph2");
var Graph2 = mainController.Get3dGraph2(); //Resources.Load<Material>("UI/Material/3dGraph2");
trailRenderer.materials = new Material[] { Graph2 };
trailRenderer.time = 30;
trailRenderer.startWidth = 1f;
@@ -187,9 +188,9 @@ namespace Assets.Scenes.Ride.Scripts
{
trailRenderer?.Destroy();
}
var rect = ((RectTransform)arrowImage.transform);
rect.position = new Vector3(playerScreenPos.x, playerScreenPos.y, 0);
((RectTransform)arrowImage.transform).position = playerScreenPos;
if (IsShowInfo)
{
ShowInfoPanel(playerScreenPos);
@@ -250,51 +251,42 @@ namespace Assets.Scenes.Ride.Scripts
private double horizontalScrolling { get; set; }
private void MoveHead()
{
var itemIndex = chartDataSourceScript.GetViewIndex(CurrentIndex);
var m = graph.DataSource.GetPoint("Player 2", itemIndex);
if (headPanel == null)
{
var onlineHeadPanel = mainController.GetOnlineheadPanel();
headPanel = Instantiate(onlineHeadPanel);
headPanel.transform.SetParent(graph.transform);
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
}
if (CurrentIndex == 1)
{
}
int nextIndex = CurrentIndex;
var viewIndex = chartDataSourceScript.GetViewIndex(nextIndex);
//人物移动 停止条件 到中间且线未加载完
if (GetStart() && chartDataSourceScript.ReachMid(viewIndex) && !chartDataSourceScript.ReachEnd())
{
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
//horizontalScrolling += offset;
if (UserId == mainController.currentPlayer.UserId)
{
graph.HorizontalScrolling += offset;
}
}
//设定当前头像位置
var m = graph.DataSource.GetPoint("Player 2", viewIndex);
graph.PointToWorldSpace(out Vector3 itemPosition, m.x, m.y, "Player 2");
itemPosition.x -= 12f;
itemPosition.y += 5f;
if (headPanel == null)
{
headPanel = Instantiate(Resources.Load<GameObject>("UI/Prefab/Ride/OnlineHeadPanel"));
headPanel.transform.SetParent(graph.transform);
headPanel.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);
headPanel.transform.position = itemPosition;
}
else
{
//if (UserId != mainController.currentPlayer.UserId)
//{
// headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//}
//else
{
int nextIndex = CurrentIndex;
var viewIndex = chartDataSourceScript.GetViewIndex(nextIndex);
//人物移动 停止条件 到中间且线未加载完
if (GetStart() && chartDataSourceScript.ReachMid(viewIndex) && !chartDataSourceScript.ReachEnd())
{
var currentDistance = CurrentDistance;
var distance = Distance;
var offset = currentDistance > 0 ? distance * 1000 / currentDistance : 1;
horizontalScrolling += offset;
if (UserId == mainController.currentPlayer.UserId)
{
graph.HorizontalScrolling = horizontalScrolling;
}
headPanel.transform.position = new Vector3(headPanel.transform.position.x, itemPosition.y, 0);
}
else
{
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
}
}
//headPanel.transform.DOMove(new Vector3(itemPosition.x, itemPosition.y, 0), 1);
}
headPanel.transform.position = new Vector3(itemPosition.x, itemPosition.y, 0);
//超出边界隐藏
var start = graph.HorizontalScrolling;
var end = graph.HorizontalScrolling + graph.DataSource.HorizontalViewSize;
headPanel.SetActive( viewIndex >= start && viewIndex <= end);
//显示头像
if (head == null)
{
head = headPanel.transform.Find("Head").GetComponent<RawImage>();
@@ -317,6 +309,7 @@ namespace Assets.Scenes.Ride.Scripts
//如果切换到当前用户,当前用户头像变大,并且只显示当前用户
if (mainController.currentPlayer.UserId == UserId)
{
headPanel.transform.SetAsLastSibling();
head.gameObject.SetActive(true);
headPanel.GetComponent<Image>().color = blue;
rect.DOScale(new Vector3(1.2f, 1.2f, 1.2f), 0.5f);
@@ -43,7 +43,9 @@ namespace Assets.Scenes.Ride.Scripts
{
if (tickOffset + ticks < record.Length)
{
var data = TargetData.Read(record[tickOffset + ticks - 1]);
var t = tickOffset + ticks - 1;
t = t < 0 ? 0 : t;
var data = TargetData.Read(record[t]);
power = data._Power;
speed = data._Speed;
distance = data._Speed / 3600;
@@ -40,6 +40,7 @@ namespace Assets.Scenes.Ride.Scripts
trail.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
trail.receiveShadows = false;
trail.rayTracingMode = UnityEngine.Experimental.Rendering.RayTracingMode.Off;
trail.enabled = false;
headPanel = uipanel.transform.Find("GraphChart/HeadPanel").gameObject;
}
@@ -75,7 +76,7 @@ namespace Assets.Scenes.Ride.Scripts
{
speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight);
distance = mainController.UpdateDistance(speed);
totalDistance += distance;
//totalDistance += distance;
}
else
{
@@ -160,7 +161,7 @@ namespace Assets.Scenes.Ride.Scripts
headPanel.transform.position = new Vector3(nextPosition.x, nextPosition.y, 0);
//headPanel.transform.DOMove(new Vector3(nextPosition.x, nextPosition.y, 0), 1);
}
headPanel.transform.SetSiblingIndex(999);
headPanel.transform.SetAsLastSibling();
}
protected override IEnumerator MoveTo()
@@ -31,8 +31,6 @@ namespace Assets.Scenes.Ride.Scripts
CyclingController cyclingCotroller;
private bool initComplete = false;
private List<Vector3> vector3s = new List<Vector3>();
protected virtual void Awake()
{
if (_map == null)
@@ -44,11 +42,6 @@ namespace Assets.Scenes.Ride.Scripts
}
private void Update()
{
if(!vector3s.Contains(cyclingCotroller.currentPlayer.currentPos))
vector3s.Add(cyclingCotroller.currentPlayer.currentPos);
}
private void _map_OnUpdated()