Merge pull request #111149 from WhalesState/fix-2d-templates
Fix game `Camera2D` override from editor and 2D debug templates building.
This commit is contained in:
@ -229,7 +229,9 @@ Error SceneDebugger::_msg_transform_camera_2d(const Array &p_args) {
|
|||||||
ERR_FAIL_COND_V(p_args.is_empty(), ERR_INVALID_DATA);
|
ERR_FAIL_COND_V(p_args.is_empty(), ERR_INVALID_DATA);
|
||||||
ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_2d_override_enabled(), ERR_BUG);
|
ERR_FAIL_COND_V(!SceneTree::get_singleton()->get_root()->is_camera_2d_override_enabled(), ERR_BUG);
|
||||||
Transform2D transform = p_args[0];
|
Transform2D transform = p_args[0];
|
||||||
SceneTree::get_singleton()->get_root()->get_override_camera_2d()->set_transform(transform);
|
Camera2D *override_camera = SceneTree::get_singleton()->get_root()->get_override_camera_2d();
|
||||||
|
override_camera->set_offset(transform.affine_inverse().get_origin());
|
||||||
|
override_camera->set_zoom(transform.get_scale());
|
||||||
RuntimeNodeSelect::get_singleton()->_queue_selection_update();
|
RuntimeNodeSelect::get_singleton()->_queue_selection_update();
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@ -1622,7 +1624,6 @@ void RuntimeNodeSelect::_select_set_mode(SelectMode p_mode) {
|
|||||||
void RuntimeNodeSelect::_set_camera_override_enabled(bool p_enabled) {
|
void RuntimeNodeSelect::_set_camera_override_enabled(bool p_enabled) {
|
||||||
camera_override = p_enabled;
|
camera_override = p_enabled;
|
||||||
|
|
||||||
Window *root = SceneTree::get_singleton()->get_root();
|
|
||||||
if (camera_first_override) {
|
if (camera_first_override) {
|
||||||
_reset_camera_2d();
|
_reset_camera_2d();
|
||||||
#ifndef _3D_DISABLED
|
#ifndef _3D_DISABLED
|
||||||
@ -1634,6 +1635,7 @@ void RuntimeNodeSelect::_set_camera_override_enabled(bool p_enabled) {
|
|||||||
_update_view_2d();
|
_update_view_2d();
|
||||||
|
|
||||||
#ifndef _3D_DISABLED
|
#ifndef _3D_DISABLED
|
||||||
|
Window *root = SceneTree::get_singleton()->get_root();
|
||||||
ERR_FAIL_COND(!root->is_camera_3d_override_enabled());
|
ERR_FAIL_COND(!root->is_camera_3d_override_enabled());
|
||||||
Camera3D *override_camera = root->get_override_camera_3d();
|
Camera3D *override_camera = root->get_override_camera_3d();
|
||||||
override_camera->set_transform(_get_cursor_transform());
|
override_camera->set_transform(_get_cursor_transform());
|
||||||
@ -2477,6 +2479,7 @@ void RuntimeNodeSelect::_zoom_callback(float p_zoom_factor, Vector2 p_origin, Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RuntimeNodeSelect::_reset_camera_2d() {
|
void RuntimeNodeSelect::_reset_camera_2d() {
|
||||||
|
camera_first_override = true;
|
||||||
Window *root = SceneTree::get_singleton()->get_root();
|
Window *root = SceneTree::get_singleton()->get_root();
|
||||||
Camera2D *game_camera = root->is_camera_2d_override_enabled() ? root->get_overridden_camera_2d() : root->get_camera_2d();
|
Camera2D *game_camera = root->is_camera_2d_override_enabled() ? root->get_overridden_camera_2d() : root->get_camera_2d();
|
||||||
if (game_camera) {
|
if (game_camera) {
|
||||||
@ -2500,7 +2503,7 @@ void RuntimeNodeSelect::_update_view_2d() {
|
|||||||
Camera2D *override_camera = root->get_override_camera_2d();
|
Camera2D *override_camera = root->get_override_camera_2d();
|
||||||
override_camera->set_anchor_mode(Camera2D::ANCHOR_MODE_FIXED_TOP_LEFT);
|
override_camera->set_anchor_mode(Camera2D::ANCHOR_MODE_FIXED_TOP_LEFT);
|
||||||
override_camera->set_zoom(Vector2(view_2d_zoom, view_2d_zoom));
|
override_camera->set_zoom(Vector2(view_2d_zoom, view_2d_zoom));
|
||||||
override_camera->set_position(view_2d_offset);
|
override_camera->set_offset(view_2d_offset);
|
||||||
|
|
||||||
_queue_selection_update();
|
_queue_selection_update();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -284,6 +284,7 @@ private:
|
|||||||
RID sel_drag_ci;
|
RID sel_drag_ci;
|
||||||
|
|
||||||
bool camera_override = false;
|
bool camera_override = false;
|
||||||
|
bool camera_first_override = true;
|
||||||
|
|
||||||
// Values taken from EditorZoomWidget.
|
// Values taken from EditorZoomWidget.
|
||||||
const float VIEW_2D_MIN_ZOOM = 1.0 / 128;
|
const float VIEW_2D_MIN_ZOOM = 1.0 / 128;
|
||||||
@ -326,7 +327,6 @@ private:
|
|||||||
const float CAMERA_MIN_FOV_SCALE = 0.1;
|
const float CAMERA_MIN_FOV_SCALE = 0.1;
|
||||||
const float CAMERA_MAX_FOV_SCALE = 2.5;
|
const float CAMERA_MAX_FOV_SCALE = 2.5;
|
||||||
|
|
||||||
bool camera_first_override = true;
|
|
||||||
bool camera_freelook = false;
|
bool camera_freelook = false;
|
||||||
|
|
||||||
real_t camera_fov = 0;
|
real_t camera_fov = 0;
|
||||||
|
|||||||
@ -5603,5 +5603,7 @@ T *Viewport::CameraOverride<T>::get_overridden_camera() const {
|
|||||||
// Explicit template instantiation to allow template definitions inside cpp file
|
// Explicit template instantiation to allow template definitions inside cpp file
|
||||||
// and prevent instantiation using other than the desired camera types.
|
// and prevent instantiation using other than the desired camera types.
|
||||||
template class Viewport::CameraOverride<Camera2D>;
|
template class Viewport::CameraOverride<Camera2D>;
|
||||||
|
#ifndef _3D_DISABLED
|
||||||
template class Viewport::CameraOverride<Camera3D>;
|
template class Viewport::CameraOverride<Camera3D>;
|
||||||
|
#endif // _3D_DISABLED
|
||||||
#endif // DEBUG_ENABLED
|
#endif // DEBUG_ENABLED
|
||||||
|
|||||||
Reference in New Issue
Block a user