com.wallstop-studios.unity-helpers
Version:
Treasure chest of Unity developer tools
314 lines (206 loc) • 10.2 kB
Markdown
# Glossary
Quick reference for terms used throughout Unity Helpers documentation.
## Core Concepts
### Attribute
- A dynamic numeric value with a base and calculated current value
- Current value applies all active modifications from effects
- Used in the Effects System for stats like Health, Speed, Defense
- See: [Effects System](../features/effects/effects-system.md)
### Buffering Pattern
- Reusing pre-allocated collections (List, arrays) to minimize GC allocations
- Pass a buffer to API methods that clear and fill it with results
- Critical for performance in hot paths (per-frame queries)
- See: [Buffering Pattern](../readme.md#buffering-pattern)
### Immutable Tree
- Spatial data structure that cannot be modified after creation
- Must be rebuilt when underlying data changes
- Provides consistent query performance but requires full reconstruction
- Examples: QuadTree2D, KdTree2D, RTree2D
- See: [Spatial Trees](../features/spatial/spatial-trees-2d-guide.md)
### Odin Compatibility
- Automatic integration with Odin Inspector when installed
- Base classes switch from MonoBehaviour → SerializedMonoBehaviour
- Enables serialization of dictionaries, polymorphic fields, etc.
- No code changes required - works automatically via #if ODIN_INSPECTOR
- See: [Singletons - Odin Compatibility](../features/utilities/singletons.md#odin-compatibility)
### Pooled Buffers
- Reusable memory allocations managed by `Buffers<T>` or `WallstopArrayPool<T>`
- Reduces GC pressure by recycling collections instead of allocating new ones
- Use with `using` statements for automatic cleanup
- See: [Buffering Pattern](../readme.md#buffering-pattern)
### Relational Components
- Attributes that auto-wire component references via hierarchy traversal
- Includes: `[SiblingComponent]`, `[ParentComponent]`, `[ChildComponent]`
- Eliminates manual GetComponent calls
- See: [Relational Components](../features/relational-components/relational-components.md)
### Seedable Random
- Random number generator that accepts a seed value for deterministic output
- Same seed = same sequence of random numbers
- Essential for replay systems, networked games, procedural generation
- See: [Random Performance](../performance/random-performance.md)
## Data Structures
### Binary Heap
- Array-backed binary tree maintaining min/max heap property
- O(log n) push/pop, O(1) peek
- Used for priority queues, pathfinding, event scheduling
- See: [Data Structures - Heap](../features/utilities/data-structures.md#binary-heap-priority-queue)
### Cyclic Buffer (Ring Buffer)
- Fixed-capacity circular array with wrapping head/tail pointers
- O(1) enqueue/dequeue at both ends
- Overwrites oldest data when full
- See: [Data Structures - Cyclic Buffer](../features/utilities/data-structures.md#cyclic-buffer-ring-buffer)
### Disjoint Set (Union-Find)
- Data structure tracking partitions of elements into sets
- Near O(1) union/find operations with path compression
- Used for connectivity, clustering, MST algorithms
- See: [Data Structures - Disjoint Set](../features/utilities/data-structures.md#disjoint-set-union-find)
### KdTree (K-Dimensional Tree)
- Binary tree partitioning space along alternating axes
- Excellent for nearest neighbor queries on points
- Balanced variant: consistent query time; Unbalanced: faster builds
- See: [2D Spatial Trees](../features/spatial/spatial-trees-2d-guide.md)
### QuadTree
- Tree recursively splitting 2D space into four quadrants
- General-purpose spatial structure for points
- Good for range queries, broad-phase collision detection
- See: [2D Spatial Trees](../features/spatial/spatial-trees-2d-guide.md)
### RTree
- Tree grouping items by minimum bounding rectangles (MBRs)
- Optimized for objects with size/bounds
- Excellent for bounds intersection queries
- See: [2D Spatial Trees](../features/spatial/spatial-trees-2d-guide.md)
### Sparse Set
- Two arrays (sparse + dense) enabling O(1) membership checks
- O(1) insert/remove/contains with cache-friendly dense iteration
- Requires contiguous ID space for indices
- See: [Data Structures - Sparse Set](../features/utilities/data-structures.md#sparse-set)
### Spatial Hash
- Grid-based spatial structure with fixed cell size
- Excellent for many moving objects uniformly distributed
- O(1) insertion with fast approximate queries
- See: [README - When to Use Spatial Trees](../readme.md#when-to-use-spatial-trees)
### Trie (Prefix Tree)
- Tree keyed by characters for efficient prefix lookups
- O(m) search where m = key length
- Used for autocomplete, spell-checking, dictionary queries
- See: [Data Structures - Trie](../features/utilities/data-structures.md#trie-prefix-tree)
## Editor & Tools
### Attribute Metadata Cache
- Pre-generated metadata for Effects System attributes
- Eliminates runtime reflection overhead
- Powers editor dropdowns for attribute names
- Auto-generated on editor load
- See: [Editor Tools - Attribute Metadata Cache](../features/editor-tools/editor-tools-guide.md#attribute-metadata-cache-generator)
### Property Drawer
- Custom inspector rendering for serialized fields
- Examples: `[WShowIf]`, `[StringInList]`, `[WReadOnly]`
- Improves editor workflows with conditional display, validation, etc.
- See: [Property Drawers](../features/editor-tools/editor-tools-guide.md#property-drawers--attributes)
### ScriptableObject Singleton
- Global settings/data singleton backed by a Resources asset
- Auto-created by editor tool with `[ScriptableSingletonPath]` attribute
- Accessed via `T.Instance` pattern
- See: [Singletons](../features/utilities/singletons.md)
## Patterns & Techniques
### Douglas-Peucker Algorithm
- Polyline simplification algorithm that reduces vertex count
- Preserves shape within epsilon tolerance
- Used by `LineHelper.Simplify` and `SimplifyPrecise`
- See: [Math & Extensions - Geometry](../features/utilities/math-and-extensions.md#geometry)
### Effects Pipeline
- Data-driven gameplay modification system
- Flow: Author AttributeEffect → Apply to GameObject → Modifications + Tags + Cosmetics
- Handles stacking, duration, removal automatically
- See: [Effects System](../features/effects/effects-system.md)
### Handle (Effect Handle)
- Opaque identifier for a specific effect application instance
- Used to remove one stack of an effect
- Only returned for Duration/Infinite effects (Instant returns null)
- See: [Effects System](../features/effects/effects-system.md)
### Positive Modulo
- Modulo operation that always returns non-negative results
- Essential for array indices and angle normalization
- Use `WallMath.PositiveMod` instead of `%` operator
- See: [Math & Extensions - Numeric Helpers](../features/utilities/math-and-extensions.md#numeric-helpers)
### Tag Handler
- Component managing string tags with reference counting
- Multiple sources can apply same tag; removed when count reaches 0
- Used for categorical states (Stunned, Poisoned, Invulnerable)
- See: [Effects System](../features/effects/effects-system.md)
## Serialization
### Protobuf (Protocol Buffers)
- Compact binary serialization format from Google
- Forward/backward compatible with schema evolution
- Requires `[ProtoContract]` and `[ProtoMember(n)]` annotations
- See: [Serialization - Protobuf](../features/serialization/serialization.md)
### System.Text.Json
- Modern .NET JSON serialization library
- Unity Helpers provides custom converters for Unity types
- Profiles: Normal, Pretty, Fast, FastPOCO
- See: [Serialization - JSON](../features/serialization/serialization.md)
### Unity Converters
- Custom JSON converters for Unity engine types
- Supports: Vector2/3/4, Vector2Int/3Int, Color/Color32/ColorBlock, Quaternion, Matrix4x4, Pose, Plane, SphericalHarmonicsL2, Bounds/BoundsInt, Rect/RectInt/RectOffset, RangeInt, Ray/Ray2D/RaycastHit, BoundingSphere, Resolution, RenderTextureDescriptor, LayerMask, Hash128, Scene, AnimationCurve, Gradient, Touch, GameObject, ParticleSystem.MinMaxCurve, ParticleSystem.MinMaxGradient, System.Type
- Automatically included in Unity Helpers JSON options
- See: [Serialization](../features/serialization/serialization.md)
## Performance Terms
### Amortized Complexity
- Average complexity over many operations
- Example: Deque push is O(1) amortized (occasional O(n) resize)
- Smooths out occasional expensive operations
### Big-O Notation
- Describes algorithm scaling behavior
- O(1) = constant time, O(log n) = logarithmic, O(n) = linear, O(n²) = quadratic
- Smaller is better; focus on dominant term
### Cache-Friendly
- Data layout that maximizes CPU cache hits
- Contiguous memory access patterns (arrays) are cache-friendly
- Random memory jumps (linked lists) are cache-unfriendly
### GC Pressure
- Frequency and volume of garbage collection required
- High pressure = frequent allocations = more GC pauses
- Reduce with object pooling, reusable buffers, value types
### Hot Path
- Code executed very frequently (per-frame, per-update)
- Performance critical; avoid allocations and expensive operations
- Profile to identify actual hot paths
### IL2CPP
- Unity's ahead-of-time (AOT) compiler for mobile/console
- Reflection is expensive; metadata caching becomes critical
- Some reflection patterns may not work; prefer cached delegates
## Abbreviations
### AABB
Axis-Aligned Bounding Box
### AOT
Ahead-Of-Time (compilation)
### DTO
Data Transfer Object (simple data container for serialization)
### FIFO
First-In-First-Out (queue behavior)
### GC
Garbage Collector/Garbage Collection
### HDRP
High Definition Render Pipeline
### kNN
k-Nearest Neighbors
### LIFO
Last-In-First-Out (stack behavior)
### MBR
Minimum Bounding Rectangle
### MST
Minimum Spanning Tree
### POCO
Plain Old CLR Object (simple class with no framework dependencies)
### PPU
Pixels Per Unit (sprite import setting)
### PRNG
Pseudo-Random Number Generator
### RNG
Random Number Generator
### URP
Universal Render Pipeline
---
### See Also
- [Feature Index](./index.md) - Alphabetical feature index
- [Getting Started Guide](./getting-started.md) - Quick start guide
- [Main Documentation](../readme.md) - Main documentation