OutWit.Engine.Data
1.1.1
See the version list below for details.
dotnet add package OutWit.Engine.Data --version 1.1.1
NuGet\Install-Package OutWit.Engine.Data -Version 1.1.1
<PackageReference Include="OutWit.Engine.Data" Version="1.1.1" />
<PackageVersion Include="OutWit.Engine.Data" Version="1.1.1" />
<PackageReference Include="OutWit.Engine.Data" />
paket add OutWit.Engine.Data --version 1.1.1
#r "nuget: OutWit.Engine.Data, 1.1.1"
#:package OutWit.Engine.Data@1.1.1
#addin nuget:?package=OutWit.Engine.Data&version=1.1.1
#tool nuget:?package=OutWit.Engine.Data&version=1.1.1
OutWit.Engine.Data
Data models, base classes, and utilities for WitEngine controllers and activities.
Overview
This package provides the foundational data structures and base classes for building WitEngine controllers. It includes activity base classes, variable implementations, serialization support, and common utilities.
Installation
dotnet add package OutWit.Engine.Data
Key Components
Activity Base Classes
| Class | Description |
|---|---|
WitActivity |
Abstract base for all activities |
WitActivityFunction |
Activity that returns a value to a variable |
WitActivityCommand |
Activity that performs an action without return |
WitActivityComposite |
Activity containing child activities |
WitActivityTransform |
Activity with transformer (arrow syntax support) |
Activity Adapter Base Classes
| Class | Description |
|---|---|
WitActivityAdapterBase<T> |
Base adapter for simple activities |
WitActivityAdapterFunction<T> |
Adapter for function activities |
WitActivityAdapterComposite<T> |
Adapter for composite activities |
WitActivityAdapterTransform<T> |
Adapter for transform activities |
Variable Classes
| Class | Description |
|---|---|
WitVariable<T> |
Generic typed variable |
WitVariableObject |
Object variable (any type) |
WitVariableTuple |
Key-value pair variable |
WitVariableCollection |
Base for collection variables |
Job Classes
| Class | Description |
|---|---|
WitJob |
Main job implementation |
WitActivityCollection |
Collection of activities |
WitVariableCollection |
Collection of variables |
Parameter Types
| Class | Description |
|---|---|
WitConstantString |
String literal |
WitConstantNumeric |
Numeric literal |
WitConstantBoolean |
Boolean literal |
WitConstantNull |
Null literal |
WitReference |
Variable reference |
WitCondition |
Conditional operator |
WitArray |
Array of parameters |
Status Classes
| Class | Description |
|---|---|
WitProcessingStatus |
Job execution status |
WitActivityStatus |
Individual activity status |
WitProcessingResult |
Enum: Completed, Failed, Cancelled |
Processing Classes
| Class | Description |
|---|---|
WitProcessingTask |
Running job task with events |
WitProcessingOptions |
Distributed processing configuration |
Attributes
| Attribute | Description |
|---|---|
[Activity("Name")] |
Marks a class as an activity |
[Variable("Name")] |
Marks a class as a variable type |
[Job("Name")] |
Marks a class as a job type |
[RequiresCpu(...)] |
Specifies CPU requirements |
[RequiresGpu(...)] |
Specifies GPU requirements |
[RequiresOs(...)] |
Specifies OS requirements |
Usage Examples
Creating a Custom Activity
[Activity("MyActivity")]
[MemoryPackable]
public partial class MyActivity : WitActivityFunction
{
public IWitParameter? InputValue { get; init; }
public override bool Is(ModelBase modelBase, double tolerance = 1E-07)
{
if (modelBase is not MyActivity other)
return false;
return base.Is(other, tolerance)
&& InputValue.Check(other.InputValue);
}
protected override MyActivity InnerClone()
{
return new MyActivity { InputValue = InputValue?.Clone() as IWitParameter };
}
}
Creating an Activity Adapter
internal class MyActivityAdapter : WitActivityAdapterFunction<MyActivity>
{
public MyActivityAdapter(
IWitControllerManager controllerManager,
IWitProcessingManager processingManager,
ILogger logger)
: base(controllerManager, processingManager, logger)
{
}
protected override async Task<object?> ProcessInner(
MyActivity activity,
IWitVariablesCollection pool,
IWitActivityStatus? activityStatus,
WitProcessingStatus status)
{
if (!pool.TryGetValue(activity.InputValue, out int input))
throw new InvalidOperationException("Failed to get input");
return input * 2;
}
protected override MyActivity CreateActivity(IWitParameter[] parameters)
{
if (parameters.Length != 1)
throw new ArgumentException("Expected 1 parameter");
return new MyActivity { InputValue = parameters[0] };
}
}
Creating a Custom Variable
[Variable("MyType")]
[MemoryPackable]
public partial class MyVariable : WitVariable<MyData>
{
public MyVariable() : base() { }
public MyVariable(string name) : base(name) { }
public MyVariable(string name, MyData value) : base(name, value) { }
}
Registering in a Controller Module
public override void Initialize(IServiceCollection services)
{
services.AddVariable<MyVariable>();
services.AddActivityAdapter<MyActivity, MyActivityAdapter>();
}
Serialization
All data types use MemoryPack for high-performance binary serialization. Mark your classes with [MemoryPackable] and make them partial:
[MemoryPackable]
public partial class MyActivity : WitActivityFunction
{
// ...
}
Project Structure
OutWit.Engine.Data/
Activities/ - Activity base classes
ActivityAdapters/ - Adapter base classes
Variables/ - Variable implementations
Jobs/ - WitJob implementation
Constants/ - Literal value types
References/ - Variable reference types
Conditions/ - Conditional operators
Arrays/ - Array parameter type
Status/ - Processing status classes
Tasks/ - Processing task implementation
Processing/ - Processing options
Attributes/ - Activity/Variable attributes
Exceptions/ - Engine exceptions
Serialization/ - MemoryPack registration
Utils/ - Extension methods and utilities
Dependencies
- OutWit.Engine.Interfaces
- OutWit.Common.Aspects
- OutWit.Common.MemoryPack
License
This software is licensed under the Non-Commercial License (NCL).
- Free for personal, educational, and research purposes
- Commercial use requires a separate license agreement
- Contact licensing@ratner.io for commercial licensing inquiries
See the full LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- OutWit.Common.Aspects (>= 1.3.3)
- OutWit.Common.MemoryPack (>= 1.1.4)
- OutWit.Engine.Interfaces (>= 1.1.1)
NuGet packages (8)
Showing the top 5 NuGet packages that depend on OutWit.Engine.Data:
| Package | Downloads |
|---|---|
|
OutWit.Engine.Shared
Shared infrastructure components for WitEngine host and node implementations. Provides controller management, job processing, and resource localization services. |
|
|
OutWit.Engine.Parser
ANTLR-based script parser for WitEngine job DSL. Compiles job scripts into executable activity graphs for distributed processing. |
|
|
OutWit.Controller.Render
Distributed rendering via Blender CLI and ffmpeg for .blend scene blobs, bootstrap typed-scene inputs, stills, tiled stills with overlap-aware tile options, runtime diagnostics, unified/frame/video/tiled preflight validation, frame sequences, and MP4 output. |
|
|
OutWit.Controller.Matrices
Matrix and vector operations including sparse representations and Gustavson multiplication. |
|
|
OutWit.Controller.Render.Dcc
Host-only neutral DCC scene validation and .blend build bootstrap activities that sit upstream of the OutWit.Controller.Render controller. |
GitHub repositories
This package is not used by any popular GitHub repositories.