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

+4 -4
View File
@@ -59,7 +59,7 @@ public static class App
public static string pageName { get; set; }
public static int firstEnter { get; set; }
public static IPEndPoint UdpAddress { get; private set; } = new IPEndPoint(IPAddress.Parse("192.168.0.97"), 11000);
public static IPEndPoint UdpAddress { get; private set; } = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 21000);
public static IPEndPoint TcpAddress { get; private set; } = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 21001);
public static UpdateModel UpdateObject { get; set; }
public static int CompetionId { get; set; }//比赛id
@@ -213,7 +213,7 @@ public static class App
{
InitLanguage();
#if !UNITY_EDITOR
//Host = "http://pf.juze.pro/";
Host = "http://pf.juze.pro/";
UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
//线上
@@ -226,8 +226,8 @@ public static class App
//TcpAddress = new IPEndPoint(IPAddress.Parse("192.168.0.102"), 21001);
Debug.unityLogger.logEnabled = false;
#else
//Host = "http://pf.juze.pro/"; //"http://192.168.0.102:5082/";//
UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
Host = "http://pf.juze.pro/";//"http://pf.juze.pro/"; //"http://192.168.0.102:5082/";//
//UdpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21000);
TcpAddress = new IPEndPoint(IPAddress.Parse("47.97.84.8"), 21001);
#endif
var now = DateTime.Now;
@@ -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()
+2 -1
View File
@@ -78,7 +78,8 @@ public class MapItem : MonoBehaviour, IPointerExitHandler, IPointerEnterHandler,
var tabContainer = transform.Find("TabContainer");
var diff = tabContainer.Find("Diff");
diff.Find("Text").GetComponent<Text>().text = myMap.Hard;
tabContainer.Find("3d").gameObject.SetActive(myMap.Enable3D);
tabContainer.Find("3d").gameObject.SetActive(!myMap.EnableAR && myMap.Enable3D);
tabContainer.Find("AR").gameObject.SetActive(myMap.EnableAR);
tabContainer.Find("Country").GetComponent<RawImage>().texture = UIManager.Instance.loginRegOptions.GetCountryImage(myMap.CountryCode);
transform.Find("CollectImg").GetComponent<Button>().onClick.RemoveAllListeners();
transform.Find("CollectImg").GetComponent<Button>().onClick.AddListener(Collect);
@@ -260,6 +260,8 @@ public class MapListController : PFUIPanel
favContainer = topContainer.Find("FavContainer");
if (tdContainer != null)
{
tdContainer.Find("Gou").gameObject.SetActive(true);
is3d = true;
UIManager.AddEvent(tdContainer.gameObject, EventTriggerType.PointerClick, (b) =>
{
var gou = tdContainer.Find("Gou").gameObject;
@@ -439,14 +441,14 @@ public class MapListController : PFUIPanel
string ftname = "";
string distance = "";
List<string> hands = new List<string>();
bool is3d = false,isFav = false,isMine = false,isRecent = false;
bool is3d = true,isFav = false,isMine = false,isRecent = false;
string sort = "",sortDire = "";
//string name = "";
//string name = "";
async void GetList()
{
if (isEnd) return;
var res = await ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname,distance,string.Join(",",hands),is3d,sort,sortDire,isFav,isMine,isRecent);
var res = await ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname,distance,string.Join(",",hands),false,sort,sortDire,isFav,isMine,isRecent, is3d);
if (res.result)
{
if (res.data.Count == 0)
@@ -510,7 +512,7 @@ public class MapListController : PFUIPanel
hands = new List<string>();
var text = distanceOptions.GetComponent<Dropdown>().options[0].text;
distance = MapFilterOptions.distanceDict[text];
is3d = false;
is3d = true;
isFav = false;
//empty ui
searchInput.GetComponent<InputField>().text = string.Empty;
@@ -534,7 +536,7 @@ public class MapListController : PFUIPanel
var isfav = favContainer.Find("Gou").gameObject;
isfav.SetActive(false);
var is3dUI = tdContainer.Find("Gou").gameObject;
is3dUI.SetActive(false);
is3dUI.SetActive(true);
if (sorts != null)
{