[6.5.0][视角切换] 逻辑优化

This commit is contained in:
renwj
2024-07-22 22:21:17 +08:00
parent 9ebb5c9219
commit 83ad03e628
9 changed files with 44 additions and 34 deletions

View File

@@ -180,13 +180,13 @@ object DebugDataDispatch {
val state = intent.getIntExtra("show", 0)
when (state) {
0 -> {
CallerVisualAngleManager.changeScene(LongSight(0))
CallerVisualAngleManager.changeScene(LongSight())
}
1 -> {
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default())
}
2 -> {
CallerVisualAngleManager.changeScene(CrossRoad(0))
CallerVisualAngleManager.changeScene(CrossRoad())
}
else -> {}
}

View File

@@ -76,11 +76,11 @@ class VisualViewModel : ViewModel(),
when (angle) {
Visualangle.Middle -> {
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default())
}
Visualangle.Long -> {
CallerVisualAngleManager.changeScene(LongSight(0))
CallerVisualAngleManager.changeScene(LongSight())
}
Visualangle.UnChange -> {

View File

@@ -74,33 +74,33 @@ class DebugViewModel : ViewModel(),
fun changeVisualView() {
CallerVisualAngleManager.getCurrentScene().let {
val default = Default(0)
val default = Default()
when (it.angle) {
VisualAngleMode.MODE_MEDIUM_SIGHT -> {
if(default.angle==VisualAngleMode.MODE_MEDIUM_SIGHT){
CallerVisualAngleManager.changeScene(LongSight(0))
CallerVisualAngleManager.changeScene(LongSight())
}
}
VisualAngleMode.MODE_LONG_SIGHT -> {
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default())
}
VisualAngleMode.MAP_STYLE_VR_SKY_BOX -> {
if(default.angle==VisualAngleMode.MAP_STYLE_VR_SKY_BOX){
CallerVisualAngleManager.changeScene(LongSight(0))
CallerVisualAngleManager.changeScene(LongSight())
}
}
else -> {
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default())
}
}
}
}
fun changeVisualView2Cro() {
CallerVisualAngleManager.changeScene(CrossRoad(0))
CallerVisualAngleManager.changeScene(CrossRoad())
}
interface IVisualCallback {

View File

@@ -199,7 +199,7 @@ public class V2XRoadEventScenario extends AbsV2XScenario<V2XRoadEventEntity> imp
} catch (Throwable ignore) {}
}
}
CallerVisualAngleManager.INSTANCE.changeScene(new Default(3, TimeUnit.SECONDS));
CallerVisualAngleManager.INSTANCE.changeScene(new Default(3, TimeUnit.SECONDS, false));
}
release();
}

View File

@@ -94,19 +94,21 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
}
}
override fun onStopLineInfo(info: StopLine) {
Log.d(TAG, "-- onStopLineInfo --: ${info.distance}")
if (!hasCrossRoad && info.distance <= 80.0) {
hasCrossRoad = true
changeScene(CrossRoad(2))
}
if (hasCrossRoad && triggerRoadId.get() == null && info.distance <= 20) {
val roadId = this.roadId.get()
if (roadId != null && roadId != "0") {
triggerRoadId.set(this.roadId.get())
distanceOfCarToStopLine.set(info.distance)
triggerLocation.set(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84())
try {
if (triggerRoadId.get() == null) {
val roadId = this.roadId.get()
if (roadId != null && roadId != "0") {
triggerRoadId.set(roadId)
distanceOfCarToStopLine.set(info.distance)
triggerLocation.set(CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84())
}
}
} finally {
changeScene(CrossRoad())
}
}
}
@@ -155,10 +157,16 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
if (prev?.javaClass == scene.javaClass) {
return@launch
}
val lastPriority = prev?.priority ?: Int.MIN_VALUE
val currentPriority = scene.priority
if (lastPriority > currentPriority) {
return@launch
var verifyPrior = true
if (scene is Default && scene.forceClosePrev) {
verifyPrior = false
}
if (verifyPrior) {
val lastPriority = prev?.priority ?: Int.MIN_VALUE
val currentPriority = scene.priority
if (lastPriority > currentPriority) {
return@launch
}
}
doChangeAngle(scene)
}.also {
@@ -192,7 +200,7 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider {
if (target.displayThreshold > 0) {
scope.launch {
delay(target.displayThreshold)
doChangeAngle(Default(0))
doChangeAngle(Default())
}
}
}

View File

@@ -3,11 +3,12 @@ package com.mogo.eagle.core.function.angle.scenes
import com.mogo.eagle.core.function.api.map.angle.Scene
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS_NEW
import java.util.concurrent.TimeUnit
/**
* 十字路口
*/
class CrossRoad(private val delayTime: Long): Scene {
class CrossRoad(private val delayTime: Long = 0, private val unit: TimeUnit = TimeUnit.SECONDS): Scene {
override val angle: VisualAngleMode
get() = MAP_STYLE_VR_ANGLE_CROSS_NEW
@@ -16,7 +17,7 @@ class CrossRoad(private val delayTime: Long): Scene {
get() = -1
override val delay: Long
get() = delayTime
get() = unit.toMillis(delayTime)
override val isCanSwitch: Boolean
get() = false

View File

@@ -11,12 +11,13 @@ import java.util.concurrent.TimeUnit
* @param delay: 表示多少稍后默认值为2
* @param unit: 时间单位,默认为秒
*/
class Default(val delayTime: Long = 2, val unit: TimeUnit = TimeUnit.SECONDS): Scene {
class Default(val delayTime: Long = 0, val unit: TimeUnit = TimeUnit.SECONDS, val forceClosePrev: Boolean = false): Scene {
override val angle: VisualAngleMode
get() = CallerMapUIServiceManager.getMapUIController()?.getVrAngleDefaultMode() ?: MODE_MEDIUM_SIGHT
override val priority: Int = 0
override val priority: Int = -1
override val displayThreshold: Long
get() = 0
@@ -31,6 +32,6 @@ class Default(val delayTime: Long = 2, val unit: TimeUnit = TimeUnit.SECONDS): S
get() = true
override fun toString(): String {
return "Default(delay=$delay, unit=$unit, angle=$angle, priority=$priority)"
return "Default(delay=$delay, unit=$unit, angle=$angle, priority=$priority, closePrevious=$forceClosePrev)"
}
}

View File

@@ -5,7 +5,7 @@ import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.MODE_LONG_SIGHT
import java.util.concurrent.TimeUnit
class LongSight(private val delayTime: Long, private val unit: TimeUnit = TimeUnit.SECONDS): Scene {
class LongSight(private val delayTime: Long = 0, private val unit: TimeUnit = TimeUnit.SECONDS): Scene {
override val angle: VisualAngleMode
get() = MODE_LONG_SIGHT

View File

@@ -165,7 +165,7 @@ class RomaManager() : IMoGoPlanningRottingListener,
CallerMapUIServiceManager.getMapUIController()?.visualAngleLock(false)
CallerMapUIServiceManager.getMapUIController()?.setScrollGesturesEnable(true)
// updateLongSightLevel(false)
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default(forceClosePrev = true))
requestRangeOfIdentify(false)
MapIdentifySubscriber.instance.clearAiCloudRoma()
// 主动关闭roma回到中景视角
@@ -224,7 +224,7 @@ class RomaManager() : IMoGoPlanningRottingListener,
), true
)
// updateLongSightLevel(false)
CallerVisualAngleManager.changeScene(Default(0))
CallerVisualAngleManager.changeScene(Default(forceClosePrev = true))
CallerMapRomaListener.invokeMapRoma(false)
CallerMapIdentifyManager.updateRoam("", false)
if (DebugConfig.isDebug()) {