improvement
This commit is contained in:
61
plans/cutscene_resource_analysis.md
Normal file
61
plans/cutscene_resource_analysis.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Cutscene Editor Architecture Analysis
|
||||
|
||||
## Current System Overview
|
||||
|
||||
The current cutscene editor addon consists of several key components:
|
||||
|
||||
1. **Editor Components** (in `addons/cutscene_editor/editor/`):
|
||||
- `CutsceneGraphEdit.gd`: Main graph editor interface that manages nodes and connections
|
||||
- `CutsceneResource.gd`: Resource for storing cutscene data (nodes, connections)
|
||||
- `CutsceneGenerator.gd`: System for generating executable cutscene code from graph data
|
||||
- Node implementations (MoveActionNode, DialogueActionNode, etc.)
|
||||
|
||||
2. **Runtime Components** (in `cutscene/`):
|
||||
- `CutsceneManager.gd`: Manages execution of cutscene actions
|
||||
- `Action.gd`: Base class for all actions
|
||||
- Specific action implementations (MoveAction, DialogueAction, etc.)
|
||||
|
||||
## Current Data Flow
|
||||
|
||||
1. User creates nodes in the graph editor
|
||||
2. Node data is stored in `CutsceneResource`
|
||||
3. `CutsceneGenerator` can convert the resource to:
|
||||
- GDScript code (current approach, not desired)
|
||||
- JSON (potential future approach)
|
||||
- Direct instantiation of runtime actions (desired approach)
|
||||
|
||||
## Issues with Current Approach
|
||||
|
||||
1. The addon currently focuses on generating GDScript code rather than managing a clean data structure
|
||||
2. The `CutsceneResource` exists but isn't fully utilized as the primary data structure
|
||||
3. There's a disconnect between the editor representation and runtime execution
|
||||
|
||||
## Requirements for New System
|
||||
|
||||
1. **Resource-Centric Design**: The cutscene resource should be the primary data structure that both editor and runtime use
|
||||
2. **Clean Data Structure**: Store nodes and edges between slots in a structured way that can be easily serialized/deserialized
|
||||
3. **Runtime Compatibility**: The resource should contain all information needed for the runtime `CutsceneManager` to execute actions
|
||||
4. **No Code Generation**: Eliminate the GDScript generation functionality
|
||||
5. **Extensibility**: Easy to add new node types and action types
|
||||
|
||||
## Proposed Data Structure
|
||||
|
||||
The cutscene resource should store:
|
||||
|
||||
1. **Nodes**:
|
||||
- Unique ID
|
||||
- Type (entry, exit, move, dialogue, etc.)
|
||||
- Position (x, y)
|
||||
- Parameters specific to the node type
|
||||
|
||||
2. **Connections**:
|
||||
- Source node ID
|
||||
- Source port
|
||||
- Target node ID
|
||||
- Target port
|
||||
|
||||
3. **Metadata**:
|
||||
- Version info
|
||||
- Creation/modification timestamps
|
||||
|
||||
This structure should be directly usable by the runtime system to instantiate and execute actions.
|
||||
Reference in New Issue
Block a user