AR视频direction文件相关调整
This commit is contained in:
1 parent
d876c20def
commit
17c2a44e40
62 files changed
+120845
-42066
No files matched your search
@@ -19,10 +19,13 @@ public class MainController : BaseScene
|
||||
{
|
||||
[SerializeField] GameObject root;
|
||||
private Text Version;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
Debug.Log("执行25");
|
||||
|
||||
MapUDPService.MessageListener = ListenerHandler;
|
||||
Version = this.transform.Find("GameObject").Find("Version").GetComponent<Text>();
|
||||
Version.text = "V" + App.AppVersion;
|
||||
DeviceCache.Init(PFConstants.DeviceCacheFolder);
|
||||
@@ -64,6 +67,16 @@ public class MainController : BaseScene
|
||||
//DOTween.KillAll();
|
||||
FinishMessage(sender);
|
||||
}
|
||||
private bool DataSorceChanged { get; set; }
|
||||
private void ListenerHandler(List<ReceiveMsgModel> message)
|
||||
{
|
||||
var msg = message.Where(c => c.RoomList != null && c.RoomList.Count > 0).FirstOrDefault();
|
||||
if (msg != null)
|
||||
{
|
||||
App.gameRoomDetail = msg.RoomList.FirstOrDefault();
|
||||
DataSorceChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
List<CanvasGroup> msgs;
|
||||
Vector3 msgLocation;
|
||||
@@ -318,7 +331,7 @@ public class MainController : BaseScene
|
||||
}
|
||||
if (App.MainSceneParam["Name"] == "NewRouteDetail" && App.currentArea != null)
|
||||
{
|
||||
UIManager.ShowNewRouteDetailPanel(App.currentArea.Id);
|
||||
UIManager.ShowNewRouteDetailPanel(App.currentArea.Id,App.currentArea.CoverImage);
|
||||
}
|
||||
if (App.MainSceneParam["Name"] == "UserInfoPanel")
|
||||
{
|
||||
@@ -364,7 +377,7 @@ public class MainController : BaseScene
|
||||
//UIManager.ShowBigMapPanel();
|
||||
//UIManager.ShowEarthPanel();
|
||||
}
|
||||
|
||||
ShowGameRoomInviteConfirm();
|
||||
UIManager.UpdateJoinCompetition();//查询当前我参加的赛事
|
||||
}
|
||||
|
||||
@@ -378,6 +391,12 @@ public class MainController : BaseScene
|
||||
{
|
||||
base.Update();
|
||||
|
||||
if (DataSorceChanged)
|
||||
{
|
||||
DataSorceChanged = false;
|
||||
UIManager.ShowGameRoomDetailPanel();
|
||||
return;
|
||||
}
|
||||
clearcachet -= Time.deltaTime;
|
||||
if (clearcachet <= 0)
|
||||
{
|
||||
@@ -517,6 +536,30 @@ public class MainController : BaseScene
|
||||
}
|
||||
}
|
||||
}
|
||||
//检查剪切板内容进入对战房间
|
||||
private void ShowGameRoomInviteConfirm()
|
||||
{
|
||||
var clipContent = Utils.GetClipboard();
|
||||
if (!string.IsNullOrEmpty(clipContent) && App.currentPageIsHome)
|
||||
{
|
||||
//GameRoom/{App.CurrentUser.Nickname}/{manager.GameRoom.Name}/{manager.GameRoom.RoomId}
|
||||
var code = EncrypHelper.Decrypt(clipContent);
|
||||
if (string.IsNullOrEmpty(code))
|
||||
return;
|
||||
var arr = code.Split('/');
|
||||
var userName = arr[1];
|
||||
var roomName = arr[2];
|
||||
var roomId = Convert.ToInt32(arr[3]);
|
||||
var content = $"{userName} {App.GetLocalString("invite you to join in")} {roomName} , {App.GetLocalString("are you accept the invitation?")}";
|
||||
UIManager.ShowConfirm(App.GetLocalString("Invitition"), content, () => {
|
||||
UIManager.CloseConfirm();
|
||||
App.Model = "GameRoom";
|
||||
MapUDPService.SendJoinGameRoom(roomId, App.CurrentUser.Id, UIManager.Now.GetDateTime().ToUniversalTime());
|
||||
MapUDPService.SendQueryGameRoomList(App.CurrentUser.Id, 0, 1, arr[3]);
|
||||
});
|
||||
Utils.CopyToClipboard("");
|
||||
}
|
||||
}
|
||||
private void OnDestroy()
|
||||
{
|
||||
EventQueueSystem.RemoveListener<LinkedMessageEvent>(LinkedMessageHandler);
|
||||
|
||||
@@ -142,6 +142,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
Cadence = item.Cadence,
|
||||
TotalTicks = item.TotalTicks,
|
||||
WeightKg = item.WeightKg,
|
||||
Sex = item.Sex,
|
||||
});
|
||||
}
|
||||
{
|
||||
@@ -161,7 +162,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
Headimage = item.HeadImage,
|
||||
CreateTime = DateTime.MaxValue,
|
||||
EndDistance = item.EndDistance,
|
||||
IsCompleted = item.IsCompleted
|
||||
IsCompleted = item.IsCompleted,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -292,6 +293,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
EndDistance = item.EndDistance,
|
||||
PreDistance = item.PreDistance,
|
||||
WeightKg = item.WeightKg,
|
||||
Sex = item.Sex,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,12 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
{
|
||||
public class GameModel : BaseCycling
|
||||
{
|
||||
/// <summary>
|
||||
/// 第一个到终点的时间
|
||||
/// </summary>
|
||||
public DateTime? FirstEndTime { get; private set; }
|
||||
public GameRoomModel GameRoom { get; private set; }
|
||||
|
||||
public GameModel(Route route,RouteResultParam param)
|
||||
: base(route, CyclingModel.Single)
|
||||
{
|
||||
@@ -30,6 +36,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
selectParam = param,
|
||||
RoomId = App.gameRoomDetail.RoomId,
|
||||
};
|
||||
GameRoom = App.gameRoomDetail;
|
||||
App.gameRoomDetail = null;
|
||||
if (param != null)
|
||||
{
|
||||
@@ -68,6 +75,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
EndDistance = item.EndDistance,
|
||||
PreDistance = item.PreDistance,
|
||||
WeightKg = item.WeightKg,
|
||||
Sex = item.Sex,
|
||||
FrameRate = item.FrameRate,
|
||||
});
|
||||
}
|
||||
@@ -75,5 +83,20 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
#endregion
|
||||
base.Run(targetData);
|
||||
}
|
||||
|
||||
protected override void BeforeRunAfterPakcData()
|
||||
{
|
||||
base.BeforeRunAfterPakcData();
|
||||
|
||||
var userList = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id,recorderData.RoomId).Where(c=>c.IsSelf == false).OrderByDescending(u => u.Saved).ThenBy(d => d.CreateTime).ThenByDescending(d => d.EndDistance);
|
||||
if (userList.Any())
|
||||
{
|
||||
foreach (var item in userList)
|
||||
{
|
||||
if(!FirstEndTime.HasValue && item.IsCompleted)
|
||||
FirstEndTime = Now.AddMinutes(GameRoom.CloseTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,6 +91,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
EndDistance = item.EndDistance,
|
||||
PreDistance = item.PreDistance,
|
||||
WeightKg = item.WeightKg,
|
||||
Sex = item.Sex,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels
|
||||
EndDistance = item.EndDistance,
|
||||
PreDistance = item.PreDistance,
|
||||
WeightKg = item.WeightKg,
|
||||
Sex = item.Sex,
|
||||
FrameRate = item.FrameRate,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.RiderModels
|
||||
public class OnlineRiderModel : BaseRider
|
||||
{
|
||||
public override RiderType riderType => RiderType.Online;
|
||||
|
||||
public int Sex { get; set; } = 0;
|
||||
public double PreDistance { get; set; } = 0;
|
||||
public double Speed { get; set; } = 0;
|
||||
public double WeightKg { get; set; } = 0;
|
||||
|
||||
@@ -8,6 +8,7 @@ using System;
|
||||
using ChartAndGraph;
|
||||
using DG.Tweening;
|
||||
using System.Collections;
|
||||
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
||||
|
||||
namespace Assets.Scenes.Ride.Scripts
|
||||
{
|
||||
@@ -61,7 +62,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
weight = App.CurrentUser.Weight;
|
||||
bicycleWeight = App.CurrentUser.BicycleWeight;
|
||||
//#if UNITY_EDITOR
|
||||
power = 300;
|
||||
power = 400;
|
||||
//#endif
|
||||
mainController.TrackResistance(currentSlope * App.RideSetting.Sensitivity / 100);
|
||||
}
|
||||
@@ -122,8 +123,25 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
mainController.SaveRealTime();
|
||||
}
|
||||
}
|
||||
HandleForGameRoom();
|
||||
}
|
||||
protected override void BeforeRun()
|
||||
|
||||
private bool gameRoomHandled { get; set; }
|
||||
private void HandleForGameRoom()
|
||||
{
|
||||
var model = mainController.cyclingController as GameModel;
|
||||
if (model != null && model.FirstEndTime.HasValue && !gameRoomHandled)
|
||||
{
|
||||
gameRoomHandled = true;
|
||||
var gap = model.FirstEndTime.Value - UIManager.Now.GetDateTime();
|
||||
var seconds = Math.Floor(gap.TotalSeconds);
|
||||
UIManager.ShowGameRoomCountDownPanel((int)seconds, () => {
|
||||
Upload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected override void BeforeRun()
|
||||
{
|
||||
//if (mainController != null)
|
||||
//{
|
||||
@@ -157,7 +175,7 @@ namespace Assets.Scenes.Ride.Scripts
|
||||
nextPosition.x -= 14f;
|
||||
nextPosition.y += 5f;
|
||||
//人物移动 停止条件 到中间且线未加载完
|
||||
if ( GetStart() && chartDataSourceScript.ReachMid(viewIndex) && !chartDataSourceScript.ReachEnd())
|
||||
if ( GetStart() && chartDataSourceScript.ReachMid(CurrentIndex) && !chartDataSourceScript.ReachEnd())
|
||||
{
|
||||
var currentDistance = CurrentDistance;
|
||||
var distance = Distance;
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
timer -= Time.deltaTime;
|
||||
|
||||
CreateHeadImage();
|
||||
|
||||
|
||||
while (timer <= 0)
|
||||
{
|
||||
try
|
||||
@@ -141,26 +141,35 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
private bool animated = false;
|
||||
private float offset = 0;
|
||||
private Vector3 rotation = Vector3.zero;
|
||||
protected CustomRange currentRange { get; set; }
|
||||
//控制角色进行向左或向右
|
||||
protected virtual void Turn()
|
||||
{
|
||||
var currentFrame = GetCurrentFrame();
|
||||
var result = manager.mockDirection.Where(c => c.Start < currentFrame && c.End > currentFrame).FirstOrDefault();
|
||||
if (result != null)
|
||||
currentRange = manager.mockDirection.Where(c => c.Start < currentFrame && c.End > currentFrame).FirstOrDefault();
|
||||
if (currentRange != null)
|
||||
{
|
||||
bearing = result.Value;
|
||||
bearing = currentRange.RotationY;
|
||||
rotation.y = currentRange.RotationY;
|
||||
rotation.z = currentRange.RotationZ;
|
||||
}
|
||||
else
|
||||
{
|
||||
rotation.y = 0;
|
||||
rotation.z = 0;
|
||||
bearing = 0;
|
||||
}
|
||||
animator.SetFloat("bearing", bearing);
|
||||
|
||||
var headBack = ticks % 60 == 0 && speed > 0 && bearing == 0;
|
||||
var drink = ticks % 125 == 0 && speed > 0 && bearing == 0;
|
||||
|
||||
animator.SetFloat("bearing", bearing);
|
||||
animator.SetBool("headBack", headBack);
|
||||
animator.SetBool("drinking", drink);
|
||||
|
||||
var waiting = ratio == 0 ? 1 : 1 / ratio;
|
||||
//直角拐弯
|
||||
if (Math.Abs(bearing) > 30)
|
||||
{
|
||||
if (!animated)
|
||||
@@ -181,6 +190,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
else
|
||||
{
|
||||
//直角拐弯回正
|
||||
if (offset != 0)
|
||||
{
|
||||
var cpoffset = offset;
|
||||
@@ -193,11 +203,31 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
};
|
||||
offset = 0;
|
||||
}
|
||||
//正常拐弯
|
||||
else
|
||||
{
|
||||
transform.DORotate(new Vector3(0, bearing, -bearing), waiting);
|
||||
transform.DORotate(rotation, 0.6f);
|
||||
}
|
||||
}
|
||||
}
|
||||
Vector3 current;
|
||||
Vector3 forward;
|
||||
//0-90 右转弯 -90-0左转弯
|
||||
protected virtual void TurnAround()
|
||||
{
|
||||
StartCoroutine(MoveTo());
|
||||
}
|
||||
|
||||
protected virtual IEnumerator MoveTo()
|
||||
{
|
||||
float t = 0;
|
||||
while (t < 1)
|
||||
{
|
||||
t += Time.deltaTime;
|
||||
Vector3 v = Vector3.Lerp(current, forward, t);
|
||||
current = v;
|
||||
transform.DORotate(v, 0);
|
||||
yield return new WaitForEndOfFrame();
|
||||
}
|
||||
}
|
||||
//计算人物当前属性
|
||||
@@ -269,6 +299,9 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
}
|
||||
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
|
||||
return;
|
||||
|
||||
manager.Play(ratio);
|
||||
|
||||
if (ratio > 1)
|
||||
{
|
||||
ratio = Math.Min(ratio, 1.2f);
|
||||
@@ -283,8 +316,6 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
animator.speed = ratio;
|
||||
}
|
||||
manager.Play(ratio);
|
||||
|
||||
}
|
||||
|
||||
protected virtual void ComputeRecord() { }
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -84,7 +81,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (manager.CurrentPlayer == null || manager.CurrentPlayer.UserId != UserId)
|
||||
{
|
||||
var result = manager.mockDirection.Where(c => c.Start < currentFrame && c.End > currentFrame).FirstOrDefault();
|
||||
bearing = result?.Value ?? 0;
|
||||
bearing = result?.RotationY ?? 0;
|
||||
animator.SetFloat("bearing", bearing);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,14 +24,34 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
public class CustomRange
|
||||
{
|
||||
public int Start { get; set; }
|
||||
public int End { get; set; }
|
||||
public int Value { get; set; }
|
||||
public int Start { get; set; }//起始帧
|
||||
public int End { get; set; }//结束帧
|
||||
public int PositionX { get; set; }
|
||||
public int PositionY { get; set; }
|
||||
public int PositionZ { get; set; }
|
||||
public int RotationY { get; set; }
|
||||
public int RotationZ { get; set; }
|
||||
public int ShadowDirection { get; set; }
|
||||
|
||||
public static CustomRange Read(string s)
|
||||
{
|
||||
//243~573:-15,13,12
|
||||
var result = s.Split(':');
|
||||
var range = result[0].Split('~');
|
||||
var v = result[1].Split(',');
|
||||
CustomRange r = new CustomRange()
|
||||
{
|
||||
Start = Convert.ToInt32(range[0]),
|
||||
End = Convert.ToInt32(range[1]),
|
||||
RotationY = Convert.ToInt32(v[0]),
|
||||
RotationZ = Convert.ToInt32(v[1]),
|
||||
PositionX = Convert.ToInt32(v[2]),
|
||||
};
|
||||
return r;
|
||||
}
|
||||
}
|
||||
public class VideoGameManager : DeviceServiceMonoBase
|
||||
{
|
||||
[SerializeField]
|
||||
public VideoPlayer videoPlayer;
|
||||
public AbstractVideoPlayer CurrentPlayer { get; set; }
|
||||
private MapDataModel mapData { get; set; }
|
||||
private MediaPlayer mediaPlayer { get; set; }
|
||||
@@ -49,6 +69,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
public List<float> slots = new List<float>();
|
||||
GameObject infoPanel;
|
||||
GameObject OnlinePlayer;
|
||||
GameObject OnlinePlayer_NV;
|
||||
private bool isStop { get; set; }
|
||||
public enum ARMode
|
||||
{
|
||||
@@ -69,7 +90,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
recordId = Guid.NewGuid().ToString();
|
||||
MockDirection();
|
||||
infoPanel = Resources.Load<GameObject>("UI/Prefab/AR/VideoPlayerHead");
|
||||
OnlinePlayer = Resources.Load<GameObject>("UI/Prefab/OnlineVideoPlayer");
|
||||
OnlinePlayer = Resources.Load<GameObject>("UI/Prefab/AR/OnlineVideoPlayer");
|
||||
OnlinePlayer_NV = Resources.Load<GameObject>("UI/Prefab/AR/OnlineVideoPlayer_NV");
|
||||
StartCoroutine(Init());
|
||||
}
|
||||
void Start()
|
||||
@@ -152,7 +174,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
if (currentPlayer != null)
|
||||
{
|
||||
var onlineRider = currentPlayer as OnlineRiderModel;
|
||||
var obj = Instantiate(OnlinePlayer, transform);
|
||||
GameObject obj;
|
||||
if (onlineRider.Sex == 1)
|
||||
{
|
||||
obj = Instantiate(OnlinePlayer, transform);
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = Instantiate(OnlinePlayer_NV, transform);
|
||||
}
|
||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance-onlineRider.PreDistance, onlineRider.EndDistance, onlineRider.Cadence, onlineRider.HeartRate, onlineRider.TotalTicks, onlineRider.UserId, onlineRider.Power, onlineRider.EndDistance,onlineRider.FrameRate.Value);
|
||||
obj.transform.DOMoveX(0, 1);
|
||||
@@ -196,7 +226,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
var diff = item.EndDistance % mapData.TotalDistance - currentPlayerInfo.EndDistance % mapData.TotalDistance;
|
||||
if (Math.Abs(diff * 1000) <= 50)
|
||||
{
|
||||
var obj = Instantiate(OnlinePlayer, transform);
|
||||
GameObject obj;
|
||||
if (currentPlayerInfo.Sex == 1)
|
||||
{
|
||||
obj = Instantiate(OnlinePlayer, transform);
|
||||
}
|
||||
else
|
||||
{
|
||||
obj = Instantiate(OnlinePlayer_NV, transform);
|
||||
}
|
||||
var online = obj.GetComponent<OnlineVideoPlayer>();
|
||||
online.SetPlayer(onlineRider.NickName, onlineRider.EndDistance - onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
|
||||
obj.transform.DOMoveX(slots[currentOnlineCount], 1);
|
||||
@@ -212,19 +250,28 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_aRMode = aRMode;
|
||||
var uimanager = FindObjectOfType<VideoUIManager>();
|
||||
uimanager.SetCurrentMode(aRMode);
|
||||
if (_aRMode == ARMode.INSPECT)
|
||||
if (_aRMode != ARMode.INSPECT)
|
||||
{
|
||||
videoPlayer?.gameObject.SetActive(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
videoPlayer?.gameObject.SetActive(true);
|
||||
CurrentPlayer = videoPlayer;
|
||||
InitCurrentPlayer();
|
||||
ContinueAsync();
|
||||
}
|
||||
}
|
||||
//初始化人物模型
|
||||
public void InitCurrentPlayer()
|
||||
{
|
||||
GameObject videoPlayer;
|
||||
if (App.CurrentUser.Sex == 1)
|
||||
{
|
||||
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer"),transform);
|
||||
}
|
||||
else
|
||||
{
|
||||
videoPlayer = Instantiate(Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV"), transform);
|
||||
}
|
||||
CurrentPlayer = videoPlayer.GetComponent<VideoPlayer>();
|
||||
}
|
||||
|
||||
Vector3 origin = new Vector3(0, -1, 4);
|
||||
Vector3 origin = new Vector3(0, -1, 3);
|
||||
//切换人物
|
||||
public void ChangePlayer(int userId)
|
||||
{
|
||||
@@ -300,18 +347,13 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
private void MockDirection()
|
||||
{
|
||||
var text = Resources.Load<TextAsset>("UI/direction");
|
||||
var arr = text.text.Replace("\r\n", ",").Split(',');
|
||||
var arr = text.text.Replace("\r\n", " ").Split(' ');
|
||||
foreach (var item in arr)
|
||||
{
|
||||
if (string.IsNullOrEmpty(item))
|
||||
continue;
|
||||
var result = item.Split(':');
|
||||
var range = result[0].Split('~');
|
||||
mockDirection.Add(new CustomRange() {
|
||||
Start = Convert.ToInt32(range[0]),
|
||||
End = Convert.ToInt32(range[1]),
|
||||
Value = Convert.ToInt32(result[1]),
|
||||
});
|
||||
var c = CustomRange.Read(item);
|
||||
mockDirection.Add(c);
|
||||
}
|
||||
}
|
||||
//设置骑行模式
|
||||
@@ -521,5 +563,10 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
return new Vector2d(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
App.gameRoomDetail = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -234,6 +234,8 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
|
||||
protected void Download(BaseEventData baseEvent)
|
||||
{
|
||||
var path = PFConstants.VideoFolder;
|
||||
var filepath = path + $"/{route.FileName}";
|
||||
StartCoroutine(Utils.DownloadVideo(route.FileName, route.Url
|
||||
, (p, req) =>
|
||||
{
|
||||
@@ -249,7 +251,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
else
|
||||
{
|
||||
slider.value = 100;
|
||||
manager.SetMedia(p);
|
||||
manager.SetMedia(filepath);
|
||||
}
|
||||
}
|
||||
));
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Assets.Scenes.Ride.Scripts;
|
||||
using Assets.Scenes.Ride.Scripts.Model;
|
||||
using Assets.Scenes.Ride.Scripts.Model.CyclingModels;
|
||||
using DG.Tweening;
|
||||
using System;
|
||||
using System.Linq;
|
||||
@@ -44,14 +45,26 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
{
|
||||
base.ComputeAnimator();
|
||||
}
|
||||
protected override void Turn()
|
||||
{
|
||||
base.Turn();
|
||||
if (currentRange != null)
|
||||
{
|
||||
transform.DOMoveX(currentRange.PositionX, 0.8f);
|
||||
}
|
||||
else
|
||||
{
|
||||
transform.DOMoveX(1, 0.8f);
|
||||
}
|
||||
}
|
||||
protected override void ComputePlayer()
|
||||
{
|
||||
heartRate = manager.UpDateHeart();
|
||||
power = manager.UpdatePower();
|
||||
cadance = manager.UpdateCadence();
|
||||
//#if UNITY_EDITOR
|
||||
power = 350;
|
||||
cadance = 150;
|
||||
power = 100;
|
||||
cadance = 70;
|
||||
heartRate = 160;
|
||||
//#endif
|
||||
weight = App.CurrentUser.Weight;
|
||||
@@ -59,10 +72,27 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
wkg = Math.Round(power / weight, 2);
|
||||
var mainFrame = manager.GetCurrentFrame();
|
||||
var result = manager.mockDirection.Where(c => c.Start < mainFrame && c.End > mainFrame).FirstOrDefault();
|
||||
bearing = result?.Value ?? 0;
|
||||
bearing = result?.RotationY ?? 0;
|
||||
//发送阻力
|
||||
manager.TrackResistance(currentSlope);
|
||||
base.ComputePlayer();
|
||||
HandleForGameRoom();
|
||||
}
|
||||
private bool gameRoomHandled { get; set; }
|
||||
private void HandleForGameRoom()
|
||||
{
|
||||
var model = manager.cyclingController as GameModel;
|
||||
if (model != null && model.FirstEndTime.HasValue && !gameRoomHandled)
|
||||
{
|
||||
gameRoomHandled = true;
|
||||
var gap = model.FirstEndTime.Value - UIManager.Now.GetDateTime();
|
||||
var seconds = Math.Floor(gap.TotalSeconds);
|
||||
UIManager.ShowGameRoomCountDownPanel((int)seconds, () => {
|
||||
Upload();
|
||||
var uiManager = FindObjectOfType<VideoUIManager>();
|
||||
uiManager.ShowResultPanel();
|
||||
});
|
||||
}
|
||||
}
|
||||
//控制视频播放速度
|
||||
protected override void ComputeVideo()
|
||||
@@ -89,7 +119,7 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
_TotalClimb = totalClimb,
|
||||
_FrameRate = manager.GetCurrentFrame()
|
||||
};
|
||||
var preDistance = totalDistance >= mapData.TotalDistance ? targetData._Distance : targetData._Distance - distance;
|
||||
var preDistance = targetData._Distance - distance;//totalDistance >= mapData.TotalDistance ? targetData._Distance : targetData._Distance - distance;
|
||||
recorderData.PreDistance = Math.Round(preDistance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.EndDistance = Math.Round(targetData._Distance, 6, MidpointRounding.AwayFromZero);
|
||||
recorderData.RiderDatas.Add(targetData);
|
||||
|
||||
@@ -216,6 +216,15 @@ namespace Assets.Scripts.Scenes.VideoRide
|
||||
cameraImage.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowResultPanel()
|
||||
{
|
||||
resultPanel.SetActive(true);
|
||||
resultPanel.transform.SetAsLastSibling();
|
||||
var videoResultScript = resultPanel.GetComponent<VideoResultScript>();
|
||||
videoResultScript.InjectController(manager);
|
||||
videoResultScript.SetDataSource(manager.cyclingController.recorderData);
|
||||
}
|
||||
private void QuitClick(BaseEventData e)
|
||||
{
|
||||
if (manager._aRMode == VideoGameManager.ARMode.RIDE)
|
||||
|
||||
Reference in new issue
Block a user