## ADDED Requirements ### Requirement: Provide a reusable advanced dynamic grass component The system SHALL provide an `advancedDynamicGrassComponent` that renders generated terrain, instanced grass blades, wind animation, and optional wildflowers through the existing tresjs/three pipeline. #### Scenario: Render the default meadow - **WHEN** the component is mounted with its default props - **THEN** it MUST display a generated ground surface covered by animated instanced grass - **AND** it MUST be transformable by the parent scene as one normal object hierarchy ### Requirement: Preserve deterministic terrain and vegetation The component SHALL use seeded procedural generation for terrain shape, grass placement, and wildflower placement. #### Scenario: Recreate the same seeded meadow - **WHEN** two component instances use the same structural parameters and seed - **THEN** their terrain shape and vegetation placement MUST match #### Scenario: Change the seed - **WHEN** the seed prop changes - **THEN** the component MUST rebuild the generated terrain and vegetation with a different deterministic layout ### Requirement: Expose component-scoped settings The component SHALL expose terrain size and detail, grass density and blade dimensions, wind behavior, meadow colors and brightness, and wildflower settings through component props and `src/dcsConfig.ts`. #### Scenario: Adjust a structural setting - **WHEN** terrain, seed, density, blade-size, or wildflower structure props change - **THEN** the affected meadow resources MUST rebuild with the new setting #### Scenario: Adjust wind or appearance - **WHEN** wind, brightness, or grass color props change - **THEN** the visible meadow MUST update without requiring a full component remount ### Requirement: Exclude scene-level demo configuration The component MUST NOT create or expose a camera, renderer, OrbitControls, background, environment map, hemisphere light, directional Sun, GUI, statistics, or demo reset control. #### Scenario: Add the component to the regional scene editor - **WHEN** the component is loaded inside a host scene - **THEN** the host scene MUST retain ownership of its camera, lighting, background, environment, renderer, and controls - **AND** the component config panel MUST NOT contain Sun, background, environment, or camera parameters ### Requirement: Keep all component shaders external Grass and wildflower shader sources MUST live in separate vertex and fragment files under `src/shader/advancedDynamicGrassComponent/`. #### Scenario: Inspect the component implementation - **WHEN** a maintainer reviews the Vue and helper files - **THEN** long GLSL programs MUST NOT be embedded inline ### Requirement: Manage resources safely The component SHALL dispose all owned generated geometry, material, texture, and instanced mesh resources when rebuilt or unmounted. #### Scenario: Change a structural prop repeatedly - **WHEN** the component rebuilds multiple times - **THEN** superseded meadow resources MUST be removed and disposed before they are abandoned #### Scenario: Unmount the component - **WHEN** the component leaves the scene - **THEN** its animation scheduling MUST stop and all owned GPU resources MUST be disposed ### Requirement: Preserve upstream attribution The port SHALL include the upstream MIT copyright and permission notice. #### Scenario: Inspect third-party notices - **WHEN** a maintainer audits the component source - **THEN** the origin repository and MIT license notice MUST be present