Skip to content

Commit 0462d48

Browse files
committed
configurable exposure for editor's camera
1 parent 29d3af9 commit 0462d48

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

editor/src/camera/mod.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,12 @@ impl CameraController {
149149
pub fn new(
150150
graph: &mut Graph,
151151
root: Handle<Node>,
152-
settings: Option<&SceneCameraSettings>,
152+
settings: &Settings,
153+
camera_settings: SceneCameraSettings,
153154
grid: Handle<Node>,
154155
editor_objects_root: Handle<Node>,
155156
scene_content_root: Handle<Node>,
156157
) -> Self {
157-
let settings = settings.cloned().unwrap_or_default();
158158
let camera;
159159
let camera_hinge;
160160
let pivot = PivotBuilder::new(
@@ -168,7 +168,8 @@ impl CameraController {
168168
])
169169
.with_name("EditorCamera"),
170170
)
171-
.with_projection(settings.projection)
171+
.with_projection(camera_settings.projection)
172+
.with_exposure(settings.camera.exposure)
172173
.with_z_far(512.0)
173174
.build(graph);
174175
camera
@@ -179,7 +180,7 @@ impl CameraController {
179180
.with_name("EditorCameraPivot")
180181
.with_local_transform(
181182
TransformBuilder::new()
182-
.with_local_position(settings.position)
183+
.with_local_position(camera_settings.position)
183184
.build(),
184185
),
185186
)
@@ -192,8 +193,8 @@ impl CameraController {
192193
pivot,
193194
camera_hinge,
194195
camera,
195-
yaw: settings.yaw,
196-
pitch: settings.pitch,
196+
yaw: camera_settings.yaw,
197+
pitch: camera_settings.pitch,
197198
mouse_control_mode: MouseControlMode::None,
198199
z_offset: DEFAULT_Z_OFFSET,
199200
move_left: false,
@@ -576,6 +577,8 @@ impl CameraController {
576577

577578
let camera = graph[self.camera].as_camera_mut();
578579

580+
camera.set_exposure(settings.camera.exposure);
581+
579582
match camera.projection_value() {
580583
Projection::Perspective(_) => {
581584
let global_transform = camera.global_transform();

editor/src/scene/mod.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,15 @@ impl GameScene {
205205
let camera_controller = CameraController::new(
206206
&mut scene.graph,
207207
editor_objects_root,
208+
settings,
208209
path.as_ref()
209-
.and_then(|p| settings.scene_settings.get(*p).map(|s| &s.camera_settings)),
210+
.and_then(|p| {
211+
settings
212+
.scene_settings
213+
.get(*p)
214+
.map(|s| s.camera_settings.clone())
215+
})
216+
.unwrap_or_default(),
210217
grid,
211218
editor_objects_root,
212219
scene_content_root,

editor/src/settings/camera.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
// SOFTWARE.
2020

2121
use crate::fyrox::core::reflect::prelude::*;
22+
use fyrox::scene::camera::Exposure;
2223
use serde::{Deserialize, Serialize};
2324
use std::ops::Range;
2425

@@ -45,6 +46,8 @@ pub struct CameraSettings {
4546
#[reflect(min_value = 0.0, max_value = 1000.0)]
4647
#[serde(default = "default_zoom_range")]
4748
pub zoom_range: Range<f32>,
49+
#[serde(default)]
50+
pub exposure: Exposure,
4851
}
4952

5053
impl Default for CameraSettings {
@@ -54,6 +57,7 @@ impl Default for CameraSettings {
5457
sensitivity: default_sensitivity(),
5558
zoom_speed: default_zoom_speed(),
5659
zoom_range: default_zoom_range(),
60+
exposure: Default::default(),
5761
}
5862
}
5963
}

0 commit comments

Comments
 (0)