Skip to main content

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 실행