Class SpatialHashEnvironment<TEntity>
Represents the spatial hash environment for a grid-based
index with exploration, movement and lookup.
This class provides all base functionality with provided
properties and the initialization of the index.
Inheritance
System.Object
SpatialHashEnvironment<TEntity>
Implements
System.IDisposable
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Assembly: Mars.Components.dll
Syntax
public sealed class SpatialHashEnvironment<TEntity> : AbstractEnvironment, IEnvironment<TEntity>, IEnvironment, IModelObject, IDisposable where TEntity : IPositionable, IEntity
Type Parameters
Name |
Description |
TEntity |
The type to store within the index. |
Constructors
|
Improve this Doc
View Source
SpatialHashEnvironment(Double, Double, Boolean, Int32)
Creates a spatial hash grid environment without boundaries and the centre specified by the
and
Declaration
public SpatialHashEnvironment(double dimensionX, double dimensionY, bool withBoundaries = false, int cellSize = 1)
Parameters
Type |
Name |
Description |
System.Double |
dimensionX |
The X axes of this grid environment |
System.Double |
dimensionY |
The Y axes of this grid environment |
System.Boolean |
withBoundaries |
Indicates whether this environment has boundaries
specified by the dimensions
|
System.Int32 |
cellSize |
The size of each grid cell, Default is 1 |
Exceptions
Type |
Condition |
System.ArgumentException |
cannot be negative
cannot be negative
cannot be zero or negative
|
Properties
|
Improve this Doc
View Source
CellSize
The size of each grid cell covering the passed radius for exploration.
Declaration
public int CellSize { get; }
Property Value
Type |
Description |
System.Int32 |
|
|
Improve this Doc
View Source
Centre
The centre point of this environment
Declaration
public Position Centre { get; }
Property Value
|
Improve this Doc
View Source
CheckBoundaries
Gets or sets the flag to check for boundaries of this environment
and repositioning of entities if they try to move outside
the desired
DimensionX and
DimensionY.
Declaration
public bool CheckBoundaries { get; set; }
Property Value
Type |
Description |
System.Boolean |
|
|
Improve this Doc
View Source
DimensionX
The extension and maximum x-position of this environment.
Declaration
public int DimensionX { get; }
Property Value
Type |
Description |
System.Int32 |
|
|
Improve this Doc
View Source
DimensionY
The extension and maximum y-position of this environment.
Declaration
public int DimensionY { get; }
Property Value
Type |
Description |
System.Int32 |
|
|
Improve this Doc
View Source
Entities
All managed entities of type within this environment.
Declaration
public IEnumerable<TEntity> Entities { get; }
Property Value
Type |
Description |
System.Collections.Generic.IEnumerable<TEntity> |
|
|
Improve this Doc
View Source
GridHeight
Gets the amount of grid cell in y-direction
Declaration
public int GridHeight { get; }
Property Value
Type |
Description |
System.Int32 |
|
|
Improve this Doc
View Source
GridWidth
Gets the amount of grid cell in x-direction
Declaration
public int GridWidth { get; }
Property Value
Type |
Description |
System.Int32 |
|
|
Improve this Doc
View Source
IsDiscretizePosition
Gets or sets the flag indicating whether the environment
should discretize the (x,y) position coordinate or should keep it continuous.
Declaration
public bool IsDiscretizePosition { get; set; }
Property Value
Type |
Description |
System.Boolean |
|
Methods
|
Improve this Doc
View Source
Dispose()
Performs application-defined tasks associated with freeing,
releasing, or resetting unmanaged resources.
Declaration
|
Improve this Doc
View Source
Explore(Position, Double, Int32, Func<TEntity, Boolean>)
Represents the spatial hash environment for a grid-based
index with exploration, movement and lookup.
This class provides all base functionality with provided
properties and the initialization of the index.
Declaration
public IEnumerable<TEntity> Explore(Position position = null, double radius = -1, int count = -1, Func<TEntity, bool> predicate = null)
Parameters
Type |
Name |
Description |
Position |
position |
|
System.Double |
radius |
|
System.Int32 |
count |
|
System.Func<TEntity, System.Boolean> |
predicate |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<TEntity> |
|
|
Improve this Doc
View Source
Explore(Double, Double, Double, Int32, Func<TEntity, Boolean>)
Queries the environment for entities of type from a specified position in form
of a 2D coordinate (x,y). The query can be restricted by optional passed query limit and the radius to lookup.
Also the lookup in up-/downwards or in right/leftwards can be configured.
Declaration
public IEnumerable<TEntity> Explore(double x, double y, double radius = -1, int count = -1, Func<TEntity, bool> predicate = null)
Parameters
Type |
Name |
Description |
System.Double |
x |
The outgoing x coordinate. |
System.Double |
y |
The outgoing y coordinate. |
System.Double |
radius |
Optional radius interpreted as euclidean coordinate distance. |
System.Int32 |
count |
Optional limit of entities to query. |
System.Func<TEntity, System.Boolean> |
predicate |
Optional predicate which will be applied during query execution
to filter out entities matching a specific condition.
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<TEntity> |
Returns a collection of distance-based ordered entities of type . |
|
Improve this Doc
View Source
Explore(Double[], Double, Int32, Func<TEntity, Boolean>)
Represents the spatial hash environment for a grid-based
index with exploration, movement and lookup.
This class provides all base functionality with provided
properties and the initialization of the index.
Declaration
public IEnumerable<TEntity> Explore(double[] position, double radius = -1, int count = -1, Func<TEntity, bool> predicate = null)
Parameters
Type |
Name |
Description |
System.Double[] |
position |
|
System.Double |
radius |
|
System.Int32 |
count |
|
System.Func<TEntity, System.Boolean> |
predicate |
|
Returns
Type |
Description |
System.Collections.Generic.IEnumerable<TEntity> |
|
|
Improve this Doc
View Source
Insert(TEntity)
Inserts an positionable entity into the environment defined by their
Declaration
public bool Insert(TEntity entity)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to passionate. |
Returns
Type |
Description |
System.Boolean |
Returns True if the entity was successfully inserted |
|
Improve this Doc
View Source
InsertExplicit(TEntity)
Inserts an entity
explicitly into environment so that when it is not boundary conform.
The nearest edge position will be calculated and the agent will be set directly there.
Declaration
public bool InsertExplicit(TEntity entity)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to insert |
Returns
Type |
Description |
System.Boolean |
Returns true when the entity was successfully inserted. |
|
Improve this Doc
View Source
IntersectionPoints(Double, Double, Double, Double)
Find the coordinates where the line y=mx+b intersects the edges of the environment.
Declaration
public ISet<double[]> IntersectionPoints(double sourceX, double sourceY, double targetX, double targetY)
Parameters
Type |
Name |
Description |
System.Double |
sourceX |
The x coordinate of the source for the intersection ray. |
System.Double |
sourceY |
The y coordinate of the source for the intersection ray. |
System.Double |
targetX |
The x coordinate of the target for the intersection ray. |
System.Double |
targetY |
The y coordinate of the target for the intersection ray. |
Returns
Type |
Description |
System.Collections.Generic.ISet<System.Double[]> |
Returns a set of intersection points between the source and target |
|
Improve this Doc
View Source
IntersectionPoints(Double[], Double[])
Find the coordinates where the line y=mx+b intersects the edges of the environment.
Declaration
public ISet<double[]> IntersectionPoints(double[] source, double[] target)
Parameters
Type |
Name |
Description |
System.Double[] |
source |
Source point of the ray |
System.Double[] |
target |
Target point of the ray |
Returns
Type |
Description |
System.Collections.Generic.ISet<System.Double[]> |
the points of intersection |
|
Improve this Doc
View Source
MoveTo(TEntity, Position, Double, Func<Double[], Boolean>)
Moves an
entity
to the destination of type
Position along an optimal ray path with
minimal costs. Note that his method does not guarantee to reach the destination.
Declaration
public Position MoveTo(TEntity entity, Position position, double travellingDistance = 0, Func<double[], bool> predicate = null)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to move. |
Position |
position |
The target destination coordinate. |
System.Double |
travellingDistance |
The distance to move |
System.Func<System.Double[], System.Boolean> |
predicate |
The predicate along the movement which need to be valid or null |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
MoveTo(TEntity, Double, Double, Double, Func<Double[], Boolean>)
Moves an entity
to the destination along an optimal ray path with
minimal costs. Note that his method does not guarantee to reach the destination.
Declaration
public Position MoveTo(TEntity entity, double x, double y, double travellingDistance = 0, Func<double[], bool> predicate = null)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to move |
System.Double |
x |
The x coordinate of the destination. |
System.Double |
y |
The y coordinate of the destination. |
System.Double |
travellingDistance |
The distance to move |
System.Func<System.Double[], System.Boolean> |
predicate |
The predicate along the movement which need to be valid or null |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
MoveTo(TEntity, Double[], Double, Func<Double[], Boolean>)
Moves an entity
to destination along an optimal path with
minimal costs. Note that his method does not guarantee to reach the destination.
Declaration
public Position MoveTo(TEntity entity, double[] position = null, double travellingDistance = 0, Func<double[], bool> predicate = null)
Parameters
Type |
Name |
Description |
TEntity |
entity |
|
System.Double[] |
position |
The discrete position target |
System.Double |
travellingDistance |
The distance to move |
System.Func<System.Double[], System.Boolean> |
predicate |
The predicate along the movement which need to be valid or null |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
MoveTowards(TEntity, DirectionType, Double)
Moves an entity
the travelling distance distanceToPass
towards the direction
with a fixed bearing.
Declaration
public Position MoveTowards(TEntity entity, DirectionType direction, double distanceToPass = 1)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to move |
DirectionType |
direction |
One of the eight direction on a 2D plane, including diagonal |
System.Double |
distanceToPass |
The distance units to pass. |
Returns
Type |
Description |
Position |
Returns the new position of the
entity
or null if no positioning happened.
|
|
Improve this Doc
View Source
MoveTowards(TEntity, Double, Double)
Moves an entity
the travelling distance distanceToPass
towards the bearing
direction.
Declaration
public Position MoveTowards(TEntity entity, double bearing, double distanceToPass = 0)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity to move |
System.Double |
bearing |
The bearing in degree in value range 0-360 |
System.Double |
distanceToPass |
The distance units to pass. |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
PosAt(TEntity, Double, Double)
Moves an entity
to the desired destination.
Declaration
public Position PosAt(TEntity entity, double x, double y)
Parameters
Type |
Name |
Description |
TEntity |
entity |
the object to move |
System.Double |
x |
The x coordinate of the destination. |
System.Double |
y |
The y coordinate of the destination. |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
PosAt(TEntity, Double[])
Set the entity
exactly at the desired position without any movement actions.
Declaration
public Position PosAt(TEntity entity, double[] position)
Parameters
Type |
Name |
Description |
TEntity |
entity |
the object to move |
System.Double[] |
position |
The coordinates of the position to position to |
Returns
Type |
Description |
Position |
Returns the new position of the entity > or null if no positioning happened. |
|
Improve this Doc
View Source
Remove(TEntity)
Removes the entity item from the environment at the defined
Position
over the
IPositionable implementation of
entity
.
Declaration
public bool Remove(TEntity entity)
Parameters
Type |
Name |
Description |
TEntity |
entity |
The entity and position to remove |
Returns
Type |
Description |
System.Boolean |
Returns True if the entity was successfully removed |
|
Improve this Doc
View Source
Reset()
Clear the whole environment and each environment related information.
Declaration
Implements
System.IDisposable
Extension Methods