ObjectiveGUI is a modular UI framework for .NET Framework 4.8 with Unity Engine integration. It provides a structured approach to building UIs with clean separation of concerns and abstraction layers for potential multi-platform support.
- Modular Architecture: Independent, interchangeable modules
- Event System: Pipelines, prefabs, and Unity integration
- Visual Components: Customizable UI elements library
- Layout System: Flexible positioning and container management
- Data Binding: Observable properties with animation support
- Transformation: Position, scale, and rotation utilities
Event System
- OG.Event: Event handlers, callbacks, and providers
- OG.Event.Pipe: Pipeline for event processing
- OG.Event.Prefab: Pre-built event types
Element System
- OG.Element: Base UI components
- OG.Element.Container: Child management components
- OG.Element.Interactive: User input handling elements
- OG.Element.Visual: Rendering-focused elements
Graphics System
- OG.Graphics: Line, quad, text, and texture rendering
Layout System
- OG.Layout: UI element positioning and arrangement
Transformer System
- OG.Transformer: Position, scale, and rotation utilities
Factory & Builder
- OG.Factory: Element creation factories
- OG.Builder: Complex UI construction utilities
Utilities
- OG.TextController: Text management
- OG.DataKit: Animation, binding, and transformations
- OG.DataTypes: UI-specific type definitions
Each module follows a consistent pattern with abstraction interfaces (.Abstraction), core implementations, and specialized extensions.
Transforms Unity events into framework-specific events through a pipeline architecture:
- Handlers & Callbacks: Process typed events with specific responses
- Event Pipes: Filter and transform events between Unity and ObjectiveGUI
- Prefabs: Pre-configured event types for common scenarios
Abstracted rendering capabilities with specialized implementations:
- Line, Quad, Text, Texture: Specific renderers for different UI needs
- Unity Integration: Uses Unity's rendering while maintaining abstraction
The building blocks of interfaces with generic type support:
- Interactive Elements: User input handling with binding capabilities
- Container Elements: Manage parent-child relationships
- Visual Elements: Rendering-focused with no interaction
Handles UI element positioning and appearance:
- Rect Calculation: Dynamic rectangle sizing and positioning
- Transform Operations: Position, scale, and rotation utilities
Manages element arrangement with events for layout changes and positioning calculations based on constraints.
- Factory: Element creation without concrete class coupling
- Builder: Step-by-step UI component construction
- Observer: Reactive programming via observable properties
- Strategy: Runtime algorithm selection for rendering and events
- Composite: Element hierarchy with container management
- Dependency Injection: Interface-based design for loose coupling
- Command: Action encapsulation in interactive elements
- Pipe and Filter: Event processing pipeline
ObjectiveGUI uses a layered architecture with SOLID principles:
- Abstraction Layer: Interfaces with
IOg
prefix and generic typing - Core Implementation Layer: Base functionality implementations
- Extension Layer: Specialized elements and utility extensions
- Context Layer: Builder contexts and service providers
- Integration Layer: Unity Engine connectivity with abstraction
SOLID Implementation:
- Single Responsibility: Focused classes with clear purposes
- Open/Closed: Extensibility through abstractions
- Liskov Substitution: Interface-based polymorphism
- Interface Segregation: Specific, focused interfaces
- Dependency Inversion: Abstraction-dependent components
- Clean Architecture: Strict separation of concerns with modular design
- Type Safety: Extensive generics for compile-time error detection
- Data Binding: Observable properties with two-way binding support
- Event System: Custom pipeline with type-safe event handling
- Fluent API: Builder pattern with context-aware construction
- Testability: Interface-based design for effective unit testing
- Performance: Optimized rendering and selective event processing
- .NET Framework 4.8
- Visual Studio 2019 or higher
- Unity Engine
See the LICENSE file for details.