ar骑行bug fix
This commit is contained in:
1 parent
2c9440f656
commit
08b92e7e9b
37 files changed
+3233
-3358
No files matched your search
@@ -82,7 +82,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
currentHead.transform.position = vector3;
|
||||
}
|
||||
//控制海拔图头像
|
||||
if (manager.CurrentPlayer.userId == item.UserId)
|
||||
if (manager.CurrentUserId == item.UserId)
|
||||
{
|
||||
currentHead.transform.Find("Main").gameObject.SetActive(true);
|
||||
currentHead.transform.SetAsLastSibling();
|
||||
|
||||
@@ -177,13 +177,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//断网移除所有用户
|
||||
if (list == null || list.Count == 0)
|
||||
{
|
||||
rideObjs.Clear();
|
||||
visibleRiders.Clear();
|
||||
var onlineUserList = FindObjectsOfType<AbstractVideoPlayer>();
|
||||
foreach (var item in onlineUserList)
|
||||
foreach (var item in visibleRiders)
|
||||
{
|
||||
Debug.Log($"销毁了{item}");
|
||||
DestroyImmediate(item.gameObject);
|
||||
}
|
||||
rideObjs.Clear();
|
||||
visibleRiders.Clear();
|
||||
CurrentPlayer = null;
|
||||
return;
|
||||
}
|
||||
@@ -204,7 +204,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
//如果当前为观察者模式且currentPlayerInfo为null随机选择以为用户观察
|
||||
if (currentPlayerInfo == null)
|
||||
{
|
||||
currentPlayerInfo = needUpdateList.Where(c => c.UserId == currentUserId).FirstOrDefault();
|
||||
currentPlayerInfo = needUpdateList.Where(c => c.UserId == CurrentUserId).FirstOrDefault();
|
||||
if(currentPlayerInfo == null)
|
||||
currentPlayerInfo = needUpdateList.FirstOrDefault();
|
||||
}
|
||||
@@ -215,10 +215,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var visibleItem = visibleRiders.Where(c => c.UserId == item.UserId).FirstOrDefault();
|
||||
if (visibleItem != null)
|
||||
{
|
||||
Debug.Log($"count {visibleRiders.Count()}");
|
||||
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);
|
||||
if(visibleItem.userId == currentUserId)
|
||||
if (visibleItem.userId == CurrentUserId)
|
||||
{
|
||||
CurrentPlayer = visibleItem;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -246,8 +247,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
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 (currentPlayerInfo.UserId == item.UserId)
|
||||
CurrentPlayer = online;
|
||||
if (online.userId == CurrentUserId)
|
||||
{
|
||||
CurrentPlayer = visibleItem;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -262,6 +265,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
videoPlayer = Instantiate(playerprefabNV, transform);
|
||||
}
|
||||
|
||||
CurrentUserId = App.CurrentUser.Id;
|
||||
CurrentPlayer = videoPlayer.GetComponent<AbstractVideoPlayer>();
|
||||
var vp = videoPlayer.GetComponent<VideoPlayer>();
|
||||
vp.SetEndDistance(item.EndDistance);
|
||||
@@ -290,8 +294,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
uimanager.SetCurrentMode(aRMode);
|
||||
if (_aRMode != ARMode.INSPECT)
|
||||
{
|
||||
//InitCurrentPlayer();
|
||||
Debug.Log("ContinueAsync");
|
||||
CurrentUserId = App.CurrentUser.Id;
|
||||
ContinueAsync();
|
||||
}
|
||||
else
|
||||
@@ -301,11 +304,12 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
public GameObject videoPlayer;
|
||||
public GameObject target;
|
||||
private int currentUserId { get; set; }
|
||||
public int CurrentUserId { get; set; }
|
||||
//切换人物
|
||||
public void ChangePlayer(int userId)
|
||||
{
|
||||
currentUserId = userId;
|
||||
Debug.Log($"切换到{userId}");
|
||||
CurrentUserId = userId;
|
||||
}
|
||||
//获取角色头顶信息预制件
|
||||
public GameObject GetHeadInfo()
|
||||
|
||||
@@ -219,14 +219,14 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
}
|
||||
bool startBtnLock = false;
|
||||
public async void StartRide(BaseEventData baseEvent)
|
||||
public void StartRide(BaseEventData baseEvent)
|
||||
{
|
||||
if (startBtnLock)
|
||||
return;
|
||||
startBtnLock = true;
|
||||
var ui = manager.GetCanvasTransform();
|
||||
InitAR();
|
||||
canvasGroup.DOFade(0, 1).onComplete += () => {
|
||||
InitAR();
|
||||
gameObject.SetActive(false);
|
||||
manager.StartGame();
|
||||
manager.SetCyclingModel(Assets.Scenes.Ride.Scripts.Model.CyclingModel.Single);
|
||||
@@ -236,7 +236,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
public async void InitAR()
|
||||
{
|
||||
//加载本地文件
|
||||
var route = manager.mapRoute;
|
||||
var arDataPath = $"{PFConstants.ARFolder}/{route.Id}/{route.Id}.json";
|
||||
var videoRoute = $"{PFConstants.ARFolder}/{route.Id}/route-{route.Id}.json";
|
||||
@@ -254,8 +253,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public void StartRide(int seconds)
|
||||
{
|
||||
var ui = manager.GetCanvasTransform();
|
||||
InitAR();
|
||||
canvasGroup.DOFade(0, 0).onComplete += () => {
|
||||
InitAR();
|
||||
gameObject.SetActive(false);
|
||||
manager.SetCyclingModel(CyclingModel.GameRoom);
|
||||
manager.SetCurrentMode(VideoGameManager.ARMode.RIDE);
|
||||
@@ -266,47 +265,64 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
},false,true);
|
||||
}
|
||||
|
||||
private bool downloading = false;
|
||||
private CancellationTokenSource cancelToken;
|
||||
protected async void DownloadAsync(BaseEventData baseEvent)
|
||||
{
|
||||
if (downloading)
|
||||
return;
|
||||
|
||||
beforeDownload();
|
||||
await startDownloading();
|
||||
}
|
||||
|
||||
private void beforeDownload()
|
||||
{
|
||||
downloading = true;
|
||||
download.SetActive(false);
|
||||
rideNow.enabled = false;
|
||||
rideNow.interactable = false;
|
||||
downloadText.text = "0%";
|
||||
}
|
||||
|
||||
private async Task startDownloading()
|
||||
{
|
||||
var route = manager.mapRoute;
|
||||
var path = PFConstants.VideoFolder;
|
||||
|
||||
var localPath = PFConstants.ARFolder;
|
||||
var arDataPath = route.ARConfig;
|
||||
var videoRoute = route.VideoRoute;
|
||||
|
||||
var cancelToken = new CancellationTokenSource();
|
||||
var res1 = await UnityWebRequest.Get(arDataPath).SendWebRequest().WithCancellation(cancelToken.Token);//下载AR数据
|
||||
var res2 = await UnityWebRequest.Get(videoRoute).SendWebRequest().WithCancellation(cancelToken.Token);//下载video视频数据
|
||||
var res3 = await UnityWebRequest.Get(route.Url).SendWebRequest().ToUniTask(progress: this);//下载视频
|
||||
//持久化到磁盘
|
||||
var dataPath = $"{localPath}/{route.Id}";
|
||||
Helper.CreateDirectoryIfNotExsit(dataPath);
|
||||
Helper.CreateDirectoryIfNotExsit(dataPath);
|
||||
File.WriteAllBytes($"{dataPath}/{route.Id}.json", res1.downloadHandler.data);
|
||||
File.WriteAllBytes($"{dataPath}/route-{route.Id}.json", res2.downloadHandler.data);
|
||||
File.WriteAllBytes($"{path}/{route.FileName}", res3.downloadHandler.data);
|
||||
|
||||
rideNow.enabled = true;
|
||||
rideNow.interactable = true;
|
||||
downloadText.text = App.GetLocalString("Ride Now");
|
||||
var filepath = $"{path}/{route.FileName}";
|
||||
manager.SetMedia(filepath);
|
||||
Helper.CreateDirectoryIfNotExsit(dataPath);
|
||||
Helper.CreateDirectoryIfNotExsit(dataPath);
|
||||
|
||||
cancelToken = new CancellationTokenSource();
|
||||
|
||||
await Loom.DownloadToFileAsync(arDataPath, $"{dataPath}/{route.Id}.json");
|
||||
await Loom.DownloadToFileAsync(videoRoute, $"{dataPath}/route-{route.Id}.json");
|
||||
var res = await Loom.DownloadToFileAsync(route.Url, $"{path}/{route.FileName}",this,cancelToken);
|
||||
if (res.isDone)
|
||||
{
|
||||
var filepath = $"{PFConstants.VideoFolder}/{route.FileName}";
|
||||
manager.SetMedia(filepath);
|
||||
|
||||
rideNow.enabled = true;
|
||||
rideNow.interactable = true;
|
||||
|
||||
downloadText.text = App.GetLocalString("Ride Now");
|
||||
downloading = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void Report(float value)
|
||||
{
|
||||
if (value < 1)
|
||||
{
|
||||
rideNow.enabled = false;
|
||||
rideNow.interactable = false;
|
||||
slider.value = (float)Math.Round(value * 100, 0);
|
||||
downloadText.text = slider.value.ToString() + "%";
|
||||
download.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
slider.value = 100;
|
||||
}
|
||||
if (cancelToken.IsCancellationRequested)
|
||||
return;
|
||||
|
||||
slider.value = value < 1 ? (float)Math.Round(value * 100, 0) : 100;
|
||||
downloadText.text = slider.value.ToString() + "%";
|
||||
}
|
||||
//进入观察模式
|
||||
private void WatchHandler(BaseEventData data)
|
||||
@@ -325,7 +341,25 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
protected void Cancel(BaseEventData baseEvent)
|
||||
{
|
||||
SceneManager.LoadScene("MainScene");
|
||||
if (cancelToken == null)
|
||||
{
|
||||
SceneManager.LoadSceneAsync("MainScene");
|
||||
return;
|
||||
}
|
||||
|
||||
UIManager.SetModalPanel(transform.Find("ModalPanel").GetComponent<PFUIPanel>());
|
||||
UIManager.ShowConfirm("Tips", "CancelDownloadConfirm",
|
||||
() =>
|
||||
{
|
||||
cancelToken?.Cancel();
|
||||
SceneManager.LoadSceneAsync("MainScene");
|
||||
UIManager.CloseConfirm();
|
||||
},
|
||||
2,
|
||||
() =>
|
||||
{
|
||||
UIManager.CloseConfirm();
|
||||
});
|
||||
}
|
||||
protected async void DrawMapRouteAsync(int routeId, int type = 0)
|
||||
{
|
||||
|
||||
@@ -264,9 +264,11 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
private void QuitClick(BaseEventData e)
|
||||
{
|
||||
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId == App.CurrentUser.Id && (manager.CurrentPlayer.ticks == 0 || manager.CurrentPlayer.EndDistance - manager.CurrentPlayer.StartDistance < 0.1f))
|
||||
var idMainRider = manager.CurrentPlayer != null && manager.CurrentPlayer.UserId == App.CurrentUser.Id;
|
||||
var shortDistance = idMainRider && (manager.CurrentPlayer.ticks == 0 || manager.cyclingController.recorderData.RiderDatas.Count == 0 || manager.CurrentPlayer.EndDistance - manager.CurrentPlayer.StartDistance < 0.1f);
|
||||
if (shortDistance)
|
||||
{
|
||||
UIManager.ShowConfirm("Quit", App.GetLocalString("Current ride distance too short to save."), () => {
|
||||
UIManager.ShowConfirm(App.GetLocalString("Quit"), App.GetLocalString("Current ride distance too short to save."), () => {
|
||||
UIManager.CloseConfirm();
|
||||
SceneManager.LoadSceneAsync("MainScene");
|
||||
}, 2, () => { UIManager.CloseConfirm(); });
|
||||
@@ -276,7 +278,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
|
||||
{
|
||||
|
||||
UIManager.ShowConfirm("Quit", "Do you want to keep the record?",
|
||||
UIManager.ShowConfirm(App.GetLocalString("Quit"), App.GetLocalString("Do you want to keep the record?"),
|
||||
() =>
|
||||
{
|
||||
SaveAndShowResult();
|
||||
@@ -291,7 +293,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
else
|
||||
{
|
||||
UIManager.ShowConfirm("Quit", "Do you want to quit?", () =>
|
||||
UIManager.ShowConfirm(App.GetLocalString("Quit"), App.GetLocalString("Do you want to quit?"), () =>
|
||||
{
|
||||
UIManager.CloseConfirm();
|
||||
SceneManager.LoadSceneAsync("MainScene");
|
||||
|
||||
Reference in new issue
Block a user