透明小地图&列表点击切换&海拔图头像位移
This commit is contained in:
1 parent
bf48989a9c
commit
6ec4c0101b
114 files changed
+12787
-6517
No files matched your search
@@ -220,7 +220,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
for (int i = 0; i < pointList.Count; i++)
|
||||
{
|
||||
sumDistance += pointList[i].Distance;
|
||||
decimal left = (decimal)totalDistance * 1000;
|
||||
//decimal left = (decimal)totalDistance * 1000;
|
||||
decimal left = (decimal)totalDistance % (decimal)mapData.TotalDistance;//处理多圈的情况
|
||||
left *= 1000;
|
||||
decimal right = (decimal)sumDistance;
|
||||
if (left <= right)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
using ChartAndGraph;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public class ElevationBarDataFeed : MonoBehaviour
|
||||
{
|
||||
GameObject head { get; set; }
|
||||
VideoGameManager manager { get; set; }
|
||||
[SerializeField]
|
||||
Material _lightColor;
|
||||
[SerializeField]
|
||||
Material _mediumColor;
|
||||
[SerializeField]
|
||||
Material _hardColor;
|
||||
|
||||
void Start()
|
||||
{
|
||||
head = transform.Find("HeadPanel").gameObject;
|
||||
manager= FindObjectOfType<VideoGameManager>();
|
||||
BarChart barChart = GetComponent<BarChart>();
|
||||
if (barChart != null)
|
||||
{
|
||||
barChart.DataSource.SetValue("Player 1", "Value 1", UnityEngine.Random.value * 20);
|
||||
barChart.DataSource.SlideValue("Player 2", "Value 1", UnityEngine.Random.value * 20, 40f);
|
||||
}
|
||||
var material = barChart.DataSource.GetMaterial("Player 1");
|
||||
var material1 = barChart.DataSource.GetMaterial("Player 2");
|
||||
var material2 = barChart.DataSource.GetMaterial("Player 3");
|
||||
var list = manager.GetMapData().List;
|
||||
|
||||
for (int i = 5; i < list.Count; i++)
|
||||
{
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
material = material1;
|
||||
}
|
||||
else
|
||||
{
|
||||
material = material2;
|
||||
}
|
||||
barChart.DataSource.AddCategory($"Player {i}", material);
|
||||
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Elevation);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
float timer = 1f;
|
||||
private void Update()
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
while (timer < 0)
|
||||
{
|
||||
var videoPlayer = manager.CurrentPlayer;
|
||||
if (videoPlayer != null)
|
||||
{
|
||||
BarChart barChart = GetComponent<BarChart>();
|
||||
Vector3 vector3 = Vector3.back;
|
||||
barChart.GetBarTrackPosition($"Player {videoPlayer.currentIndex}", "Group 1", out vector3);
|
||||
head.transform.position = vector3;
|
||||
}
|
||||
timer += 1f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3b2e5abc80332645b6ab677873adeec
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -198,7 +198,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_mipMapRoute.Destroy();
|
||||
}
|
||||
_mipMapRoute = new GameObject("MiniMapRoute");
|
||||
_mipMapRoute.transform.parent = transform;
|
||||
_mipMapRoute.transform.parent = transform.parent;
|
||||
var lineRender = _mipMapRoute.AddComponent<LineRenderer>();
|
||||
|
||||
lineRender.material = Instantiate(Resources.Load<Material>("UI/Material/1"));
|
||||
@@ -206,14 +206,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
lineRender.endColor = Color.white;
|
||||
lineRender.startColor = Color.white;
|
||||
//设置宽度
|
||||
lineRender.startWidth = 10f;
|
||||
lineRender.endWidth = 10f;
|
||||
lineRender.startWidth = 15f;
|
||||
lineRender.endWidth = 15f;
|
||||
lineRender.positionCount = dat.Count;
|
||||
lineRender.SetPositions(feat.Points[0].ToArray());
|
||||
lineRender.numCornerVertices = 20;
|
||||
lineRender.numCapVertices = 20;
|
||||
lineRender.loop = false;
|
||||
_mipMapRoute.layer = 9;
|
||||
_map.gameObject.SetActive(false);
|
||||
}
|
||||
GameObject _mipMapPath;
|
||||
void CreateRedLineRender(VectorFeatureUnity feat)
|
||||
@@ -223,7 +224,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_mipMapPath.Destroy();
|
||||
}
|
||||
_mipMapPath = new GameObject("MiniMapPath");
|
||||
_mipMapPath.transform.parent = transform;
|
||||
_mipMapPath.transform.parent = transform.parent;
|
||||
var lineRender = _mipMapPath.AddComponent<LineRenderer>();
|
||||
|
||||
lineRender.material = Instantiate(Resources.Load<Material>("UI/Material/2"));
|
||||
@@ -231,8 +232,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
lineRender.endColor = Color.red;
|
||||
lineRender.startColor = Color.red;
|
||||
//设置宽度
|
||||
lineRender.startWidth = 10f;
|
||||
lineRender.endWidth = 10f;
|
||||
lineRender.startWidth = 20f;
|
||||
lineRender.endWidth = 20f;
|
||||
lineRender.positionCount = dat.Count;
|
||||
lineRender.SetPositions(feat.Points[0].ToArray());
|
||||
lineRender.numCornerVertices = 20;
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
using PolyAndCode.UI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public class ListItem : MonoBehaviour, ICell
|
||||
{
|
||||
//UI
|
||||
public Text nameLabel;
|
||||
public Text genderLabel;
|
||||
public Text idLabel;
|
||||
|
||||
//Model
|
||||
private ContactInfo _contactInfo;
|
||||
private int _cellIndex;
|
||||
public string Id;
|
||||
public string Rank;
|
||||
public string Name;
|
||||
private VideoGameManager manager { get; set; }
|
||||
|
||||
private void Start()
|
||||
{
|
||||
manager = FindObjectOfType<VideoGameManager>();
|
||||
GetComponent<Button>().onClick.AddListener(ButtonListener);
|
||||
}
|
||||
private float timer = 1f;
|
||||
private void Update()
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
while (timer < 0)
|
||||
{
|
||||
if (manager != null)
|
||||
{
|
||||
var riders = manager.cyclingController?.riders;
|
||||
if (riders != null)
|
||||
{
|
||||
var current = riders.Where(c => c.UserId.ToString() == Id).FirstOrDefault();
|
||||
if (current == null)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
gameObject.Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
timer += 1f;
|
||||
}
|
||||
}
|
||||
|
||||
//This is called from the SetCell method in DataSource
|
||||
public void ConfigureCell(ContactInfo contactInfo, int cellIndex)
|
||||
{
|
||||
Id = contactInfo.id;
|
||||
_cellIndex = cellIndex;
|
||||
_contactInfo = contactInfo;
|
||||
|
||||
nameLabel.text = contactInfo.Name;
|
||||
genderLabel.text = contactInfo.Gender;
|
||||
idLabel.text = contactInfo.id;
|
||||
}
|
||||
public void UpdateItem(string name,string gender,string id)
|
||||
{
|
||||
nameLabel.text = name;
|
||||
genderLabel.text = gender;
|
||||
idLabel.text = id;
|
||||
}
|
||||
private void ButtonListener()
|
||||
{
|
||||
manager.ChangePlayer(Convert.ToInt32(Id));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 057cbb0cadd9caf4c9031a94f9ca6d39
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -6,6 +6,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
@@ -20,9 +21,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
[SerializeField]
|
||||
RecyclableScrollRect _recyclableScrollRect;
|
||||
|
||||
[SerializeField]
|
||||
RectTransform _rectTransform;
|
||||
|
||||
[SerializeField]
|
||||
private int _dataLength;
|
||||
|
||||
|
||||
private bool _isInit;
|
||||
|
||||
//Dummy data List
|
||||
private List<ContactInfo> _contactList = new List<ContactInfo>();
|
||||
|
||||
@@ -37,9 +44,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
if (_contactList != null) _contactList.Clear();
|
||||
var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);
|
||||
|
||||
int index = 0;
|
||||
foreach (var item in list)
|
||||
{
|
||||
_isInit = true;
|
||||
ContactInfo obj = new ContactInfo();
|
||||
obj.Name = item.Name;
|
||||
obj.Gender = DateTime.Now.Millisecond.ToString();
|
||||
@@ -47,14 +55,30 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_contactList.Add(obj);
|
||||
}
|
||||
}
|
||||
float timer = 1f;
|
||||
private void Update()
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
while (timer < 0)
|
||||
var currenList = FindObjectsOfType<ListItem>();//当前列表
|
||||
var list = MapUDPService.GetOnlineUsers(App.RouteIdParam);//最新列表
|
||||
foreach (ListItem o in currenList)
|
||||
{
|
||||
var needUpdate = list.Where(c => c.Id.ToString() == o.Id).FirstOrDefault();
|
||||
if (needUpdate != null)
|
||||
{
|
||||
o.gameObject.SetActive(true);
|
||||
o.UpdateItem(needUpdate.Name, needUpdate.LastActiveTime.ToShortTimeString(), needUpdate.Id.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
o.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
if (currenList.Count() <= 10 || list.Count() > 0)
|
||||
{
|
||||
InitData();
|
||||
timer += 1f;
|
||||
if (_recyclableScrollRect.SelfInitialize)
|
||||
{
|
||||
_recyclableScrollRect.ReloadData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -19,12 +19,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//计算
|
||||
protected override void ComputePlayer()
|
||||
{
|
||||
//base.ComputePlayer();
|
||||
var current = FindObjectOfType<VideoPlayer>();
|
||||
diff = totalDistance - current.EndDistance;
|
||||
var z = current.transform.position.z + diff;
|
||||
transform.DOMoveZ((float)z, 1f);
|
||||
Push();
|
||||
base.ComputePlayer();
|
||||
var current = manager.CurrentPlayer;
|
||||
if (current != null)
|
||||
{
|
||||
diff = totalDistance - current.totalDistance;
|
||||
var z = current.transform.position.z + diff;
|
||||
transform.DOMoveZ((float)z, 1f);
|
||||
Push();
|
||||
}
|
||||
}
|
||||
//人物向前超车 右边超车
|
||||
private void Push()
|
||||
@@ -66,12 +69,34 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
protected override void ComputeAnimator()
|
||||
{
|
||||
base.ComputeAnimator();
|
||||
var currentFrame = manager.GetFrameOffSet(diff);
|
||||
if (manager.mockDirection.ContainsKey(currentFrame))
|
||||
{
|
||||
bearing = manager.mockDirection[currentFrame];
|
||||
}
|
||||
animator.SetFloat("bearing", bearing);
|
||||
}
|
||||
protected override int GetCurrentFrame()
|
||||
{
|
||||
return manager.DistanceToFrames(diff) + manager.GetCurrentFrame();
|
||||
}
|
||||
|
||||
protected override void ComputeVideo()
|
||||
{
|
||||
if (manager.CurrentPlayer == null || manager.CurrentPlayer.UserId != UserId)
|
||||
return;
|
||||
mapData = manager.GetMapData();
|
||||
float ratio = 1;
|
||||
if (currentIndex + 1 < mapData.List.Count)
|
||||
{
|
||||
ratio = (float)(manager.CurrentPlayer.speed / mapData.List[currentIndex + 1].Speed);
|
||||
}
|
||||
else
|
||||
{
|
||||
ratio = (float)(manager.CurrentPlayer.speed / mapData.List[currentIndex].Speed);
|
||||
}
|
||||
manager.Play(ratio);
|
||||
}
|
||||
|
||||
//设置当前玩家属性
|
||||
public void SetPlayer(double totalDistance, double cadance,double heartRate,int userId)
|
||||
{
|
||||
@@ -80,6 +105,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
this.totalDistance = totalDistance;
|
||||
this.heartRate = (int?)heartRate;
|
||||
this.UserId = userId;
|
||||
this.power = 200;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public class VideoGameManager : DeviceServiceMonoBase
|
||||
{
|
||||
private List<VideoMapModel> videoPointList { get; set; }
|
||||
public AbstractVideoPlayer CurrentPlayer { get; set; }
|
||||
private MapDataModel mapData { get; set; }
|
||||
private MediaPlayer mediaPlayer { get; set; }
|
||||
@@ -40,10 +39,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public List<float> slots = new List<float>();
|
||||
GameObject infoPanel;
|
||||
GameObject OnlinePlayer;
|
||||
private bool isStop { get; set; }
|
||||
public enum ARMode
|
||||
{
|
||||
INSPECT,
|
||||
RIDE
|
||||
RIDE,
|
||||
INSPECT
|
||||
}
|
||||
public enum ViewMode
|
||||
{
|
||||
@@ -113,9 +113,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
cyclingController?.Run(null);
|
||||
var onlineRiders = cyclingController.riders;
|
||||
Debug.Log($"当前在线人数:{ MapUDPService.GetAllOnlineUserCount()}");
|
||||
CreateOnlineUser(onlineRiders);
|
||||
try
|
||||
{
|
||||
CreateOnlineUser(onlineRiders);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Log(e.Message);
|
||||
}
|
||||
timer += 1f;
|
||||
|
||||
}
|
||||
}
|
||||
private int offSet = 50;
|
||||
@@ -124,7 +130,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
private void CreateOnlineUser(List<BaseRider> list)
|
||||
{
|
||||
var players = FindObjectsOfType<OnlineVideoPlayer>();
|
||||
var current = FindObjectOfType<VideoPlayer>();
|
||||
//var current = FindObjectOfType<VideoPlayer>();
|
||||
//移除
|
||||
foreach (var item in players)
|
||||
{
|
||||
@@ -132,7 +138,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (currentItem == null)
|
||||
{
|
||||
item.Destroy();
|
||||
currentOnlineCount--;
|
||||
if (currentOnlineCount > 1) {
|
||||
currentOnlineCount--;
|
||||
}
|
||||
}
|
||||
}
|
||||
//新增/更新
|
||||
@@ -149,12 +157,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
else
|
||||
{
|
||||
//进来观察 看谁呢 依据谁未中心构建其他玩家
|
||||
var diff = item.EndDistance - 0;//CurrentPlayer.EndDistance;
|
||||
if (diff < offSet)
|
||||
//var diff = item.EndDistance - CurrentPlayer?.totalDistance;
|
||||
//if (diff < offSet)
|
||||
{
|
||||
var obj = Instantiate(OnlinePlayer, transform);
|
||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||
Debug.Log($"{onlineRider.EndDistance}={item.Power}={onlineRider.PreDistance}");
|
||||
online.SetPlayer(onlineRider.EndDistance, item.Cadence, item.HeartRate, item.UserId);
|
||||
obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
||||
currentOnlineCount++;
|
||||
@@ -163,14 +170,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
|
||||
//随机选择当前骑行的人作为观察对象
|
||||
if (_aRMode == ARMode.INSPECT && CurrentPlayer == null)
|
||||
{
|
||||
var currentPlayer = players.FirstOrDefault();
|
||||
if (currentPlayer != null)
|
||||
{
|
||||
ChangePlayer(currentPlayer.UserId);
|
||||
}
|
||||
}
|
||||
//if (_aRMode == ARMode.INSPECT && CurrentPlayer == null)
|
||||
//{
|
||||
// var currentPlayer = players.FirstOrDefault();
|
||||
// if (currentPlayer != null)
|
||||
// {
|
||||
// ChangePlayer(currentPlayer.UserId);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
//设置当前是骑行模式还是观察模式
|
||||
public void SetCurrentMode(ARMode aRMode)
|
||||
@@ -181,7 +188,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
videoPlayer?.gameObject.SetActive(false);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
CurrentPlayer = videoPlayer;
|
||||
}
|
||||
@@ -203,6 +210,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
currentPlayer.DOMoveY(-1f, 0f);
|
||||
}
|
||||
}
|
||||
Vector3 origin = new Vector3(0, -1, 4);
|
||||
//切换人物
|
||||
public void ChangePlayer(int userId)
|
||||
{
|
||||
@@ -213,6 +221,22 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var currentFrames = DistanceToFrames(CurrentPlayer.totalDistance);
|
||||
//获取当前人物的帧数
|
||||
SetCurrentFrame(currentFrames);
|
||||
//设置人物的位置
|
||||
CurrentPlayer.transform.position = origin;
|
||||
//var videoPlayer = FindObjectOfType<VideoPlayer>();
|
||||
//videoPlayer.transform.gameObject.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var onlineRiders = cyclingController.riders;
|
||||
var onlineRider = onlineRiders.Where(c => c.UserId == userId).FirstOrDefault();
|
||||
if (onlineRider != null)
|
||||
{
|
||||
var obj = Instantiate(OnlinePlayer, transform);
|
||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||
online.SetPlayer(onlineRider.EndDistance, onlineRider.Cadence, onlineRider.HeartRate, onlineRider.UserId);
|
||||
//obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,6 +338,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
mediaPlayer.OpenMedia(new MediaPath(path,MediaPathType.AbsolutePathOrURL),false);
|
||||
}
|
||||
}
|
||||
//是否停止
|
||||
public bool IsQuit()
|
||||
{
|
||||
return isStop;
|
||||
}
|
||||
//设置当前视频播放速度
|
||||
public void Play(float playbackRate = 1f)
|
||||
{
|
||||
@@ -336,6 +365,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//退出骑行
|
||||
public void Quit()
|
||||
{
|
||||
mediaPlayer?.Pause();//暂停视频
|
||||
isStart = false;
|
||||
isStop = true;
|
||||
mediaPlayer?.Stop();
|
||||
}
|
||||
//获取当前视频帧数
|
||||
@@ -348,8 +380,18 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
var frames = mediaPlayer.Info.GetMaxFrameNumber(); //视频打开后生效
|
||||
var TotalDistance = route?.TotalDistance ?? 0;
|
||||
distance %= TotalDistance;
|
||||
return TotalDistance > 0 ? Convert.ToInt32(frames / TotalDistance * distance) : 0;
|
||||
}
|
||||
public int GetFrameOffSet(double distance)
|
||||
{
|
||||
var currentFrame = GetCurrentFrame();
|
||||
var frames = mediaPlayer.Info.GetMaxFrameNumber(); //视频打开后生效
|
||||
var TotalDistance = route?.TotalDistance ?? 0;
|
||||
distance %= TotalDistance;
|
||||
var offset = TotalDistance > 0 ? Convert.ToInt32(frames / TotalDistance * distance) : 0;
|
||||
return currentFrame + offset;
|
||||
}
|
||||
//设置当前视频播放进度
|
||||
public void SetCurrentFrame(int seq)
|
||||
{
|
||||
@@ -380,9 +422,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//保存骑行记录
|
||||
public void Save(double totalDistance)
|
||||
{
|
||||
mediaPlayer?.Pause();//暂停视频
|
||||
Quit();
|
||||
cyclingController.recorderData.EndTime = UIManager.Now.GetDateTime();
|
||||
isStart = false;
|
||||
var path = PFConstants.MapWorkoutRecordFolder + "/" + recordId;
|
||||
Assets.Scenes.Ride.Scripts.Helper.CreateDirectoryIfNotExsit(path);
|
||||
string imageFileName = path + "/" + Guid.NewGuid().ToString() + ".png";
|
||||
|
||||
@@ -67,6 +67,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
canvasGroup.DOFade(0, 1).onComplete+=()=> {
|
||||
g.SetActive(false);
|
||||
manager.SetCurrentMode(VideoGameManager.ARMode.RIDE);
|
||||
ui.Find("Panel").gameObject.SetActive(true);
|
||||
};
|
||||
});
|
||||
|
||||
@@ -53,29 +53,29 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
heartRate = manager.UpDateHeart();
|
||||
power = manager.UpdatePower();
|
||||
cadance = manager.UpdateCadence();
|
||||
//TEST TODO
|
||||
#region TEST
|
||||
power = 200;
|
||||
cadance = 150;
|
||||
heartRate = 160;
|
||||
#endregion
|
||||
weight = App.CurrentUser.Weight;
|
||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||
//发送阻力
|
||||
manager.TrackResistance(currentSlope);
|
||||
base.ComputePlayer();
|
||||
//一旦有功率就开始骑行、否则暂停
|
||||
if (power > 0)
|
||||
{
|
||||
manager.Play((float)speed);
|
||||
}
|
||||
else
|
||||
if (!manager.IsQuit())
|
||||
{
|
||||
manager.Pause();
|
||||
if (power > 0)
|
||||
{
|
||||
manager.StartGame();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//控制视频播放速度
|
||||
protected override void ComputeVideo()
|
||||
{
|
||||
|
||||
mapData = manager.GetMapData();
|
||||
float ratio = 1;
|
||||
if (currentIndex + 1 < mapData.List.Count)
|
||||
@@ -86,14 +86,16 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
ratio = (float)(speed / mapData.List[currentIndex].Speed);
|
||||
}
|
||||
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
|
||||
return;
|
||||
|
||||
manager.Play(ratio);
|
||||
|
||||
if (totalDistance >= mapData.TotalDistance)
|
||||
{
|
||||
start = false;
|
||||
manager.Pause();//暂停视频
|
||||
}
|
||||
//if (totalDistance >= mapData.TotalDistance)
|
||||
//{
|
||||
// start = false;
|
||||
// manager.Pause();//暂停视频
|
||||
//}
|
||||
}
|
||||
|
||||
protected override void ComputeRecord()
|
||||
@@ -119,11 +121,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
recorderData.EndDistance = Math.Round(targetData._Distance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.RiderDatas.Add(targetData);
|
||||
|
||||
if (totalDistance >= mapData.TotalDistance)
|
||||
{
|
||||
start = false;
|
||||
manager.Save(totalDistance);
|
||||
}
|
||||
//if (totalDistance >= mapData.TotalDistance)
|
||||
//{
|
||||
// start = false;
|
||||
// manager.Save(totalDistance);
|
||||
//}
|
||||
}
|
||||
protected override void MoveGraphHead(bool init = false)
|
||||
{
|
||||
|
||||
@@ -166,7 +166,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
avHeatrate.text = record.RiderDatas.Average(c => c._HeartRate.GetValueOrDefault(0)).ToString("f0");
|
||||
avSpeed.text = record.RiderDatas.Average(c => c._Speed).ToString("f1");
|
||||
maxSpeed.text = record.RiderDatas.Max(c => c._Speed).ToString("f1");
|
||||
wkgText.text = Math.Round(power / record.CurrentUser.Weight, 2).ToString();
|
||||
//wkgText.text = Math.Round(power / record.CurrentUser.Weight, 2).ToString();
|
||||
avCadence.text = record.RiderDatas.Average(c => c._Cadence).GetValueOrDefault(0).ToString("f0");
|
||||
|
||||
DNF.gameObject.SetActive(!record.IsCompleted);
|
||||
|
||||
@@ -84,19 +84,19 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (videoPlayer != null && manager != null)
|
||||
if (manager != null && manager.CurrentPlayer != null)
|
||||
{
|
||||
//infoText.text = $"帧数:{manager.GetCurrentFrame()}";
|
||||
power.text = Math.Round(videoPlayer.power).ToString();
|
||||
speed.text = Math.Round(videoPlayer.speed).ToString();
|
||||
heartRate.text = Math.Round((videoPlayer.heartRate ?? 0d)).ToString();
|
||||
cadance.text = Math.Round(videoPlayer.cadance).ToString();
|
||||
power.text = Math.Round(manager.CurrentPlayer.power).ToString();
|
||||
speed.text = Math.Round(manager.CurrentPlayer.speed).ToString();
|
||||
heartRate.text = Math.Round((manager.CurrentPlayer.heartRate ?? 0d)).ToString();
|
||||
cadance.text = Math.Round(manager.CurrentPlayer.cadance).ToString();
|
||||
playerTimer.text = Helper.FormatTicks(videoPlayer.ticks);
|
||||
distance.text = Math.Round((videoPlayer.totalDistance)).ToString();
|
||||
distance.text = Math.Round((manager.CurrentPlayer.totalDistance)).ToString();
|
||||
if (App.CurrentUser != null)
|
||||
{
|
||||
left.fillAmount = (float)(Math.Round(videoPlayer.power) / MAXPOWER_RATE);
|
||||
right.fillAmount = (float)(Math.Round((videoPlayer.heartRate ?? 0f)) / MAXHEARRATE);
|
||||
left.fillAmount = (float)(Math.Round(manager.CurrentPlayer.power) / MAXPOWER_RATE);
|
||||
right.fillAmount = (float)(Math.Round((manager.CurrentPlayer.heartRate ?? 0f)) / MAXHEARRATE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -211,67 +211,5 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
#endregion
|
||||
|
||||
//private int pageIndex = 0;
|
||||
//private int pageSize = 15;
|
||||
//private int bufferSize = 15;
|
||||
|
||||
//protected override void CreateList()
|
||||
//{
|
||||
// //OnlineUserNum.text = " " + MapUDPService.GetNearRiderCount().ToString();
|
||||
// //LayoutRebuilder.ForceRebuildLayoutImmediate(OnlineUserNum.rectTransform);
|
||||
// var nearList = MapUDPService.GetOnlineUsers(App.RouteIdParam);
|
||||
// if (nearList == null)
|
||||
// return;
|
||||
// var mod = MapUDPService.GetNearRiderCount() % pageSize;
|
||||
// var pages = MapUDPService.GetNearRiderCount() / pageSize;
|
||||
// //totalPages = mod > 0 ? pages + 1 : pages;
|
||||
// //删除
|
||||
// var currentNearList = FindObjectsOfType<NearByItemScript>();
|
||||
// foreach (var item in currentNearList)
|
||||
// {
|
||||
// var e = nearList.Where(c => c.Id == item.UserId).FirstOrDefault();
|
||||
// if (e == null)
|
||||
// {
|
||||
// //item.transform.gameObject.SetActive(false);
|
||||
// item.Dispose();
|
||||
// bufferSize--;
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (int i = 0; i < nearList.Count(); i++)
|
||||
// {
|
||||
// Create(nearList[i], currentNearList);
|
||||
// }
|
||||
//}
|
||||
|
||||
//private void Create(OnlineUser item, NearByItemScript[] rankingList)
|
||||
//{
|
||||
// //var rankingList = FindObjectsOfType<NearByItemScript>();
|
||||
// var nearByItemscript = rankingList.Where(c => c.UserId == item.Id).FirstOrDefault();
|
||||
// //如果当前有这个用户则更新没有则创建并setslibingindex
|
||||
// if (nearByItemscript == null)
|
||||
// {
|
||||
// //创建
|
||||
// if (bufferSize < pageSize)
|
||||
// {
|
||||
// //情况一:还有足够的buffer,直接创建
|
||||
// GameObject prefabItem = item.IsSelf ? nearByMajorItem : nearByItem;
|
||||
// GameObject newObj = (GameObject)Instantiate(prefabItem, parent);
|
||||
// nearByItemscript = newObj.GetComponent<NearByItemScript>();
|
||||
// bufferSize++;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //情况二:没有足够的buffer,找到要被淘汰的buffer()最后一名
|
||||
// nearByItemscript = rankingList.OrderByDescending(c => c.distance).FirstOrDefault();
|
||||
// }
|
||||
// }
|
||||
// nearByItemscript.setUserId(item.Id);
|
||||
// nearByItemscript.setName(item.Name);
|
||||
// nearByItemscript.setRatio(item.KGWeight + "W/KG");
|
||||
// nearByItemscript.setSpeed(item.Speed.ToString() + "KM/H");
|
||||
// nearByItemscript.setDistance(item.Near.ToString() + "KM");
|
||||
|
||||
//}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user