Polarith AI
1.8
RadiusSteeringBehaviour Class Reference

Description

This class extends the SteeringBehaviour through adding a kind of local perception model based on an InnerRadius and OuterRadius (back-end class).

Only the percepts lying between these radii are important for an agent. If this is not the case, StartSteering returns false and the percept is skipped. This improves performance because the computation-heavy parts of the inherited SteeringBehaviour.Behave are skipped, too. All derived RadiusSteeringBehaviour classes are intended to map the inherited SteeringBehaviour.ResultMagnitude accordingly to the position of the processed percept relative to the those two radii. The function for this mapping can be controlled via RadiusMapping.

Every derived RadiusSteeringBehaviour needs to implement the properties SteeringBehaviour.forEachPercept and SteeringBehaviour.forEachReceptor to determine if the corresponding methods SteeringBehaviour.PerceptSteering and SteeringBehaviour.ReceptorSteering are called within SteeringBehaviour.Behave. Usually, you might only want either SteeringBehaviour.PerceptSteering or SteeringBehaviour.ReceptorSteering to be called at once.

Besides the inherited references for quick data access of the SteeringBehaviour class, this class defines the following references for quick access to be used within the SteeringBehaviour.PerceptSteering and SteeringBehaviour.ReceptorSteering implementation in derived classes: startDirection, startMagnitude, sqrInnerRadius and sqrOuterRadius.

A RadiusSteeringBehaviour can be marked as thread-safe in its corresponding front-end class through setting AIMBehaviour.ThreadSafe to true. If you do this, be sure not to use reference types of the Unity scripting API and not to make any possibly unsafe variable writes. If at least one behaviour is not marked AIMBehaviour.ThreadSafe, the whole agent will not be part of the multithreading (Pro only).

Base back-end class of every derived AIMRadiusSteeringBehaviour.

Inheritance diagram for RadiusSteeringBehaviour:
SteeringBehaviour PerceptBehaviour< SteeringPercept > Adjust Arrive Avoid PlanarAvoid PlanarAvoidBounds PlanarSeekBounds Pursue Seek SeekBounds SeekNavMesh

Public Fields

float InnerRadius = 0.0f
 The minimum radius for considering percepts. More...
 
float OuterRadius = 20f
 The maximum radius for considering percepts. More...
 
MappingType RadiusMapping = MappingType.InverseLinear
 Determines how the startMagnitude is mapped according to the InnerRadius and OuterRadius. More...
 
Vector3 ResultDirection
 The direction vector used for obtaining objective values. More...
 
float ResultMagnitude
 The magnitude value used for obtaining objective values. More...
 
int TargetObjective
 Defines the objective for writing values. More...
 
float MagnitudeMultiplier = 1f
 Is multiplied to the ResultMagnitude in order to weight between different behaviours. More...
 
float SensitivityOffset
 Is added to the Structure.Sensitivity as threshold for writing objective values. More...
 
ValueWritingType ValueWriting = ValueWritingType.AssignGreater
 Sets the type for writing objective values. More...
 
LayerBlendingType LayerBlending = LayerBlendingType.None
 Sets the operation for blending the behaviour results into the context. More...
 
LayerNormalizationType LayerNormalization = LayerNormalizationType.None
 Sets the method for normalizing intermediate objective values while they are blended into the context. More...
 
MappingType ValueMapping = MappingType.InverseLinear
 Sets the mapping type for obtaining objective values. More...
 
bool UseSignificance = true
 Determines if the SteeringPercept.Significance (if there is a AIMSteeringTag) is multiplied to the ResultMagnitude in order to weight between different percepts. More...
 
bool UseSensorProjection = true
 If true, Sensor.ProjectionMode is used as VectorProjection. More...
 
VectorProjectionType VectorProjection = VectorProjectionType.None
 Sets the type for projecting the perceived vector data into a plane. More...
 
PresetVelocityType PresetVelocity = PresetVelocityType.None
 If the value is anything other than PresetVelocityType.None, a game object's rotation and default forward direction is used to approximate its actual velocity. More...
 
PredictionType Prediction = PredictionType.None
 If set to anything other than PredictionType.None, the position of the Self percept is updated according to the given velocity. More...
 
float PredictionMagnitude = 0.0f
 Scales the velocity vector used for predicting the possible future position of an agent if Prediction is set to PredictionType.PredictionMagnitude. More...
 
readonly IList< T > Percepts
 All percepts which are relevant for an agent. More...
 

Protected Fields

Vector3 startDirection
 Direction from the self position to the percept position (including distance magnitude). More...
 
float startMagnitude
 Magnitude obtained from mapping the percept position relative to InnerRadius and OuterRadius. More...
 
float sqrInnerRadius
 Squared InnerRadius. More...
 
float sqrOuterRadius
 Squared OuterRadius. More...
 
readonly SteeringPercept self = new SteeringPercept()
 The data of the associated agent itself (read only). More...
 
readonly SteeringPercept percept = new SteeringPercept()
 The data of the currently processed percept (read only). More...
 
IList< float > objective
 Quick access to the currently processed objective. More...
 
ISensor< Structuresensor
 Quick access to the currently processed sensor. More...
 
IReceptor< Structurereceptor
 Quick access to the currently processed receptor. More...
 
Structure structure
 Quick access to the currently processed structure. More...
 
Vector3 velocity = Vector3.forward
 The forward direction the agent moves towards and/or looks at by default. More...
 

Properties

abstract bool forEachPercept [get]
 Determines if PerceptSteering is called within Behave (read only). More...
 
abstract bool forEachReceptor [get]
 Determines if ReceptorSteering is called within Behave (read only). More...
 
override SteeringPercept Self [get, set]
 The data of the associated agent itself. More...
 

Public Methods

override void Behave ()
 This method executes the main context steering algorithm and is called within Context.Evaluate in order to set/modify objective values for the associated Context.Problem. More...
 

Protected Methods

override bool StartSteering ()
 Sets the startDirection and startMagnitude accordingly to the position of the processed percept relative to the InnerRadius and OuterRadius of this behaviour. More...
 
virtual void PerceptSteering ()
 This method gets called once for each processed percept. More...
 
virtual void ReceptorSteering ()
 This method gets called for each active shape receptor for each processed percept. More...
 
Imprint