You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
12 KiB
XML
227 lines
12 KiB
XML
2 years ago
|
<?xml version="1.0"?>
|
||
|
<doc>
|
||
|
<assembly>
|
||
|
<name>Steering.core</name>
|
||
|
</assembly>
|
||
|
<members>
|
||
|
<member name="T:Steering.IAgentCharacteristics">
|
||
|
<summary>
|
||
|
Defines the basic reactive behavior of an Agent
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.IAgentCharacteristics.PreferredSpeed">
|
||
|
<summary>
|
||
|
[GET / SET] The preferred speed of the agent.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.IAgentCharacteristics.MaxSpeed">
|
||
|
<summary>
|
||
|
[GET] The maximum speed of the agent.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="M:Steering.IAgentCharacteristics.CalculateVelocityCost(Steering.Agent,Duality.Vector2,System.Single)">
|
||
|
<summary>
|
||
|
Calculates the "cost" of a given velocity which are used to decide which velocity an agent should actually
|
||
|
choose. There are multiple things this method needs to consider:
|
||
|
<list type="bullet">
|
||
|
<listheader>
|
||
|
<term>Target</term>
|
||
|
<description>Where does the agent want to move to?</description>
|
||
|
</listheader>
|
||
|
<listheader>
|
||
|
<term>Speed</term>
|
||
|
<description>How fast does the agent want to travel?</description>
|
||
|
</listheader>
|
||
|
<listheader>
|
||
|
<term>Time of impact</term>
|
||
|
<description>There are velocities which will lead to collisions with obstacles in the future</description>
|
||
|
</listheader>
|
||
|
<listheader>
|
||
|
<term>Side</term>
|
||
|
<description>It's often usful to prefer a "side" on which an agent avoids obstacles because it can help to reduce oscillations</description>
|
||
|
</listheader>
|
||
|
</list>
|
||
|
Based on those the function should calculate the cost for a given velocity. To to this it should somehow combine different weighted scores.
|
||
|
</summary>
|
||
|
<param name="agent">The agent for which the cost should be evaluated</param>
|
||
|
<param name="sampleVelocity">The velocity which should be evaluated</param>
|
||
|
<param name="toiPenality">
|
||
|
Normalized time of impact (between 0 and 1) for the velocity. A value of 0 means we are already colliding
|
||
|
and a value of 1 means that a collision will occure earliest at the <see cref="P:Steering.Agent.ToiHorizon" />.
|
||
|
</param>
|
||
|
<returns>The cost for the given velocity which should be between 0 and 1</returns>
|
||
|
</member>
|
||
|
<member name="T:Steering.Agent">
|
||
|
<summary>
|
||
|
An agent is the basic component you want to attach to computer-controlled characters.
|
||
|
It contains functionallity to avoid collisions with other agents/obstacles and tries
|
||
|
to get to some defined target-location. The avoidance is only local therefore it's
|
||
|
possible that the agent get stuck in local minima. For more complex navigation you
|
||
|
need a high-level pathfinding layer on top of the local avoidance.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.TargetVel">
|
||
|
<summary>
|
||
|
[GET / SET] The Agents target velocity, i.e. the one which it tries to acquire.
|
||
|
This is a convenience property that automatically sets <see cref="P:Steering.Agent.TargetSpeed"/> and
|
||
|
<see cref="P:Steering.Agent.Target"/> to the appropriate values.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.TargetPos">
|
||
|
<summary>
|
||
|
[GET / SET] The Agents target velocity, i.e. the one which it tries to acquire.
|
||
|
This is a convenience property that automatically sets <see cref="P:Steering.Agent.TargetSpeed"/> and
|
||
|
<see cref="P:Steering.Agent.Target"/> to the appropriate values.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.TargetSpeed">
|
||
|
<summary>
|
||
|
[GET / SET] The target speed this Agent attempts to acquire unless distracted by other Agents.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.Radius">
|
||
|
<summary>
|
||
|
[GET / SET] The radius of the agent (an agent is always representet as circle)
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.ToiHorizon">
|
||
|
<summary>
|
||
|
[GET / SET] The maximum time of impact wich the agent will react on.
|
||
|
If you set this too high your agent will oscillate alot in crowded situations and if you set
|
||
|
it too low your agent will avoid very late which looks artificial.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.Agent.SuggestedVel">
|
||
|
<summary>
|
||
|
[GET] The calculated velocity which the agent calculated as optimum.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.AdvancedAgentCharacteristics">
|
||
|
<summary>
|
||
|
Implementation of <see cref="T:Steering.IAgentCharacteristics"/> which offers parameters
|
||
|
which are closely related to the algorithms used. Those might be hard to
|
||
|
configure if one doens't have background knownledge about the implementation.
|
||
|
In that case you should use <see cref="T:Steering.DefaultAgentCharacteristics"/>.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.VelocityPreservationFactor">
|
||
|
<summary>
|
||
|
[GET/SET] Factor between 0 and 1 which defines how much velocity-consistency should be weighted
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.DirectionFactor">
|
||
|
<summary>
|
||
|
[GET/SET] Factor between 0 and 1 which defines how much the difference from the optimal direction should be weighted
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.SpeedFactor">
|
||
|
<summary>
|
||
|
[GET/SET] Factor between 0 and 1 which defines how much the difference from the optimal speed should be weighted
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.ToiFactor">
|
||
|
<summary>
|
||
|
[GET/SET] Factor between 0 and 1 which defines how much the time of impact with other obstacles should be weighted
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.ToiExponent">
|
||
|
<summary>
|
||
|
[GET/SET] Value between 0 and infinity which defines the exponent applied to the TOI-penality. Can be used to
|
||
|
make the agent avoid other obstacles earlier/later.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="P:Steering.AdvancedAgentCharacteristics.PreferredSpeed">
|
||
|
<summary>
|
||
|
[GET/SET] The speed which the agent should use if possible.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.DefaultAgentCharacteristics">
|
||
|
<summary>
|
||
|
Implementation of <see cref="T:Steering.IAgentCharacteristics"/> which offers parameters
|
||
|
which are intuitve for end users. The purpose of this implementation is to
|
||
|
hide implementation details as much as possible. If you need more control you can
|
||
|
either use <see cref="T:Steering.AdvancedAgentCharacteristics"/> or use a custom implementation.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.AgentAttributeTranslator">
|
||
|
<summary>
|
||
|
This Component assigns the objects RigidBody radius (taken from its first circle shape) directly to its
|
||
|
Agent radius, and applies the Agents suggested velocity back to the RigidBody. The sole purpose if this
|
||
|
Component is to visualize Agent behavior.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.Properties.SteeringResNames">
|
||
|
<summary>
|
||
|
This static class contains constant string representations of certain resource names.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.ISteeringTarget">
|
||
|
<summary>
|
||
|
This interface should but doesn't need to be used by implementations of <see cref="T:Steering.IAgentCharacteristics"/>.
|
||
|
It defines which directions of velocities an agent preferes aka in which direction is the target of the agent
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="M:Steering.ISteeringTarget.CalculateCost(Steering.Agent,Duality.Vector2)">
|
||
|
<summary>
|
||
|
Evaluates the cost function for a given velocity direction.
|
||
|
</summary>
|
||
|
<param name="agent">The agent for which the cost should be evaluated</param>
|
||
|
<param name="sampleDirection">
|
||
|
The direction for which the cost should be evaluated
|
||
|
This NOT the velocity but only the direction (vector is normalized) of it.
|
||
|
</param>
|
||
|
<returns>Cost for the given velocity which should be between 0 and 1</returns>
|
||
|
</member>
|
||
|
<member name="T:Steering.IVelocitySampler">
|
||
|
<summary>
|
||
|
Creates velocity samples which are going to get tested with <see cref="T:Steering.IAgentCharacteristics"/>.
|
||
|
If the samples are poorly chosen or if there are simply not enough samples the agent won't be able to
|
||
|
choose "good" velocities which lead to a bad steering quality. If on the other hand to many samples are
|
||
|
generated the performance will suffer because for every sample the agent needs to calculate time of imapacts
|
||
|
with obstacles.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="M:Steering.IVelocitySampler.Reset">
|
||
|
<summary>
|
||
|
This method is called in every time step for every agent before the sampling starts.
|
||
|
If your implementation is adaptive you should throw away your old state here and start over.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="M:Steering.IVelocitySampler.GetCurrentSample(Steering.Agent)">
|
||
|
<summary>
|
||
|
Get the current sample velocity. The implementation is free to use internal information gathered from
|
||
|
previous calls to <see cref="M:Steering.IVelocitySampler.SetCurrentCost(System.Single)"/>. You should make sure that your implementation
|
||
|
samples the zero-velocity.
|
||
|
</summary>
|
||
|
<returns>Velocity which should be evaluated</returns>
|
||
|
</member>
|
||
|
<member name="M:Steering.IVelocitySampler.SetCurrentCost(System.Single)">
|
||
|
<summary>
|
||
|
Feeds the evaluated cost back into the sampler. The cost value can be used to adapt and intelligent choose the next
|
||
|
velocities.
|
||
|
</summary>
|
||
|
<param name="cost">The cost which was returned from <see cref="M:Steering.IAgentCharacteristics.CalculateVelocityCost(Steering.Agent,Duality.Vector2,System.Single)"/>
|
||
|
with the current velocity as parameter
|
||
|
</param>
|
||
|
<returns>
|
||
|
<code>true</code> if more velocities should be sampled and <code>false</code> if
|
||
|
no new velocities should be sampled.
|
||
|
</returns>
|
||
|
</member>
|
||
|
<member name="T:Steering.BruteForceVelocitySampler">
|
||
|
<summary>
|
||
|
Simple brute force implementation of <see cref="T:Steering.IVelocitySampler"/>. Velocities are equally distributed in all directions
|
||
|
independent of the costs which are fed back.
|
||
|
</summary>
|
||
|
</member>
|
||
|
<member name="T:Steering.AdaptiveVelocitySampler">
|
||
|
<summary>
|
||
|
Samples velocities based on the velocity the agent chose. The sampling
|
||
|
density is higher velocities close to the last best velocity.
|
||
|
This reduces samples needed massively compared to <see cref="T:Steering.BruteForceVelocitySampler"/>
|
||
|
but can potentially lead to undesired behavior.
|
||
|
</summary>
|
||
|
</member>
|
||
|
</members>
|
||
|
</doc>
|