Merge remote-tracking branch 'origin/dev_mobile_ble' into dev_mobile
# Conflicts: # Assets/Scripts/Scenes/MainController.cs
This commit is contained in:
commit
5bd1c3b1ca
278 files changed
+19740
-112
No files matched your search
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user