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

<?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="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="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="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>