改造一些

This commit is contained in:
2026-08-11 23:17:03 +08:00
parent c89a678245
commit aca480d988
29 changed files with 1348 additions and 771 deletions
+6 -6
View File
@@ -328,11 +328,11 @@ Size Plot_Core::viewport_size() const noexcept {
}
void Plot_Core::dispatch_event(const Event& event) {
const auto topology = with_scene(impl_->scene, [](const auto& scene) {
return scene.topology_snapshot();
const auto paint_order = with_scene(impl_->scene, [](const auto& scene) {
return scene.paint_order_snapshot();
});
for (auto iterator = topology.display.rbegin(); iterator != topology.display.rend(); ++iterator) {
auto base = std::const_pointer_cast<::Renderable_Base>(iterator->child);
for (auto iterator = paint_order.rbegin(); iterator != paint_order.rend(); ++iterator) {
auto base = std::const_pointer_cast<::Renderable_Base>(*iterator);
if (auto renderable = std::dynamic_pointer_cast<Renderable>(base)) {
if (renderable->is_visible()) {
if (auto handler = std::dynamic_pointer_cast<Event_Handler>(base))
@@ -354,8 +354,8 @@ bool Plot_Core::prepare_frame() {
if (!paint_frame)
return false;
const auto topology = scene.topology_snapshot();
for (const auto& entry : topology.display) {
auto base = std::const_pointer_cast<::Renderable_Base>(entry.child);
for (const auto& renderable : topology.renderables) {
auto base = std::const_pointer_cast<::Renderable_Base>(renderable);
if (auto state = std::dynamic_pointer_cast<::State_Strategy_Base>(base))
state->publish();
}