Commit 6c616198 authored by p x's avatar p x
Browse files

调整AVP加载方式

parent e0a57a35
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502439,39.808918,327.76611328125],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502439,39.808918,null],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502435,39.808923,327.777099609375],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502432,39.808927,327.843017578125],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502428,39.808932,327.930908203125],"routing":[],"progress":null}
......
package com.sd.cavphmi.highmap
import com.sd.cavphmi.utils.MyContants
/**
* 给unity 初始化json
......@@ -11,9 +9,9 @@ import com.sd.cavphmi.utils.MyContants
* @constructor Create empty Tile json bean
*/
class TileJsonBean {
var host: String = MyContants.HOST_MAP
/* var host: String = MyContants.HOST_MAP
var tiles3d = listOf(
// "/gis_data/3dtiles/road/CurbStrip/tileset.json",
// "/gis_data/3dtiles/road/CurbStrip/tileset.json",
"/gis_data/3dtiles/road/LanePolygon/tileset.json",
"/gis_data/3dtiles/road/RoadSection/tileset.json",
"/gis_data/3dtiles/road/SafetyIsland/tileset.json",
......@@ -22,48 +20,52 @@ class TileJsonBean {
"/gis_data/3dtiles/road/TraMarkA/tileset.json",
"/gis_data/3dtiles/road/TraMarkL/tileset.json",
"/gis_data/3dtiles/road/TraMarkP/tileset.json",
// "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
// "/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
// "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
// "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子
// "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯
// "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
// "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子
// "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaodeng/tileset.json",
// "/gis_data/3dtiles/roadequip/baoganji/tileset.json",
// "/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
// "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
// "/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
// "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
// "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子
// "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯
// "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
// "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子
// "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaodeng/tileset.json",
// "/gis_data/3dtiles/roadequip/baoganji/tileset.json",
// "/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
"/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json",
// "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
// "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json",
"/gis_data/3dtiles/buildings/tileset.json",
"/gis_data/3dtiles/ground/tileset.json",
// "/gis_data/3dtiles/vegetation/Tree/tileset.json"//树
)
// "/gis_data/3dtiles/vegetation/Tree/tileset.json"//树
)*/
//我本地的
// var host: String = "http://192.168.60.73"
// var tiles3d = listOf("/data/3dtiles/tileset.json")
var host: String = "http://192.168.60.73"
var tiles3d = listOf(
"/data/avp/01road/tileset.json",
"/data/avp/02shebei/tileset.json",
"/data/avp/04jianzhu/tileset.json"
)
//方本地的
/* var host = "http://192.168.60.164:5003"
var host = "http://192.168.60.73:5003"
var tiles3d = listOf("/data/3dtiles/LanePolygon-o/tileset.json",
// "/data/3dtiles/RoadSection/tileset.json",
// "/data/3dtiles/SafetyIsland/tileset.json",
// "/data/3dtiles/SepStrip/tileset.json",
// "/data/3dtiles/SideWalk/tileset.json",
// "/data/3dtiles/TraMarkA/tileset.json",
// "/data/3dtiles/RoadSection/tileset.json",
// "/data/3dtiles/SafetyIsland/tileset.json",
// "/data/3dtiles/SepStrip/tileset.json",
// "/data/3dtiles/SideWalk/tileset.json",
// "/data/3dtiles/TraMarkA/tileset.json",
"/data/3dtiles/TraMarkL-o/tileset.json",
// "/data/3dtiles/TraMarkP/tileset.json",
// "/data/3dtiles/TraMarkP/tileset.json",
// "/data/3dtiles/SignStrct/tileset.json",
// "/data/3dtiles/TrafficLight/tileset.json",
// "/data/3dtiles/TrafficSign/tileset.json",
//
// "/data/3dtiles/Yizhuang_Unicom_building/tileset.json",
// "/data/3dtiles/Yizhuang_Unicom_Ground/tileset.json"
// "/data/3dtiles/SignStrct/tileset.json",
// "/data/3dtiles/TrafficLight/tileset.json",
// "/data/3dtiles/TrafficSign/tileset.json",
//
// "/data/3dtiles/Yizhuang_Unicom_building/tileset.json",
// "/data/3dtiles/Yizhuang_Unicom_Ground/tileset.json"
)*/
......
......@@ -226,13 +226,13 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
//获取档位
var gearType = avpStatu.vehicleContext.vehicleDynamic.gearType
//画全局路径
mapOpt.drawAllLines(avpStatu.drivenDecision,businessStatus)
mapOpt.drawAllLines(avpStatu.drivenDecision, businessStatus)
//生成小地图路线
mapOpt.takeSmallMapLine(avpStatu.drivenDecision,businessStatus)
mapOpt.takeSmallMapLine(avpStatu.drivenDecision, businessStatus)
//画终点
mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint,businessStatus)
mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint, businessStatus)
//是否显示车位流光效果
mapOpt.showParkLight(businessType, businessStatus,avpStatu.space)
mapOpt.showParkLight(businessType, businessStatus, avpStatu.space)
//判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车点
mapOpt.drawReversePark(businessType, businessStatus, gearType, avpStatu.space)
//根据AVP任务状态判停车特效是否关闭
......@@ -304,8 +304,11 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
return
if (car.vehiclePos == null || car.vehiclePos.count() < 3)
return
try {
var tHead = car.vehiclePos.get(2)
// try {
if (car.vehiclePos.getOrNull(2) == null) {
//隐藏小车
return
}
//画小地图小车
mapOpt.drawSmallCar(car)
//刷新右下角小车位置
......@@ -315,15 +318,16 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
// println("----car.heading ${car.heading}")
//刷新主车位置
HighMapApi.setCarPosition(
car.vehiclePos!!.get(2),
car.vehiclePos.get(2),
car.vehiclePos.get(1),
car.vehiclePos.get(0),
20.80189
// car.elevation
)
} catch (e: NullPointerException) {
//隐藏小车
}
// } catch (e: NullPointerException) {
// //隐藏小车
// e.printStackTrace()
// }
// setCarCamera(1)
}
......@@ -493,6 +497,11 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
mainVm.hasFocus.value = hasFocus
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
// var ft = supportFragmentManager.beginTransaction()
......
......@@ -9,18 +9,12 @@ import android.widget.FrameLayout
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.viewmodels.MainVm
import com.sd.cavphmi.viewmodels.UnityMapVm
import com.unity3d.player.IUnityPlayerLifecycleEvents
import com.unity3d.player.UnityPlayer
/**
* A simple [Fragment] subclass.
* Use the [UnityFragment.newInstance] factory method to
* create an instance of this fragment.
*/
class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
class UnityFragment : Fragment() {
// region Lifecycle Management - MUST BE FORWARDED TO UnityPlayer
override fun onResume() {
super.onResume()
......@@ -44,19 +38,26 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
override fun onDestroy() {
super.onDestroy()
try {
this.mUnityPlayer.destroy()
} catch (e: Exception) {
// e.printStackTrace()
// try {
mUnityPlayer.destroy()
// } catch (e: Exception) {
//// e.printStackTrace()
// }
}
override fun onDestroyView() {
super.onDestroyView()
frameLayout.removeView(mUnityPlayer.rootView)
}
private lateinit var frameLayout: FrameLayout
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// 创建一个简单的 FrameLayout 作为 Fragment 的根视图
val frameLayout = FrameLayout(requireContext())
frameLayout = FrameLayout(requireContext())
frameLayout.layoutParams = ViewGroup.LayoutParams(-1, -1)
// // 将 UnityPlayer 的视图添加到 FrameLayout 中
mUnityPlayer.let { unityPlayer ->
......@@ -69,15 +70,15 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
}
override fun onUnityPlayerUnloaded() {
Log.d("UnityFragment", "-----------------onUnityPlayerUnloaded")
// Unity 玩家未加载时调用
activity?.finish()
}
override fun onUnityPlayerQuitted() {
Log.d("UnityFragment", "-----------------onUnityPlayerQuitted")
}
// override fun onUnityPlayerUnloaded() {
// Log.d("UnityFragment", "-----------------onUnityPlayerUnloaded")
// // Unity 玩家未加载时调用
// activity?.finish()
// }
//
// override fun onUnityPlayerQuitted() {
// Log.d("UnityFragment", "-----------------onUnityPlayerQuitted")
// }
// UnityPlayer 实例
......@@ -86,20 +87,24 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
//UNITY map 控制类
private val unityMapVm: UnityMapVm by activityViewModels()
//主页
private val mainVm: MainVm by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mUnityPlayer = UnityPlayer(requireContext(), this)
mUnityPlayer = UnityPlayer(requireContext())
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 视图创建完成后,可以在这里进行最终设置
mUnityPlayer.windowFocusChanged(true)
// mUnityPlayer.requestFocus()
// mUnityPlayer.windowFocusChanged(true)
// 视图创建完成后,可以在这里进行最终设置
mUnityPlayer.requestFocus()
mUnityPlayer.setFocusableInTouchMode(true)
//使用拼接服务器资源加载地图
unityMapVm.loadTileJson()
mUnityPlayer.postDelayed({
// mUnityPlayer.postDelayed({
// try {
HighMapApi.setCarBottomCircle(true)
// HighMapApi.setCameraAngle(90f)
......@@ -108,7 +113,15 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
HighMapApi.setCameraDistance(6f)
// } catch (e: Exception) {
// }
}, 300)
// }, 300)
setListener()
}
private fun setListener() {
mainVm.hasFocus.observe(viewLifecycleOwner) { hasFocus ->
mUnityPlayer.windowFocusChanged(hasFocus)
}
}
......
......@@ -110,6 +110,7 @@ public class MyMapUtils {
return average % 360;
}
//计算两点距离
public static double cauMyLocDistance(double fromLon, double fromLat, double toLon, double toLat) {
var results = new float[4];
Location.distanceBetween(
......
......@@ -65,6 +65,8 @@ class MainVm @Inject constructor(
// var mMineMap: MineMap? = null
//Windows 焦点
var hasFocus = MutableLiveData<Boolean>()
//用于拼接
private val WSTOKEN = "&token=${HTTP_TOKEN}"
......
......@@ -237,7 +237,7 @@ class MockVM @Inject constructor(
viewModelScope.launch {
var gson = Gson()
var datas = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/shiche/CarVehicle_Call.txt", datas)
FileIoUtils.getAssetMock(context, "mock/shiche/CarVehicle.txt", datas)
datas.forEach { str ->
val cCar = gson.fromJson<CarVehicle>(str, CarVehicle::class.java)
if (cCar.vehiclePos != null) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment