jellyflow_runtime/io/config/interaction/
editor.rs1use serde::{Deserialize, Serialize};
2
3use crate::io::tuning::NodeGraphRuntimeTuning;
4
5use super::super::state::NodeGraphInteractionState;
6use super::NodeGraphInteractionConfig;
7
8#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
10pub struct NodeGraphEditorConfig {
11 #[serde(
12 default,
13 skip_serializing_if = "NodeGraphInteractionConfig::is_default"
14 )]
15 pub interaction: NodeGraphInteractionConfig,
16 #[serde(default, skip_serializing_if = "NodeGraphRuntimeTuning::is_default")]
17 pub runtime_tuning: NodeGraphRuntimeTuning,
18}
19
20impl NodeGraphEditorConfig {
21 pub fn from_parts(
22 interaction: NodeGraphInteractionConfig,
23 runtime_tuning: NodeGraphRuntimeTuning,
24 ) -> Self {
25 Self {
26 interaction,
27 runtime_tuning,
28 }
29 }
30
31 pub fn into_parts(self) -> (NodeGraphInteractionConfig, NodeGraphRuntimeTuning) {
32 (self.interaction, self.runtime_tuning)
33 }
34
35 pub fn is_default(this: &Self) -> bool {
36 this == &Self::default()
37 }
38
39 pub fn resolved_interaction_state(&self) -> NodeGraphInteractionState {
40 NodeGraphInteractionState::from_parts(&self.interaction, &self.runtime_tuning)
41 }
42
43 pub fn with_spatial_index_enabled(mut self, enabled: bool) -> Self {
44 self.runtime_tuning = self.runtime_tuning.with_spatial_index_enabled(enabled);
45 self
46 }
47
48 pub fn with_only_render_visible_elements(mut self, enabled: bool) -> Self {
49 self.runtime_tuning = self
50 .runtime_tuning
51 .with_only_render_visible_elements(enabled);
52 self
53 }
54}