Fix camera zone lock bounds
This commit is contained in:
@@ -112,17 +112,17 @@ LevelDefinition CreateWhiteboxLevel() {
|
||||
level.battleZones = {
|
||||
{"zone_01_intro",
|
||||
frostbite2D::Rect(520.0f, 260.0f, 560.0f, 340.0f),
|
||||
frostbite2D::Rect(320.0f, 0.0f, 760.0f, 720.0f),
|
||||
frostbite2D::Rect(320.0f, 0.0f, 1280.0f, 720.0f),
|
||||
{{"zone_01_enemy_a", frostbite2D::Vec2(760.0f, 560.0f)},
|
||||
{"zone_01_enemy_b", frostbite2D::Vec2(980.0f, 560.0f)}}},
|
||||
{"zone_02_platform",
|
||||
frostbite2D::Rect(1420.0f, 250.0f, 680.0f, 350.0f),
|
||||
frostbite2D::Rect(1280.0f, 0.0f, 900.0f, 720.0f),
|
||||
frostbite2D::Rect(1280.0f, 0.0f, 1280.0f, 720.0f),
|
||||
{{"zone_02_enemy_a", frostbite2D::Vec2(1620.0f, 560.0f)},
|
||||
{"zone_02_enemy_b", frostbite2D::Vec2(1900.0f, 560.0f)}}},
|
||||
{"zone_03_exit",
|
||||
frostbite2D::Rect(2380.0f, 250.0f, 720.0f, 350.0f),
|
||||
frostbite2D::Rect(2240.0f, 0.0f, 960.0f, 720.0f),
|
||||
frostbite2D::Rect(1920.0f, 0.0f, 1280.0f, 720.0f),
|
||||
{{"zone_03_enemy_a", frostbite2D::Vec2(2580.0f, 560.0f)},
|
||||
{"zone_03_enemy_b", frostbite2D::Vec2(2860.0f, 560.0f)}}},
|
||||
};
|
||||
|
||||
@@ -28,7 +28,10 @@ void CameraController::Configure(const CameraControllerConfig& config) {
|
||||
}
|
||||
|
||||
void CameraController::SetWorldBounds(const frostbite2D::Rect& worldBounds) {
|
||||
config_.worldBounds = worldBounds;
|
||||
const float width = std::max(worldBounds.width(), config_.viewportWidth);
|
||||
const float height = std::max(worldBounds.height(), config_.viewportHeight);
|
||||
config_.worldBounds =
|
||||
frostbite2D::Rect(worldBounds.left(), worldBounds.top(), width, height);
|
||||
}
|
||||
|
||||
void CameraController::SnapToTarget(frostbite2D::Camera& camera,
|
||||
|
||||
@@ -127,11 +127,16 @@ void WhiteboxScene::updateBattleZones() {
|
||||
return;
|
||||
}
|
||||
|
||||
const frostbite2D::Rect playerBounds = player_->GetWorldBounds();
|
||||
if (activeBattleZoneIndex_ >= 0) {
|
||||
const size_t activeIndex = static_cast<size_t>(activeBattleZoneIndex_);
|
||||
if (activeIndex < level_.battleZones.size() &&
|
||||
!level_.battleZones[activeIndex].trigger.intersects(playerBounds)) {
|
||||
clearActiveBattleZone();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const frostbite2D::Rect playerBounds = player_->GetWorldBounds();
|
||||
for (size_t i = 0; i < level_.battleZones.size(); ++i) {
|
||||
BattleZoneRuntime& runtime = battleZoneStates_[i];
|
||||
if (runtime.cleared ||
|
||||
|
||||
Reference in New Issue
Block a user