This commit is contained in:
lishuo 2022-11-24 17:20:19 +08:00
parent d1c84d0a8a
commit e3059fc1c2
5 changed files with 98021 additions and 35604 deletions

File diff suppressed because it is too large Load Diff

View File

@ -62,6 +62,7 @@ namespace Assets.Scripts.Apis.Models
set set
{ {
_List = value; _List = value;
_List = _List.ToList();
if (_List == null) return; if (_List == null) return;
this.CalcDistance(); this.CalcDistance();
this.CalcGrade(); this.CalcGrade();

View File

@ -13,7 +13,7 @@ public delegate void ChangeLanguageDelegate();
public static class App public static class App
{ {
public static string Host = "http://192.168.0.101:5087/"; public static string Host = "http://192.168.0.102:6662/";
public static string AppVersion = Application.version; public static string AppVersion = Application.version;
@ -213,7 +213,7 @@ public static class App
{ {
InitLanguage(); InitLanguage();
#if !UNITY_EDITOR #if !UNITY_EDITOR
Host = "http://pf.juze.pro/"; //Host = "http://pf.juze.pro/";
UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000); UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001); TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
//线上 //线上
@ -226,7 +226,7 @@ public static class App
//TcpAddress = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 21001); //TcpAddress = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 21001);
Debug.unityLogger.logEnabled = false; Debug.unityLogger.logEnabled = false;
#else #else
Host = "http://pf.juze.pro/";//"http://192.168.0.102:5086/"; // Host = "http://pf.juze.pro/"; //"http://192.168.0.102:5082/";//
UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000); UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001); TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
#endif #endif

View File

@ -30,7 +30,7 @@ namespace Assets.Scripts.Scenes.VideoRide
public double wkg; public double wkg;
public int? heartRate { get; set; } public int? heartRate { get; set; }
public int ticks; public int ticks;
public double totalDistance; public double totalDistance { get; set; }
public double currentSlope; public double currentSlope;
protected double nextSlope; protected double nextSlope;
protected double nextSlopeDistance; protected double nextSlopeDistance;
@ -74,9 +74,9 @@ namespace Assets.Scripts.Scenes.VideoRide
camera = Camera.main; camera = Camera.main;
//bone_bottle_2 //bone_bottle_2
bone_bottle_2 = transform.Find("bone_cable_20"); bone_bottle_2 = transform.Find("bone_cable_20");
var config = manager.mockDirection; //var config = manager.mockDirection;
pre = config[0]; //pre = config[0];
next = config[0]; //next = config[0];
} }
//人物状态 //人物状态
@ -123,7 +123,6 @@ namespace Assets.Scripts.Scenes.VideoRide
Debug.LogError(e.Message); Debug.LogError(e.Message);
} }
} }
} }
private void OnTriggerEnter(Collider other) private void OnTriggerEnter(Collider other)
{ {
@ -298,7 +297,7 @@ namespace Assets.Scripts.Scenes.VideoRide
if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId) if (manager.CurrentPlayer != null && manager.CurrentPlayer.UserId != UserId)
return; return;
//ratio = (float)Math.Round(ratio, 1); //ratio = (float)Math.Round(ratio, 1);
manager.Play(totalDistance); manager.Play(currentIndex,currentSlopeDistance);
if (ratio > 1) if (ratio > 1)
{ {

View File

@ -116,7 +116,7 @@ namespace Assets.Scripts.Scenes.VideoRide
base.Awake(); base.Awake();
#if UNITY_EDITOR #if UNITY_EDITOR
if (App.RouteIdParam == 0) if (App.RouteIdParam == 0)
App.RouteIdParam = 6251; App.RouteIdParam = 6250;
#endif #endif
#if UNITY_EDITOR #if UNITY_EDITOR
if (App.CurrentUser == null) //App.CurrentUser == null if (App.CurrentUser == null) //App.CurrentUser == null
@ -772,25 +772,25 @@ namespace Assets.Scripts.Scenes.VideoRide
private void FixedUpdate() private void FixedUpdate()
{ {
var currentFrame = GetCurrentFrame(); //var currentFrame = GetCurrentFrame();
CameraNode pre = null; //CameraNode pre = null;
CameraNode next = null; //CameraNode next = null;
for (int i = 0; i < cameraList.Count; i++) //for (int i = 0; i < cameraList.Count; i++)
{ //{
if (cameraList[i].Frame >= currentFrame) // if (cameraList[i].Frame >= currentFrame)
{ // {
pre = i > 0 ? cameraList[i - 1] : cameraList[i]; // pre = i > 0 ? cameraList[i - 1] : cameraList[i];
next = cameraList[i]; // next = cameraList[i];
break; // break;
} // }
} //}
if (pre == null || next == null) //if (pre == null || next == null)
{ //{
return; // return;
} //}
var x = (next.Frame - pre.Frame) * (next.X - pre.X) == 0 ? pre.X : (float)(pre.X + ((currentFrame - pre.Frame) / (next.Frame - pre.Frame)) * (next.X - pre.X)); //var x = (next.Frame - pre.Frame) * (next.X - pre.X) == 0 ? pre.X : (float)(pre.X + ((currentFrame - pre.Frame) / (next.Frame - pre.Frame)) * (next.X - pre.X));
var y = (next.Frame - pre.Frame) * (next.Y - pre.Y) == 0 ? pre.Y : (float)(pre.Y + ((currentFrame - pre.Frame) / (next.Frame - pre.Frame)) * (next.Y - pre.Y)); //var y = (next.Frame - pre.Frame) * (next.Y - pre.Y) == 0 ? pre.Y : (float)(pre.Y + ((currentFrame - pre.Frame) / (next.Frame - pre.Frame)) * (next.Y - pre.Y));
Camera.main.transform.localEulerAngles = new Vector3((float)Math.Round(x, 3), (float)Math.Round(y, 3), 0);//currentCameraRotation;//Vector3.SmoothDamp(Camera.main.transform.localEulerAngles, currentCameraRotation, ref mVelocity, 0.5f); //Camera.main.transform.localEulerAngles = new Vector3((float)Math.Round(x, 3), (float)Math.Round(y, 3), 0);//currentCameraRotation;//Vector3.SmoothDamp(Camera.main.transform.localEulerAngles, currentCameraRotation, ref mVelocity, 0.5f);
} }
float velocity; float velocity;
float test = 0; float test = 0;
@ -805,7 +805,7 @@ namespace Assets.Scripts.Scenes.VideoRide
//创建当前线路其他选手 //创建当前线路其他选手
private void CreateOnlineUser(List<BaseRider> list) private void CreateOnlineUser(List<BaseRider> list)
{ {
if (list == null) if (list == null || list.Count == 0)
return; return;
CreateCurrentPlayer(list); CreateCurrentPlayer(list);
@ -939,17 +939,34 @@ namespace Assets.Scripts.Scenes.VideoRide
CurrentPlayer = videoPlayer.GetComponent<VideoPlayer>(); CurrentPlayer = videoPlayer.GetComponent<VideoPlayer>();
splineController.Position = startOffset; splineController.Position = startOffset;
#if UNITY_EDITOR #if UNITY_EDITOR
//生成轨迹
foreach (var item in spline.ControlPointsList) //var txt = Resources.Load<TextAsset>("UI/camera");
{ //var ss = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Vector3>>(txt.text);
GameObject o = new GameObject("oo");
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube); //var curvy = CurvySpline.Create();
cube.transform.SetParent(o.transform); //curvy.Interpolation = CurvyInterpolation.Bezier;
cube.transform.position = new Vector3(0, 2f, 0f); //ss.Take(10);
var cp = o.AddComponent<SplineController>(); //foreach (var item in ss)
cp.Spline = spline; //{
cp.Position = item.Distance; // //GameObject o = new GameObject("oo");
} // //var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
// //cube.transform.SetParent(o.transform);
// //cube.transform.position = item;
// curvy.Add(item);
//}
////生成轨迹
//foreach (var item in spline.ControlPointsList)
//{
// GameObject o = new GameObject("oo");
// var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
// cube.transform.SetParent(o.transform);
// cube.transform.position = new Vector3(0, 0f, 0f);
// var cp = o.AddComponent<SplineController>();
// cp.Spline = spline;
// cp.Position = item.Distance;
//}
#endif #endif
} }
@ -1089,8 +1106,14 @@ namespace Assets.Scripts.Scenes.VideoRide
} }
double preframe = 0; double preframe = 0;
double preDistance = 0; double preDistance = 0;
public void Play(float ratio)
{
mediaPlayer.PlaybackRate = ratio;
mediaPlayer.Play();
}
//设置当前视频播放速度 //设置当前视频播放速度
public void Play(double totalDistance) public void Play(int index, double distance)
{ {
if (!isStart && _aRMode == ARMode.RIDE) if (!isStart && _aRMode == ARMode.RIDE)
return; return;
@ -1101,15 +1124,33 @@ namespace Assets.Scripts.Scenes.VideoRide
// mediaPlayer.Play(); // mediaPlayer.Play();
//var frames = DistanceToFrames(totalDistance); //var frames = DistanceToFrames(totalDistance);
//var frame = DistanceToTimers(totalDistance); //var frame = DistanceToTimers(totalDistance);
var result = (float)(totalDistance * ratio);
var s1 = frameList.OrderBy(c => c.Distance).Where(c => c.Distance > result).FirstOrDefault();
var s2 = frameList.OrderByDescending(c => c.Distance).Where(c => c.Distance <= result).FirstOrDefault();
var frame = s2.Second + (result - s2.Distance) / (s1.Distance - s2.Distance) * (s1.Second - s2.Second);
//StartCoroutine(DOCameraAnimation(cameraSplineCp.Position, totalDistance - preDistance)); //StartCoroutine(DOCameraAnimation(cameraSplineCp.Position, totalDistance - preDistance));
//StartCoroutine(DOTrackAnimation(preDistance, totalDistance - preDistance)); //StartCoroutine(DOTrackAnimation(preDistance, totalDistance - preDistance));
StartCoroutine(DOSeekToFrame(preframe, frame - preframe));
preframe = frame; //var result = (float)(totalDistance * ratio);
preDistance = totalDistance; //var s1 = frameList.OrderBy(c => c.Distance).Where(c => c.Distance > result).FirstOrDefault();
//var s2 = frameList.OrderByDescending(c => c.Distance).Where(c => c.Distance <= result).FirstOrDefault();
//var frame = s2.Second + (result - s2.Distance) / (s1.Distance - s2.Distance) * (s1.Second - s2.Second);
//StartCoroutine(DOSeekToFrame(preframe, frame - preframe));
//preframe = frame;
//preDistance = totalDistance;
//index = > Spline.AbsolutePosition mediaPlayer.seek()
var ttt = mediaPlayer.Info.GetDurationFrames();
double offset = 0;
if (index + 1 < splineController.Spline.ControlPointsList.Count)
{
var total = splineController.Spline.ControlPointsList[index + 1].Distance - splineController.Spline.ControlPointsList[index].Distance;
offset = distance / mapData.List[index].Distance * total;
}
var currentProcess = index +distance / mapData.List[index].Distance;
var currentDistance = splineController.Spline.ControlPointsList[index].Distance + offset;
StartCoroutine(PlayMoive(preframe, currentProcess - preframe));
StartCoroutine(PlayPosition(preDistance, currentDistance - preDistance));
preframe = currentProcess;
preDistance = currentDistance;
} }
if (startTime == null) if (startTime == null)
{ {
@ -1211,6 +1252,33 @@ namespace Assets.Scripts.Scenes.VideoRide
yield return null; yield return null;
} }
} }
private IEnumerator PlayPosition(double prePos, double offset)
{
float t = 0;
while (t <= 1)
{
t += Time.deltaTime;
double result = prePos + offset * t;
splineController.AbsolutePosition = (float)result; //(float)(result / (double)s1.Key * s1.Value);
TestSpline.AbsolutePosition = (float)result + 2f;
double result1 = prePos + offset * t/2;
cameraSplineCp.AbsolutePosition = (float)result;
yield return null;
}
}
private IEnumerator PlayMoive(double preFrame, double offset)
{
float t = 0;
while (t <= 1)
{
t += Time.deltaTime;
double result = preFrame + offset * t;
mediaPlayer?.Control.Seek(result);
yield return null;
}
}
public float startOffset = 0f; public float startOffset = 0f;
private IEnumerator DOSeekToFrame(double preFrame, double offset) private IEnumerator DOSeekToFrame(double preFrame, double offset)