Run update_previous_view_projections in PreUpdate schedule (#9024)

# Objective

- Fixes #8630.

## Solution

Since a camera's view and projection matrices are modified during
`PostUpdate` in `camera_system` and `propagate_transforms`, it is fine
to move `update_previous_view_projections` from `Update` to `PreUpdate`.
Doing so adds consistence with `update_mesh_previous_global_transforms`
and allows systems in `Update` to use `PreviousViewProjection` correctly
without explicit ordering.
This commit is contained in:
Edgar Geier 2023-07-05 17:51:19 +02:00 committed by GitHub
parent 7f1d084b71
commit e03dd4d695
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,4 @@
use bevy_app::{Plugin, PreUpdate, Update};
use bevy_app::{Plugin, PreUpdate};
use bevy_asset::{load_internal_asset, AssetServer, Handle, HandleUntyped};
use bevy_core_pipeline::{
prelude::Camera3d,
@ -141,9 +141,15 @@ where
if no_prepass_plugin_loaded {
app.insert_resource(AnyPrepassPluginLoaded)
.add_systems(Update, update_previous_view_projections)
// At the start of each frame, last frame's GlobalTransforms become this frame's PreviousGlobalTransforms
.add_systems(PreUpdate, update_mesh_previous_global_transforms);
// and last frame's view projection matrices become this frame's PreviousViewProjections
.add_systems(
PreUpdate,
(
update_mesh_previous_global_transforms,
update_previous_view_projections,
),
);
}
let Ok(render_app) = app.get_sub_app_mut(RenderApp) else {