Version 0.3.0
← Back to Changelog
Version 0.3.0
Unreleased Changes
This document consolidates all unreleased changes from the main project changelog.
App: Teskooano
Added
- @teskooano/core-physics: Introduced
createSimulationStreaminsimulation/simulation.ts, an RxJS-based function to create an Observable stream of simulation step results. This replaces the previous imperativerunSimulationfunction. - @teskooano/core-physics: Added
SimulationParametersinterface to group parameters for theupdateSimulationfunction. - @teskooano/systems-procedural-generation:
generatePlanetObservablefunction ingenerators/planet.ts: Returns an RxJSObservableto emit generated planet and associated ring system data reactively. - @teskooano/data-types:
CelestialObjectPropertiesinterface tocelestial.ts. - @teskooano/data-types:
SliderValueChangePayloadinterface toevents.ts.
Changed
- @teskooano/web-apis: Refactored various API utility modules for code clarity and conciseness, removing redundant comments and logging (including
idle-detection,invoker-commands,media-recorder,network,observers,popover,remote-playback,screen-capture,storage,workers). - @teskooano/web-apis: Updated
resizeObserver.tsto useRxJS BehaviorSubjectfor state management, replacingnanostores. - @teskooano/web-apis: Simplified type definitions and internal logic in several modules for better maintainability.
- @teskooano/renderer-threejs: Updated
RendererStateAdapter.tsto consume RxJS Observables (celestialObjects$,simulationState$) from@teskooano/core-state. - @teskooano/renderer-threejs: Modified
RendererStateAdapter.tsto userenderableActions.setAllRenderableObjectsandvisualSettings.next()for state updates, aligning with RxJS patterns. - @teskooano/renderer-threejs: Added
seedandtemperatureproperties toRenderableCelestialObjectwithinRendererStateAdapter.ts. - @teskooano/renderer-threejs-core: Updated
StateManager.tsto use RxJS Observables (celestialObjects$,simulationState$) and helper functions (getCelestialObjects,getSimulationState) from@teskooano/core-state. - @teskooano/renderer-threejs-core: Subscription logic in
StateManager.tsnow uses RxJSpipe,pairwise, andstartWithfor more robust state diffing. - @teskooano/renderer-threejs-core: Unsubscribe logic now uses RxJS
Subscriptionobjects. - @teskooano/renderer-threejs-core: Exported
RendererCelestialObjecttype fromindex.ts. - @teskooano/renderer-threejs-core: Extensive comment removal and minor code cleanup across various files, including
SceneManager.ts, test files (__tests__/*),events.ts,index.ts, andsetup.ts. - Refactor: The
@teskooano/renderer-threejs-effectspackage has been split into@teskooano/renderer-threejs-lightingand@teskooano/renderer-threejs-lod. - @teskooano/renderer-threejs-interaction:
ControlsManager.tsnow usesgetSimulationStateandsetSimulationStatefrom@teskooano/core-statefor camera state updates. - @teskooano/renderer-threejs-interaction:
CSS2DManager.ts:- Added pre-render checks to find and remove orphaned labels and to hide any
CSS2DObjectin the scene without a parent, improving stability. - Simplified internal logic for managing
pointer-events.
- Added pre-render checks to find and remove orphaned labels and to hide any
- @teskooano/renderer-threejs-interaction: Extensive comment removal and minor code cleanup across various files, including test files and
setup.ts. - @teskooano/renderer-threejs-interaction: Removed Playwright and Vitest browser-specific triple-slash directives from
setup.ts. - @teskooano/renderer-threejs-objects: Major Refactor (Mesh Creation):
- Deleted the monolithic
MeshFactory.tsclass. - Introduced a new
object-manager/mesh-creators/directory with dedicated functions for creating meshes for specific celestial object types (e.g.,createStarMesh,createPlanetMesh,createRingSystemMesh, etc.). - Each creator function now handles fetching appropriate LOD levels from
CelestialRendererinstances and constructingTHREE.LODobjects. - Added
createFallbackSphere.tsfor consistent fallback mesh generation.
- Deleted the monolithic
- @teskooano/renderer-threejs-objects: Updated exports in
object-manager/index.tsto include new managers likeAccelerationVisualizer,DebrisEffectManager,ObjectLifecycleManager, and the new mesh creator exports. - @teskooano/renderer-threejs-objects: Refactored
RendererUpdater.ts:- Simplified update logic for standard and specialized renderers.
- The
dispose()method is now empty, indicating a change in how renderer resources are managed or disposed of. - General comment cleanup.
- @teskooano/renderer-threejs-orbits: Dependency Update: Replaced
nanostoreswithrxjsfor state management. - @teskooano/renderer-threejs-orbits: RxJS Integration:
OrbitManager.tsandorbit-manager/keplerian-manager.tsnow consumerenderableStore.renderableObjects$(an RxJS Observable) andgetCelestialObjects()from@teskooano/core-state(note:getCelestialObjects()is part ofgameStateService).- Both managers subscribe to
renderableStore.renderableObjects$to get the latest data for orbit calculations. OrbitManager.tssubscription toRendererStateAdapter.$visualSettingsnow uses RxJSsubscribeandunsubscribemethods.- The
disposemethod inKeplerianOrbitManagernow correctly unsubscribes from therenderableStore.renderableObjects$observable.
- @teskooano/renderer-threejs-orbits: Extensive comment removal and minor code cleanup across most files, including
OrbitManager.ts,orbit-manager/keplerian-manager.ts,orbit-manager/orbit-calculator.ts, andorbit-manager/verlet-predictor.ts. - @teskooano/core-physics: Refactored various modules (
orbital/orbital.ts,spatial/octree.ts,units/*,utils/*) for code clarity and conciseness by removing redundant comments and performing minor cleanup. - @teskooano/core-physics: Simplified parameter passing to
updateSimulationby using the newSimulationParametersinterface. - @teskooano/core-state: Major Refactor: Migrated core game state management (
simulationState,celestialObjectsStore,celestialHierarchyStore,renderableObjectsStore,panelState) from Nanostores (atom,map) to RxJSBehaviorSubject.- State stores now expose an Observable (e.g.,
simulationState$) for reactive subscriptions and getter functions (e.g.,getSimulationState()) for direct access. - Setter functions (e.g.,
setSimulationState()) and specific action dispatchers are now used for state modification.
- State stores now expose an Observable (e.g.,
- @teskooano/core-state: Updated
physics.tsto use new RxJS-based state accessors (getSimulationState,getCelestialObjects). - @teskooano/core-state: Refactored
factory.tsto use new state setters (setSimulationState,setCelestialHierarchy) and getters, and removed redundant comments. - @teskooano/core-state: Simplified
stores.ts,panelRegistry.ts, andpanelState.tsby removing unnecessary comments and adapting to RxJS. - @teskooano/core-state: Updated
currentSeedinstores.tsto useBehaviorSubject. - @teskooano/core-state: Introduced
accelerationVectors$observable instores.ts. - @teskooano/core-state: Revised exports in
packages/core/state/src/game/index.tsto reflect the new RxJS structure. - @teskooano/systems-celestial: Major Refactor (Materials & Textures):
- Removed the entire old procedural texture generation system (deleted
textures/directory includingTextureFactory.ts,TextureGeneratorBase.ts, and individual generator classes likeGasGiantTextureGenerator.ts,TerrestrialTextureGenerator.ts, etc.). - Removed the old material management system (deleted
MaterialFactory.tsand individual material classes likePlanetMaterial.ts,StarMaterial.ts, etc.). - Introduced a new
materials/directory with dedicated functions for material creation:createProceduralPlanetMaterial.ts: For generating planet materials, likely using shaders and uniforms defined intypes/procedural.ts.createRingMaterial.ts: For ring system materials.createStarMaterial.ts: For star materials.
- Updated
BaseTerrestrialRenderer.ts,RingSystemRenderer.ts, andBaseStarRenderer.tsto use these new material creation functions instead of the old factories.
- Removed the entire old procedural texture generation system (deleted
- @teskooano/systems-celestial: Added
types/procedural.tsdefiningProceduralPlanetUniformsfor shader-based planet rendering. - @teskooano/systems-celestial: General comment cleanup and minor refactoring in
utils/event-dispatch.tsandvitest.config.ts. - @teskooano/systems-procedural-generation: Major Refactor (Planet Surface Properties):
- Renamed
createDetailedSurfacePropertiestocreateProceduralSurfacePropertiesinutils.ts. createProceduralSurfacePropertiesnow consistently returns aProceduralSurfacePropertiesobject for all planet types.- This function now defines specific procedural parameters (noise settings, bump scale) and detailed color palettes (low, mid1, mid2, high) tailored for each
PlanetType(TERRESTRIAL, ROCKY, BARREN, DESERT, ICE, LAVA, OCEAN). - Added
shininessandspecularStrengthto theProceduralSurfacePropertiesoutput, supporting more unified shader-based rendering.
- Renamed
- @teskooano/systems-procedural-generation:
generators/planet.tsnow uses the newgeneratePlanetObservableandcreateProceduralSurfaceProperties. - @teskooano/systems-procedural-generation: Extensive comment removal and minor code cleanup in
generators/star.ts,name-generator.ts,seeded-random.ts, andutils.ts. - @teskooano/data-types: Significantly reduced comments across most files for brevity (
celestial.ts,events.ts,globals.d.ts,index.spec.ts,main.ts,scaling.ts,ui.ts). - @teskooano/data-types: Reordered exports in
index.tsand addedglobals.d.tsto the exports. - Major refactor of camera management, centralizing control logic within the
CameraManagerplugin.CameraManagernow orchestrates camera movements, transitions, and object following. FocusControlplugin updated to integrate with the newCameraManagerfor handling focus and follow requests, usingfollowObject.ModularSpaceRenderermethods related to direct camera control (updateCamera,setFollowTarget) have been deprecated, with functionality moved toCameraManagerandControlsManager.
Removed
- @teskooano/systems-celestial: Deleted
AtmosphereMaterial.ts,BaseCelestialMaterial.ts,GasGiantMaterial.ts,SpaceRockMaterial.ts,SunMaterial.tsas part of the material system overhaul. - @teskooano/systems-celestial: Deleted
textures/RingTextureGenerator.ts(and other texture generators as noted above).
Package: Data Types
Added
- Added
USER_CAMERA_MANIPULATION: "user-camera-manipulation"toCustomEventsinevents.ts. - Added
CAMERA_TRANSITION_COMPLETE: "camera-transition-complete"toCustomEventsinevents.ts.
Package: Renderer ThreeJS Interaction
Changed
- Refactored
ControlsManager.ts:- Introduced new GSAP-based camera transition methods:
transitionTo(for position and target) andtransitionTargetTo(for target only), replacing older, more complex transition logic. - Added private helper methods
_beginTransitionand_endTransitionto encapsulate common transition setup and teardown logic. - Simplified the
startFollowingmethod to only store the target object and offset, withCameraManagernow responsible for initiating the move to the follow position. - The
setFollowTargetmethod has been deprecated; its responsibilities are now split betweenCameraManager(initiating transitions) and the simplifiedstartFollowing. - Now emits
CustomEvents.USER_CAMERA_MANIPULATIONwhen the user manually changes the camera via controls. - Now emits
CustomEvents.CAMERA_TRANSITION_COMPLETEwhen a GSAP transition finishes, providing details about the transition type and any focused object.
- Introduced new GSAP-based camera transition methods: