[6.5.0][视角切换] 逻辑优化
This commit is contained in:
@@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user