Software Design Specification (SDS)
1. Overview
본 문서는 ged 모듈의 Software Design Specification을 기술한다.
ged 모듈은 에디터 기능을 제공하는 라이브러리이며 다음 구성요소로 이루어진다.
Editor EditorState Tool System Command System UndoStack UI System
본 문서는 실제 코드에 정의된 구조와 타입을 기준으로 설계 구조를 기술한다.
2. Module Architecture
ged 모듈 내부 구성
Editor │ ├─ EditorState ├─ Tool System ├─ Command System └─ UI System
각 구성요소는 다음 역할을 수행한다.
Editor 에디터 시스템 중심 객체
EditorState 에디터 상태 데이터 저장
Tool System 사용자 입력 처리
Command System 작업 실행 및 Undo / Redo
UI System 에디터 UI 구조 정의
3. Module Dependency
모듈 의존 관계
editor_state │ ▼ command │ ▼ tools │ ▼ ui │ ▼ editor
4. Editor
Editor는 에디터 시스템의 중심 객체이다.
Editor는 다음 객체를 관리한다.
EditorState UndoStack UiRoot
또한 Tool 객체를 생성하고 관리한다.
SelectTool TransformTool
5. EditorState
EditorState는 에디터 상태 데이터를 저장한다.
저장되는 데이터
selection active_object tool_mode
6. Tool System
Tool 시스템은 사용자 입력 이벤트를 처리한다.
Tool 구조
Tool │ ├─ SelectTool └─ TransformTool
Tool은 다음 함수를 통해 이벤트를 처리한다.
virtual void on_event(const gcore::Event& e)
7. Command System
Command 시스템은 작업 실행과 Undo / Redo 기능을 제공한다.
Command 구조
Command │ ├─ SelectCommand └─ TransformCommand
Command는 다음 함수를 제공한다.
apply() revert()
8. UndoStack
UndoStack은 Command 실행 히스토리를 관리한다.
주요 기능
push undo redo clear
Command 실행 흐름
cmd->apply() undo_.push_back(cmd)
Undo 수행
cmd->revert()
Redo 수행
cmd->apply()
9. Event Flow
Editor는 이벤트를 Tool로 전달한다.
이벤트 처리 흐름
gcore::Event │ ▼ Editor │ ▼ Active Tool │ ▼ Command │ ▼ UndoStack
10. UI System
UI 시스템은 에디터 UI 구조를 정의한다.
구성 요소
UiRoot Dockspace
패널 구조
ViewportPanel OutlinerPanel PropertiesPanel
11. Test
tests/smoke.cpp는 기본 기능 검증을 수행한다.
검증 항목
Editor 생성 SelectCommand 실행 Undo 동작 Redo 동작 Tool 실행 TransformTool 실행