Defines and executes Daggerfall action records.
Specialised action component for hinged doors in buildings interiors and dungeons.
This door component is assigned when linked action calls for a door, but no normal door record found. Usually found on super-secret doors the player is never intended to open manually and must find a lever. Player cannot open, bash, pick, or cast their way through this type of door.
Load sound effects from Daggerfall into a normal AudioSource. This component loads clips procedurally in editor and at runtime. Can preview clips by index, ID, or enum directly from editor window.
Draws a large number of atlased billboards using a single mesh and custom geometry shader. Supports animated billboards with a random start frame, but only one animation timer per batch. Currently used for exterior billboards only (origin = centre-bottom). Support for interior/dungeon billboards will be added later (origin = centre). Tries to not recreate Mesh and Material where possible. Generates some garbage when rebuilding mesh layout. This can probably be improved.
Bookshelves in building interiors which allow reading books.
Stores enemy settings for serialization and other tasks.
Moves player up an down ladders in building interiors.
Attached to point lights to create animated effect.
Enables a world object to be lootable by player.
A billboard class for classic Daggerfall mobile sprites with 8 orientations. Handles loading resources and rendering billboard based on orientation and state. Will rotate and scale based on camera angle and texture, so this component should only be attached to a child GameObject. Uses parent GameObject to determine actual facing in world.
Attached to dungeon blocks.
This is back to a placeholder component for now. Building lookup has been moved to DaggerfallLocation object by way of BuildingDirectory.
Implementation of Daggerfall's sky backgrounds. Works in both forward and deferred rendering paths. Uses two cameras and OnPostRender in local camera for sky drawing (uses normal camera solid colour clear). Sets own camera depth to MainCamera.depth-1 so sky is drawn first.
DO NOT ATTACH THIS SCRIPT TO MAINCAMERA GAMEOBJECT. Attach to an empty GameObject or use the prefab provided.
Stores an array of buildings inside a block object. This provides the bridge between live scene data and game data. Used to hit-test buildings for identification and to locate in scene.
Stores an array of static doors. Exposes helpers to check doors in correct world space.
Partners with a Unity Terrain for use by StreamingWorld. Each terrain is "self-assembling" based on position in world (1000x500 map pixels). Also serializes additional information about neighbour terrains.
DaggerfallUnity main class.
Default TerrainSampler for StreamingWorld.
Reimplementing key parts of Daggerfall's random library. This ensures critical random number sequences (e.g. building names) will match Daggerfall's output across all platforms.
Imports Daggerfall images into Unity. Should only be attached to DaggerfallUnity singleton (for which it is a required component). Note: Texture loading methods have been moved to TextureReader class.
Imports Daggerfall models into Unity as Mesh objects. Should only be attached to DaggerfallUnity (for which it is a required component).
The component that handles graphics for a mobile person.
Billboard class for classic wandering NPCs found in town environments.
A sampler to produce rolling noise-based terrain. Does not use Daggerfall map data so usual coastlines and elevations not present.
Tracks player position in virtual world space. Provides information about world around the player.
Settings manager for reading game configuration from INI file. Deploys new settings from Resources/defaults.ini to persistentDataPath/settings.ini. Settings no longer present in defaults.ini are removed from settings.ini. Reads on start to public property cache. This prevents expensive string parsing if property checked every frame. Transfers settings from public property cache back to ini data on save.
A minimal terrain sampler to create perfectly flat terrain. Does not create any ocean or terrain features.
Imports Daggerfall sounds into Unity as AudioClip objects. Should only be attached to DaggerfallUnity (for which it is a required component).
Manages terrains for streaming world at runtime. At runtime only coordinates from LocalPlayerGPS will be used. Be sure to apply desired preview to PlayerGPS. Terrain tiles are spread outwards from a centre tile up to TerrainDistance around player. Terrains will be marked inactive once they pass beyond TerrainDistance. Inactive terrains greater than TerrainDistance+1 from player will be recycled. Locations and other loose objects greater than TerrainDistance+1 from player will be destroyed.
Helper methods for terrain generation.
Base TerrainSampler for transforming heightmap samples. This class and interface will be expanded on later.
Generates texture tiles for terrains and uses marching squares for tile transitions. These features are very much in early stages of development.
A simple clock component to raise current world time at runtime. Provides some events for time milestones. Be careful using events in combination with very high timescales. This can cause events to fire too often or be skipped entirely. For large-scale time changes (hundreds to thousands of objects) a better performance pattern is to simply check the DaggerfallUnity.Singleton.WorldTime.Now in Update() of each object. See DaggerfallLight.cs for an example of reading time directly for lights on/off.
Detailed information about a building for directory lookups.
Defines a single cached material and related properties. Marked as serializable but not currently serialized.
List of starting spells for a specific career. Custom careers use the same starting spells as Spellsword (CareerIndex=1) if any primary or major skills are a magic skill)
Some information about a climate texture, returned by climate parser.
Index of a single Daggerfall texture.
Results out for GetTexture methods.
Settings in for GetTexture methods.
A single global variable.
Data package returned by ImageHelper.GetImageData() methods. Supplied Texture2D will always be readable.
Used to create matrix of chances by loot table key.
Information about a single map pixel for streaming world.
Defines animation setup for mobile enemies.
Defines basic properties of mobile enemies.
Defines model data.
Defines submesh data.
Defines a door found in model data.
Describes a single quest marker for NPC, item, etc. These markers are used to place quest resources like Person, Foe, Item, etc.
Defines a list of random encounters based on dungeon type (Crypt, Orc Stronghold, etc.).
A record index for cached materials. Used to align indices in atlased textures.
Full details of a quest site generated by Place resource. A site has different meanings based on type:
- Town - Exterior arrangement of RMB blocks. Can be fixed or random.
- Dungeon - Interior arrangement of RDB blocks. Can be fixed or random.
- Building - Interior of a specific RMB block record. Random based on building type.
- All available quest Spawn and Item markers are stored in SiteDetails for lookups.
- Only a single marker will be selected based on first resource placed to site and what markers are available.
- If an Item resource is placed first it will select a random Item marker.
- If a Foe or Person resource is placed first it will select a random Spawn marker.
- Future placements will be added to selected marker.
- If site has only a Spawn or Item marker available, the best available marker type will be used.
- Will continue to refine this design as quest system progresses.
Site links are reserved by "create npc at" action. Creates a bridge between world and quest markers for layout classes. For example, quest NPCs might need to be injected to a certain building or dungeon interior. The same mechanism is used to place quest items and foes for the player. SiteLink contains enough information for external classes to determine if they belong to that site. If layout classes find a matching SiteLink, they will deploy any assigned QuestMarkers assigned to site.
A single starting spell.
Defines a static building for hit tests inside scene.
Defines a static door for hit tests inside a scene.
Defines animation setup for weapons.
Interface to map samples resource for StreamingWorld.
Interface to TerrainSampler.
States for action doors and other objects.
Quick AudioSource presets for DaggerfallAudioSource. These make minor changes to peer AudioSource component.
Defines character's hands.
Base types for climate-aware texture sets.
Texture sets for nature flats. Note: Snow sets are only assigned by climate processing.
Climate season modifiers.
Regions across the game world. Values maps to zero-based region index. Not all regions used in game.
Door types found around locations.
Available dye colours for armour, weapons, and clothing. Values match known Daggerfall colour indices. May change at a later date with new research.
Supported targets for dye changes.
Sub-types of editor flats.
Defines various types of living entities in the world.
Types of billboard flats in Daggerfall blocks.
Controls how weapons are held in the player's hands.
Supported ImageReader file types.
Various container images for inventory management. Not sure if all of these are used. May change at a later date.
Defines how an item is held.
Location climate usage options.
Supported loot containers in world.
Phases of the moons.
Text macros used by various systems (quest messages, items, stats, etc.). Macro output depends on the characters wrapping symbol name. Not all objects support all macro types.
Types of markers in a location from TEXTURE.199. Only used for quest resource placement right now. Will be expanded later to include additional marker types (rest, ladders, etc.)
Standard shader blend modes. Using a custom enum as Unity does not expose outside of editor GUI.
Standard shader smoothness map channel setting. Using a custom enum as Unity does not expose outside of editor GUI.
Various metal types in Daggerfall. This is a Daggerfall Unity enum. For enum matching native data see Items/ItemEnums.cs.
Mobile affinity for resists/weaknesses, grouping, etc. This could be extended into a set of flags for multi-affinity creatures.
Mobile enemy behaviour groups.
Basic combat flags for mobiles. Every mobile has a basic melee attack available. This can be extended to create more diverse foes with a wider range of behaviours.
Mobile gender. All monsters have an unspecified gender and no male/female variations. When specifying gender for humanoids, a value of unspecified will randomly choose between male/female.
Reaction settings for mobiles.
Mobile animation states.
A list of mobile enemy types with ID range 0-42 (monsters) and 128-146 (humanoids). Do not extend this enum.
Modes for user when activating central object.
Types of sites player can be sent to for quests.
All songs in MIDI.BSA.
Enum for Daggerfall sound clips. This will be filled out over time.
Methods for auto-reposition logic.
Supported alpha texture formats for texure reader.
Defines how a weapon is aligned.
Weapon animation states.
Generic weapon types in Daggerfall.
Weather texture modifiers.
Window textures modifiers.
Basic context of world object, such as dropped loot.