basic ECS spawner
This commit is contained in:
33
addons/gecs/io/serialize_config.gd
Normal file
33
addons/gecs/io/serialize_config.gd
Normal file
@@ -0,0 +1,33 @@
|
||||
## This config defines what to include when serializing
|
||||
## It can be appled to the world as a whole or to specific entities
|
||||
## This way you can define project level defaults and override them for specific cases
|
||||
class_name GECSSerializeConfig
|
||||
extends Resource
|
||||
|
||||
## Include all components (true) or only specific components (false)
|
||||
@export var include_all_components: bool = true
|
||||
## Which component types to include in serialization (only used when include_all_components = false)
|
||||
@export var components: Array = []
|
||||
## Whether to include relationships in serialization
|
||||
@export var include_relationships: bool = true
|
||||
## Whether to include related entities in serialization (Related entities are entities referenced by relationships from the serialized entities)
|
||||
@export var include_related_entities: bool = true
|
||||
|
||||
|
||||
## Helper method to determine if a component should be included in serialization
|
||||
func should_include_component(component: Component) -> bool:
|
||||
var comp_type = component.get_script()
|
||||
return include_all_components or components.any(func(type): return comp_type == type)
|
||||
|
||||
|
||||
## Merge this config with another config, with the other config taking priority
|
||||
func merge_with(other: GECSSerializeConfig) -> GECSSerializeConfig:
|
||||
if other == null:
|
||||
return self
|
||||
|
||||
var merged = GECSSerializeConfig.new()
|
||||
merged.include_all_components = other.include_all_components
|
||||
merged.components = other.components.duplicate()
|
||||
merged.include_relationships = other.include_relationships
|
||||
merged.include_related_entities = other.include_related_entities
|
||||
return merged
|
||||
Reference in New Issue
Block a user