AR初版可用阶段提交

This commit is contained in:
lishuo committed 2023-01-13 10:45:42 +08:00
1 parent dc8f8ceb80
commit 27d18d7d01
22 files changed
+4067 -3240

No files matched your search

@@ -62,6 +62,8 @@ namespace Assets.Scripts.Scenes.VideoRide
public bool IsStart = false;
public double mockpower { get; set; }
protected virtual void Start()
{
animator = GetComponent<Animator>();
@@ -7,7 +7,6 @@ namespace Assets.Scripts.Scenes.VideoRide
{
public class ElevationBarDataFeed : MonoBehaviour
{
GameObject head { get; set; }
VideoGameManager manager { get; set; }
[SerializeField]
Material _lightColor;
@@ -22,7 +21,6 @@ namespace Assets.Scripts.Scenes.VideoRide
void Start()
{
head = transform.Find("HeadPanel").gameObject;
manager= FindObjectOfType<VideoGameManager>();
BarChart barChart = GetComponent<BarChart>();
@@ -34,10 +32,9 @@ namespace Assets.Scripts.Scenes.VideoRide
for (int i = 0; i < list.Count; i++)
{
barChart.DataSource.AddCategory($"Player {i}", getChartMaterial(list[i].Grade));
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Grade);
barChart.DataSource.SetValue($"Player {i}", "Group 1", list[i].Elevation);
}
}
headPanel = Resources.Load<GameObject>("UI/Prefab/AR/HeadPanel");
}
@@ -47,22 +44,13 @@ namespace Assets.Scripts.Scenes.VideoRide
timer -= Time.deltaTime;
while (timer < 0)
{
MoveCurrentPlayerHead();
MoveOnlinePlayerHead();
timer += 1f;
timer += 0.5f;
}
MoveOnlinePlayerHead();
}
//移动当前骑行者头像
private void MoveCurrentPlayerHead()
{
var videoPlayer = manager.CurrentPlayer;
var index = videoPlayer != null ? videoPlayer.currentIndex : 0;
BarChart barChart = GetComponent<BarChart>();
Vector3 vector3 = Vector3.back;
barChart.GetBarTrackPosition($"Player {index}", "Group 1", out vector3);
head.transform.position = vector3;
}
//移动当前线上其他人头像
//移动海拔线上人物位置
private void MoveOnlinePlayerHead()
{
if (manager.cyclingController == null)
@@ -74,26 +62,26 @@ namespace Assets.Scripts.Scenes.VideoRide
{
BarChart barChart = GetComponent<BarChart>();
Vector3 vector3 = Vector3.back;
var distance = item.EndDistance % manager.mapRoute.Distance;
var distance = item.EndDistance; //% manager.mapRoute.Distance;
var currentIndex = Math.Round(distance / manager.mapRoute.Distance * manager.GetMapData().List.Count);
barChart.GetBarTrackPosition($"Player {currentIndex}", "Group 1", out vector3);
var currentIndex = Mathf.Clamp((float)(distance / manager.mapRoute.Distance * manager.GetMapData().List.Count),0, manager.GetMapData().List.Count-1);
barChart.GetBarTrackPosition($"Player {Math.Round(currentIndex,0)}", "Group 1", out vector3);
var currentHead = headList.Where(c => c.UserId == item.UserId).FirstOrDefault();
if (videoPlayer != null)
{
var diff = distance - videoPlayer.totalDistance % manager.mapRoute.Distance;
if (diff < 0)
{
vector3.y = -800f;
}
}
if (currentHead == null)
{
var onlineHead = Instantiate(headPanel, transform);
onlineHead.GetComponent<HeadScript>().UserId = item.UserId;
onlineHead.transform.position = vector3;
if (item.IsSelf)
{
onlineHead.transform.Find("Main").gameObject.SetActive(true);
onlineHead.transform.SetAsLastSibling();
}
else
{
onlineHead.transform.SetAsFirstSibling();
}
}
else
{
@@ -232,15 +232,20 @@ namespace Assets.Scripts.Scenes.VideoRide
var playerprefabNV = Resources.Load<GameObject>("UI/Prefab/AR/VidePlayer_NV");
videoPlayer = Instantiate(playerprefabNV, transform);
}
CurrentPlayer = videoPlayer.GetComponent<AbstractVideoPlayer>();
var vv = videoPlayer.GetComponent<VideoPlayer>();
vv.SetEndDistance(item.EndDistance);
CurrentPlayer.SetStartDistance(item.EndDistance);
var rideObj = videoPlayer.GetComponent<RiderRenderer>();
rideObj.Distance = (float)CurrentPlayer.StartDistance;
rideObj.RouteDistance = rideObj.Distance;
rideObj.IsMain = true;
Debug.Log("IsMain = true");
rideObjs.Add(CurrentPlayer, rideObj);
visibleRiders.Add(CurrentPlayer);
CurrentPlayer.SetPlayer(onlineRider.NickName, onlineRider.Speed, onlineRider.PreDistance, onlineRider.EndDistance, item.Cadence, item.HeartRate, onlineRider.WeightKg, item.UserId, onlineRider.Power, currentPlayerInfo.EndDistance, onlineRider.FrameRate.Value);
}
}
@@ -318,7 +323,6 @@ namespace Assets.Scripts.Scenes.VideoRide
public void SetCyclingModel(CyclingModel mode)
{
//startTime = UIManager.Now.GetDateTime();
Debug.Log("SetCyclingModel" + mode.ToString());
this.cyclingModel = mode;
switch (cyclingModel)
{
@@ -287,6 +287,12 @@ namespace Assets.Scripts.Scenes.VideoRide
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);
}
public void Report(float value)
@@ -301,15 +307,7 @@ namespace Assets.Scripts.Scenes.VideoRide
}
else
{
var route = manager.mapRoute;
var path = PFConstants.VideoFolder;
rideNow.enabled = true;
rideNow.interactable = true;
downloadText.text = App.GetLocalString("Ride Now");
//watch.SetActive(true);
slider.value = 100;
var filepath = $"{path}/{route.FileName}";
manager.SetMedia(filepath);
}
}
//进入观察模式
@@ -58,8 +58,9 @@ namespace Assets.Scripts.Scenes.VideoRide
heartRate = manager.UpDateHeart();
power = manager.UpdatePower();
cadance = manager.UpdateCadence();
//#if UNITY_EDITOR
power = 230;
//#if UNITY_EDITOR
if(mockpower > 0)
power = mockpower;//TODO:动态
cadance = 50;
heartRate = 120;
//#endif
@@ -128,7 +129,6 @@ namespace Assets.Scripts.Scenes.VideoRide
//默认启用多圈
if (isSingle && totalDistance >= mapData.TotalDistance)
{
Debug.Log($"{totalDistance}-{mapData.TotalDistance}");
Complete();
}
}
@@ -51,7 +51,10 @@ namespace Assets.Scripts.Scenes.VideoRide
GameObject ftpPanel { get; set; }
Image ftpImage { get; set; }
Text wkg { get; set; }
public Text PowerText;
public Slider PowerSlider;
// Start is called before the first frame update
void Start()
{
@@ -143,6 +146,11 @@ namespace Assets.Scripts.Scenes.VideoRide
UIManager.AddEvent(changeViewBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, ChangeViewClick);
UIManager.AddEvent(deviceBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, DeviceClick);
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, QuitClick);
PowerSlider.onValueChanged.AddListener(e =>
{
PowerText.text = e.ToString("f0") + "W";
manager.CurrentPlayer.mockpower = e;
});
}
//设置坡度信息
private void SetSlopePanel()