121 lines
3.5 KiB
Markdown
121 lines
3.5 KiB
Markdown
# CutsceneGenerator Changes for Resource Management Focus
|
|
|
|
## Overview
|
|
|
|
This document describes the changes needed in CutsceneGenerator.gd to focus on resource management instead of code generation.
|
|
|
|
## Current Issues
|
|
|
|
The current CutsceneGenerator.gd has several issues:
|
|
1. Focuses on generating GDScript code rather than working with resources
|
|
2. Has methods for generating code that are not needed
|
|
3. Should focus on converting graph data to runtime actions
|
|
4. Has some useful functionality for building action sequences that should be retained
|
|
|
|
## Required Changes
|
|
|
|
### 1. Remove Code Generation Methods
|
|
|
|
Methods to remove:
|
|
- `generate_gdscript_code()`
|
|
- `_generate_action_sequence_code()`
|
|
- `_generate_action_code()`
|
|
- `export_to_format()` (or modify to only support resource formats)
|
|
|
|
### 2. Retain and Improve Resource-to-Action Conversion
|
|
|
|
Methods to keep and improve:
|
|
- `generate_cutscene()` - This is the core method we want
|
|
- `_build_action_sequence()` - Core logic for creating action sequences
|
|
- `_create_action_from_node()` - Core logic for creating individual actions
|
|
- `_handle_parallel_group()` - Logic for handling parallel actions
|
|
|
|
### 3. Update Data Access Methods
|
|
|
|
Current issues:
|
|
- Uses old data structure access patterns
|
|
- May need to access data differently with new structure
|
|
|
|
Changes needed:
|
|
- Update to use new node structure with "id" instead of "name"
|
|
- Update to use new connection structure
|
|
- Remove any references to parallel_connections
|
|
|
|
### 4. Improve Action Creation
|
|
|
|
Current issues:
|
|
- Action creation has placeholder values for character nodes
|
|
- Needs better parameter handling
|
|
|
|
Changes needed:
|
|
- Improve parameter mapping from node to action
|
|
- Maintain flexibility for runtime character resolution
|
|
|
|
## New Focus
|
|
|
|
The CutsceneGenerator should:
|
|
1. Take a CutsceneResource and convert it to a CutsceneManager with properly configured actions
|
|
2. Not generate any code
|
|
3. Focus purely on the data transformation from editor format to runtime format
|
|
4. Handle all node types and connection logic correctly
|
|
|
|
## Implementation Plan
|
|
|
|
### 1. Remove Unnecessary Methods
|
|
|
|
- Delete all code generation methods
|
|
- Remove export functionality that generates code
|
|
- Keep only the core resource-to-action conversion logic
|
|
|
|
### 2. Update Core Methods
|
|
|
|
- `generate_cutscene()`: Ensure it works with new resource structure
|
|
- `_build_action_sequence()`: Update to use new connection structure
|
|
- `_create_action_from_node()`: Ensure parameter mapping is correct
|
|
- `_handle_parallel_group()`: Update to work with new structure
|
|
|
|
### 3. Add Utility Methods
|
|
|
|
- Add methods for validating resource data
|
|
- Add methods for resolving character/action references
|
|
- Add error handling for malformed resources
|
|
|
|
### 4. Improve Documentation
|
|
|
|
- Update comments to reflect new purpose
|
|
- Document the resource-to-action conversion process
|
|
- Provide clear examples of usage
|
|
|
|
## Specific Code Changes
|
|
|
|
### In `generate_cutscene`:
|
|
|
|
```gdscript
|
|
# OLD - May have issues with new structure
|
|
for node_data in cutscene_resource.nodes:
|
|
graph_nodes[node_data["name"]] = node_data
|
|
|
|
# NEW - Update to use new structure
|
|
for node_data in cutscene_resource.nodes:
|
|
graph_nodes[node_data["id"]] = node_data
|
|
```
|
|
|
|
### In `_get_outgoing_connections`:
|
|
|
|
```gdscript
|
|
# Should work the same but with new structure
|
|
# Just ensure it's using the right fields
|
|
```
|
|
|
|
### In `_create_action_from_node`:
|
|
|
|
```gdscript
|
|
# This method is mostly correct but may need parameter updates
|
|
# Ensure all parameter access matches the new structure
|
|
```
|
|
|
|
## New Method Structure
|
|
|
|
The refactored CutsceneGenerator should have:
|
|
|
|
1. `generate_cutscene(cutscene |