01
개요
Overview
화염 확산과 관련된 시스템을 정의하는 문서입니다.
02
책임
Responsibilities
Flame System은 아래의 책임 목표를 가지게 됩니다.
02-A
화염 확산 시뮬레이션
Fire Spread Simulation
시스템 내부적으로 정의된 타이밍과 논리에 의해 추상적인 화염은 확산될 수 있어야 합니다.
확산 방식
Shape → Shape // shape-to-shape 방식으로 정의
판정 공간
// 3차원 공간에서 연산 및 판정 world space (3D)
02-B
이벤트 발생
Event Emission
화염 확산으로부터 시스템 외부의 효과가 필요한 케이스에 대응하기 위해, 시스템의 상태를 이벤트로 노출합니다.
불탐 판정을 유지하고 있는 공간에 대해 시스템 내부적인 순서와 타이밍에 의해 지속적으로 확산을 시도하며, 상태 변화는 이벤트를 통해서만 외부에 전달됩니다.
02-C
렌더링 기초 데이터 업데이트
Render Data Update
화염 패스에 사용할 기초 데이터를 업데이트해야 합니다.
볼륨 정의
// XZ 평면 위에 // 한 겹만 존재하는 볼륨 데이터 plane = XZ layers = 1
데이터 상주
// 렌더링용 불탐 상태 데이터 // 는 Job에 상주해야 함 residence = Job
03
사양
Specification
03-A
상태 데이터
State Data
공간에 대해 임의의 점은 불타고 있거나 그렇지 않다고 결정적으로 판단할 수 있는 데이터를 내부적으로 가집니다.
다만, 이 정보가 외부에서 읽을 수 있는 데이터는 아닙니다. 외부에서 읽기 위해서는 반드시 이벤트를 거쳐야 합니다.
렌더링을 위해 월드의 불탐 상태 데이터는 Job 상주해야 합니다. 이 데이터는 Render-Fire 패키지에서 전용으로 사용합니다.
내부 상태
// 임의 점 p에 대해 bool isBurning(p) // deterministic // 외부 직접 접근 불가
외부 접근 경로
// 외부 → 이벤트 구독만 허용 Event onFireSpread Event onFireExtinguish // Job: Render-Fire 패키지 전용
불탐 상태를 외부 시스템에서 직접 폴링하는 방식은 허용되지 않습니다. 반드시 이벤트 구독 방식을 사용해야 합니다.