Namespace Holoride.ElasticSDK
Classes
BufferPair<T>
A pair of equally sized CPU and GPU buffers.
BufferPairExtensions
CacheAnnotatedMethodsAttribute
CacheSubTypesAttribute
CollectionExtensions
Utility extensions for collections.
ContextProviderAttribute
Declares that the annotated IContextProvider provides the context type specified in this attribute.
This is used to automatically attach instances of this provider to systems that execute a Pipeline consuming the context provided by this provider.
DataProviderWorker<TDataType>
The worker with a back reference to the node. Represents the result of the different evaluations of
DefaultRequestAttribute
The class implementing this interface is the default subtype. A random subtype is returned in the undefined case of multiple IDefault implementations of the same base type.
ElasticObjectPoolDefaultSettings
ElasticObjectPoolManager
Default object pooling implementation using the PooledObject component to mark prefabs for object pooling.
ElasticObjectPoolSettings
ElasticSceneGenerator
This class produces a realized scene from a Graph.ElasticSceneDefinitionNode for the current Player location (specified via GenerationOrigin). In addition to running any spawners in the defined scene definition, this entails generation of a Terrain if a height map has been specified.
During movement of the player, the generator takes care that the generated terrain and any spawned objects get refreshed. For the terrain, this means re-creating the current terrain area when the player moves past a threshold. For spawned objects, this means updating their spawners, so they may discard instances that have gone out of range and instantiate new spawn candidates that have come in range.
The TerrainGenerator maintains all the basic information about the terrain like the different resolutions of the heightmap, the alphamaps, the base map and the spawn areas. Also the general extents of the resulting terrain are defined here.
ExtensibleObject<TBase>
Derived objects can be extended by fields and functions. Extending classes need to be derivations from Supertype.
FileUtils
FixedPositionStateReceiverBackend
FloatingPlatform
FrameBudgetTask
Provides frame budget observing tasks.
GenerationContext
Contains the immutable meta-information of a single update iteration. Will be discarded when the update is done but can be kept by functions that need information about former iterations - such as async operations that may last longer than an update period.
GenerationSettings
Contains immutable data that cannot be changed during the whole generation loop.
GenerationState
Contains the current state of the generation process and will be updated over time.
GlobalSettings
Contains globally accessible values.
Holofile
Asset representation of a .holo file.
InitializeAfterSingletonsMethodAttribute
IntervalAttribute
Controls the property drawer for Interval fields.
KeyValuePairExtensions
LocalizationEvents
Maneuver
Representation of possible maneuvers.
MapUtils
A collection of useful map functions.
MapWorker
Represents the result of the different evaluation of a 2D float buffer, based on the used filter implementation, through accessing the ram/v-ram. Also manages compute shader calls.
MeshUtils
MovingGrid<T>
A data structure that provides a two-dimensional local grid of cells with reference to a global position. The grid position is intended to move and therefore free all cells that don't overlap with the target area.
NewtonsoftJsonVulnFix
NullStateReceiverBackend
A backend that does nothing. Useful as an override to disable automatic backend behavior, e.g. when running tests.
PatternDescriptorProperties<T>
This class defines additional PatternDescriptorProperties.
Pipeline
A Pipeline consists of a list of IPipelineWorker that consecutively process the data in each generation update phase.
Pipeline.CyclicGraphException
Pipeline.MissingInputException
PipelineWorkerBase
Player
The data obtained by the vehicle sensors.
Player.VehicleLocalizationStatusUnityEvent
PooledObject
Component used to mark GameObjects as poolable by the ElasticObjectPoolManager, and with which settings to pool them.
The settings are grabbed from the original prefab. On instances of the prefab, this component is used to track the pool the instance originated from, so that it can be returned to it on release.
PoseSetWorker
A worker that can be added to a Pipeline in order to generate a list of
GlobalPoses during the
PrefabInstantiationContext
Context common to all prefab instantiation implementations, exposing them to IPipelineWorkers.
RasterizationUtils
A collection of useful rasterization helpers.
RecenterOffsetManager
Access to current recenter offset, i.e. the delta between headset forward direction and vehicle forward direction.
This is relevant for headsets using 3-DoF tracking, since their tracking frame of reference is not local to the vehicle (as opposed to 6-dof), but in the same global space as the vehicle itself.
We manage this offset manually to ensure consistent compatibility across different headsets. For some there is no event to be notified when the user caused a system-driven recenter, for others there is no API to trigger a system-driven recenter.
This manages the application local recenter offset, which may be different to the global recenter offset shared across multiple applications. This is due to the fact that the application of the recenter offset depends on localization data, specifically the vehicle heading. While the vehicle heading is not available, we must operate in an application local state, to still allow users to recenter.
As such, we must be able to operate in the two states "heading available" and "heading unavailable". For the former, behavior is trivial, since we can apply new global recenter offset directly (sent from either drift mitigation, system driven user recenter logic, user recenter in other applications) and directly apply new global offset values.
The "heading unavailable" state is more complex, as it introduces the need for temporary, local recenter offset values, while still:
- keeping the last received global recenter offset so it can be applied as soon as global vehicle heading is available.
- keeping the local vehicle heading when applying a local recenter offset so we can compute the delta to the global recenter offset as soon as global vehicle heading is available.
Once global vehicle heading becomes available, we can transform the pending global or local recenter offset, depending on which one is more recent:
- local to global: add delta of local vehicle heading at time of setting local recenter offset to global vehicle heading.
- global to local: instantly apply pending global recenter offset.
Replay
A replay is a generic representation of some recorded data that may be used to simulate a ride.
ReplayStateReceiverBackend
Receives .holo file state.
ReplayStream
Base implementation for IReplayStream taking care of some boilerplate.
RequireGenerationContextAttribute
Used to annotate workers which require some implementation of IGenerationContext.
This is used to only generate and compute these context implementations when any node in the graph actually uses them.
RingBufferFilter<T>
Uses a queue to Shift: For every enqueued value, dequeue is called until the maxSampleCount is reached.
Route
The base class for routes.
RouteFromAddresses
Calls the specified Holoride.ElasticSDK.IRequest to query a route between two or more addresses.
RouteGeometryBender
Bends the given renderer and collision mesh along the route spline, after it got spawned by a RouteIntervalSpawner.
RouteSegments
A route segment defining spawn intervals.
RouteTraveller
Controls the movement of the GameObject along the route.
RuntimeInitializeAfterSingletonsMethodAttribute
SensorDataInterpolator
Utility class used to interpolate sensor data e.g. when data frequency is too low for the current frame rate, which may result in stutters otherwise.
ServiceStateReceiverBackend
Connector for receiving localization data the holoride service.
SharedGeoCoordinate
A SharedGeoCoordinate that can be used to synchronize pivot depending objects.
Singleton<T>
SingletonBase
SparseCellDataStructure<TSourceKey, TDataValue>
An hierarchical dataValue structure to store dataValues.
SpawnCandidate
A spawn candidate is asynchronously created on every terrain update covering the full extents of the TerrainCanvas. As the player gets closer to the candidate than the extents of the spawner, the actual GameObject is instantiated. By deriving from this class, information can be passed from the DefinePoses to the CreateObject method of the Spawner.
SpawnCandidateStructure<TSource>
An hierarchical data structure to store spawn candidates.
SpawnerWorker
The base class to spawn objects.
Spline
A spline class to provide infinitesimal pose information on a path defined by discrete positions.
StateReceiver
This is the central data source for localization data and any other data provided by StateReceiverBackends.
StateReceiverBackend
Backend implementation for the StateReceiver.
Implementations of this class represent connections to actual underlying data sources for vehicle localization etc. These may either we be annotated with StateReceiverBackendAttribute to be automatically added to the StateReceiver, or can be added via the inspector.
StateReceiverBackendAttribute
Implementations of StateReceiverBackend annotated with this attribute will be made available in the StateReceiver. Alternatively, providers can be manually assigned in the StateReceiver.
StateReceiverBackendSelector
Manages the StateReceiverBackend assigned to CurrentBackend.
StateReceiverEventListenerAdapter
StateRecorder
Utility component that can be used to record state received by StateReceiverBackends into a file that may later be used for playing the state back using the ReplayStateReceiverBackend. Recording is automatically stopped when the component is disabled.
StringUnityEvent
TerrainCanvas
Once it is created by the ElasticSceneGenerator the TerrainCanvas takes care of all the different steps, that need to be done to create the terrain. Traversing over all filter trees to evaluate and generate the height-, texture- and spawnArea maps and creating the actual Terrain out of precomputed terrainData.
TerrainGenerationSettings
Contains immutable data that cannot be changed during the whole generation loop regarding terrain specific features.
TerrainGenerationState
The GenerationContext extension for terrain-related generation.
TickBasedMeshPool
This class provides a pool of meshes that assumes most meshes are requested when needed and all are returned after being used.
TileAreaDescription
Manages the distribution of tiles of a certain zoom level within the given bounds.
TileDataCache
Utilities for interacting with the application's tiled data cache.
TileDataCacheFormatVersionAttribute
TileDataManager<T>
Manages the loading and unloading of data tiles.
TileDataService
TileDataService<T>
Downloads and caches tiles to the hard drive.
TileDataServiceConfiguration
Groups configuration values passed to TileDataService<T> instances used when running a Pipeline. Different configuration values may be used in a regular pipeline run versus tests, editor tooling and so on.
TileDataServiceConfigurationUtils
TileImageServiceRoadMask
Downloads RoadMask tiles and deserializes them into textures.
TileTextureManager
The base class of a TileTextureManager holds all important information about the tiles that should get downloaded. Resulting from the zoom level and the tile position it creates the correct key to download the correct tile.
TypeCacheSingleton
TypeExtensions
UniTaskUtils
Utility calls to workaround some UniTask inconveniences.
Utils
A collection of useful functions without a specific object context.
Vector3Extensions
Various extension methods for the Vector3 type.
WorkerGroupAttribute
Allows grouping workers into named groups.
This is used to limit the maximum count of some particular node type in graphs, for example.
WorldShiftManager
This class moves all transforms generated by the ElasticSceneGenerator, under any listed Holoride.ElasticSDK.WorldShiftManager.ShiftParents as well as the Player towards the center of the coordinate system.
This shift is mandatory to prevent floating point inaccuracies when moving along real world localization data that is mapped to engine units.
WorldShiftManager.OriginShiftEvent
Implements a special case of a UnityEvent as a OriginShiftEvent. The first template argument is the shift vector all objects are moved along.
Structs
GeoCoordinate
Stores latitude, longitude and altitude of a geo coordinate and performs conversion to cartesian.
GlobalBounds
Creates min and max latitude and longitude to define an area. Mind that this area is not a square or a rectangle on the earth surface. However, smaller areas which are closer to the equator approximate a rectangular shape.
GlobalPose
Stores a position with double precision and a look rotation.
GlobalPosition
A vector3 representation that supports double precision.
Holofile.Record
Single record of a .holo file.
Interval
Defines an interval.
SpeedSegment
Segments along the route defined by the distance and speed category.
TravelInformationState
The TravelInformation state contains information based on the current location and route driven such as the estimated time to arrival.
VehicleSensorState
The data obtained by the vehicle sensors.
Interfaces
IContextProvider
Contract of MonoBehaviours that act as context providers.
Context providers offer a means of flexibly registering additional context types with systems that execute Pipelines, such as the Elastic Scene Generator.
Workers may indicate that they require a specific context using the RequireGenerationContextAttribute. If a context provider is using the ContextProviderAttribute, it will may be automatically added to systems that execute Pipelines requiring the context they provide.
IElasticObjectPoolSettings
IExecutionPriority
IGenerationContext
The interface to extend the GenerationContext from other modules.
IGenerationState
The interface to extend the GenerationState from other modules.
IPatternDescriptor<T>
The interface to define a PatternDescriptor for pattern recognition.
IPipelineAssembler
Assembles a pipeline and connects depending input workers.
IPipelineContainer
Can be implemented by MonoBehaviors to provide a Pipeline for external use, e.g. to show respective node previews.
IPipelineNode
A node that generates a PipelineWorker.
IPipelineWorker
An interface to define an element of a pipeline with its lifecycle methods and Inputs.
IPrefabInstantiationProvider
Contract for a prefab instantiation strategy.
Implementations of this interface must be MonoBehaviours attached to the ElasticSceneGenerator and provide a PrefabInstantiationContext to the pipeline to be used by IPipelineWorkers that need to instantiate prefabs.
IPreprocessingGenerationContext
Specialization of IGenerationContext with callbacks for (asynchronous) initialization prior to a Pipeline run.
IRecenterOffsetManagerBackend
Platform specific implementation details of the RecenterOffsetManager.
IReplayStream
A IReplayStream allows iterating over an underlying Replay implementation in a well-defined manner.
ISettingsProvider
Contract of MonoBehaviours that act as settings providers.
Settings providers offer a means of flexibly registering additional setting extensions with the GenerationSettings used in a Pipeline.
ISharedGeoCoordinate
A shared GeoCoordinate that can be used to synchronize pivot depending objects.
IShiftParent
IStateReceiverListener
IStateReceiverLocalizationEventListener
ITileDataProvider<T>
Defines an interface to request tile data.
ITileDataService<T>
Downloads and caches tiles to the hard drive.
Enums
DataRegion
LoadResourceResult
The type of a resource load operation.
LocalizationMode
Maneuver.ActionType
Defines the different actions of a maneuver.
Maneuver.DirectionType
Defines the different directions of a maneuver.
RasterizationUtils.DrawStyle
SpeedCategory
Major speed categories.
StateReceiverBackendAttribute.Platform
StateReceiverInitializationError
Error states that may occur during StateReceiver initialization, typically while connecting to a required service.
StateReceiverState
The possible global states of the StateReceiver.
VehicleLocalizationStatus
Different types of vehicle localization state.
Delegates
SparseCellDataStructure<TSourceKey, TDataValue>.DataValueToCellKeyDelegate
The function delegate to convert a dataValue into a cell key.
SpawnCandidateStructure<TSource>.PositionToCellKeyDelegate
The function delegate to convert a position into a cell key.
StateReceiver.BackendChangedHandler
Event handler for the OnBackendChanged event. Takes a StateReceiverBackend argument.