Skip to content

Latest commit

 

History

History
259 lines (241 loc) · 6.73 KB

TODO.md

File metadata and controls

259 lines (241 loc) · 6.73 KB

TODO

  • Better picking on tiers - disable terrain picks
  • move prefs to own crate (and use it).
  • Crash - inserting flora compute task on deleted entity.
  • wall draw sometimes kicks into remove mode - missing exemplar ref?
  • separate crate for realms?
  • Quit confirm dialog
  • Text input
  • File unsaved indicator.
    • Track which things are unsaved.
  • Undo / Redo
  • Terrain contour list.
    • filter by group
    • contours not appearing in the correct order in groups.
    • empty tile shows nothing, should show black floor.
  • think about converting realm name to Arc. Either that or have a realm id.
  • World camera pan needs to use bubbled scroll events.
  • Build an entity inspector
  • Bugs:
    • Materials get loaded multiple times?
  • Assets
    • Asset Reader that allows cache miss
  • Wall Physics
    • implement
    • Use enum for collider type? Really depends on whether it's editable.
  • Finish terrain shader
    • biomes (snow, desert, etc.)
  • Portals
    • perspective projection
    • modified frustum
  • Possibly move to common crate:
    • msgpack (no, we want to remove this actually, get rid of extension types)
    • inline_assets?
    • reflect_types
    • random
  • Skybox experiments
  • TODO: Wheel rotation should only work if mouse within viewport. We'll need to add a system to track which region we're in.
  • Finish water motion.

Future:

  • Floor surface texture rotation
  • Unit tests for HexColor.
  • Editor-only floor surfaces (for things like water currents / hints)

Bevy Issues

Aspects to define

  • Floor
    • floor::StdSurface - texture asset
    • floor::NoiseSurface - procedural texture
    • floor::Geometry - floor mesh options
    • floor::Nav - pathfinding effects
  • SceneryElement
    • scenery::Models - list of glb models to display
    • scenery::Colliders - physics colliders
    • scenery::Marks - interaction marks
    • scenery::Container - open / close / lock behaviors
    • scenery::Door - open / close / lock
    • scenery::Stairs - allows click-to-climb
    • scenery::Ladder - allows click-to-climb
    • scenery::Sign - click to read
    • scenery::PortalAperture - portal dimensions
    • scenery::PortalTarget - portal target location
    • scenery::LightSource - point light source location
    • scenery::SoundSource - ambient sound emitter
    • scenery::WallSize - grid alignment options
    • mechanics::PushButton - click to interact
    • mechanics::ToggleButton - click to interact
    • mechanics::PressurePlate - senses being walked on
    • mechanics::ControlledOpenable - change state via remote signal
    • mechanics::AutoDoor
    • trigger::Circle - detects when player is within circle
    • trigger::Rect - detects when player is within rect
    • trigger::Encounter - increases chance of enemy spawn based on proximity
    • scenery::Waymark - used for NPC scripted events
  • Sfx
    • sfx::Music
    • sfx::WaterFx
    • sfx::Particles
  • Actors
    • actor::Model
    • actor::ColorSlots
    • actor::Colors
    • actor::FeatureSlots
    • actor::Features
    • actor::EquippedSlots
    • actor::Equipped
    • actor::Skills
    • actor::Physics
    • actor::Gender
    • actor::Ally
    • actor::Portrait
    • actor::GoalsXXX* (can be multiple)
  • InventoryItem
    • inventory::Item - appearance, weight, stack size, price
    • inventory::Container - carrying capacity
    • inventory::Equippable - equip slot
    • inventory::Weapon - damage type, range
    • inventory::Document - link to text content, page style
    • inventory::QuestItem - quest id, stage
  • Book

Project hierarchy

  • actors
    • Action
    • Actor
    • ActorTemplate
    • ActorArchetype
    • ActorAffix
    • goals
      • components
        • Activate
        • ApplySkill
        • Attack
        • Contingent
        • Deactivate
        • Dialogue
        • Equip
        • FaceToward
        • LookAt
        • Park
        • Pose
        • Pursue
        • Random
        • Ranked
        • Remark
        • SceneryInteraction
        • Sequence
        • TargetEnemy
        • ThreatChange
        • Travel
        • Unequip
        • Wait
        • Wander
      • GoalRoot
      • PrioritizedGoalList
    • parking
    • SkinnedModel
    • ThreatMap
  • assets
    • archetypes
      • Archetype
  • audio
    • AudioFx
    • AudioFxTemplate
    • AudioFxSystem
  • books
  • dialogue
    • CutScene
    • DialogueSet
    • RemarkSet
  • items
    • Inventory
    • InventoryItem
    • InventoryItemArchetype
  • nav
    • NavigationMesh
    • NavigationMeshBuilder
    • NavController
    • NavTract
    • NavRouteRequest
    • NavRouteTask
  • overlays
    • DebugPhysicsOverlay
    • TargetingCircle
    • PathVisualizer
    • TranslucentLines
    • TranslucentSprites
    • TranslucentPoints
    • TranslucentMesh
  • quests
    • StageId
    • Quest
    • QuestMgr
  • particles
    • MissileSystem
    • ParticleEffect
    • ParticleEmitter
    • ParticleAspect
  • physics
  • scenery
    • Fixture
    • FixtureArchetype
    • FixtureModels
    • FixtureObstacles
    • FixturePhysics
    • Floor
    • FloorArchetype
    • FloorModels
    • FloorObstacles
    • FloorPhysics
    • PrecinctCache
    • Precinct
    • Tier
  • skills
  • terrain
    • ParcelCache
    • Parcel
    • TerrainShape
    • TerrainFx
  • view
    • Viewpoint
    • Portals
    • Cutaways
    • Nameplates
  • world
    • Biome
    • Realm
    • World

Convert PNG to premultiplied alpha:

convert quest.png -background black -alpha Remove quest.png -compose Copy_Opacity -composite quest.png convert artwork/export/editor/building.png -background black -alpha Remove artwork/export/editor/building.png -compose Copy_Opacity -composite assets/editor/building.png

UnsavedState:

  • precincts
  • contours
  • terrain maps
  • terrain groups
  • exemplars
  • region?
  • quests and other meta.

Editor folder organization

  • scenery
    • mod
    • panel
    • tool_create_floor etc.
    • enter / exit / update
    • mutations / commands
    • drag states
    • overlays

Asset saving

let source = asset_server.get_source(AssetSourceId::Default).unwrap(); let writer = source.writer().unwrap(); let mut write = writer.write(Path::new("bunny.meshlet_mesh")).await.unwrap(); let saver = CompressedImageSaver; let loaded_image = LoadedAsset::new_with_dependencies(Image::default(), None); let erased = ErasedLoadedAsset::from(loaded_image); saver.save(&mut *write, &erased, &()).await;