Show / Hide Table of Contents

Class Animal

Inheritance
System.Object
Tickable
Organism
Animal
Implements
IPredator
ITickable
System.IComparable
IBehaviorControlled
INetTrafficCategory
ICanTakeDamage
IPrey
INetObjectPosition
INetObject
IPositionAndBounds
System.IDisposable
Inherited Members
Organism.BornTime
Organism.YieldPercent
Organism.GrowthPercent
Organism.ClientBasedGrowthPercent
Organism.Dead
Organism.DeadType
Organism.Alive
Tickable.CompareTo(Object)
Tickable.IsReady()
Tickable.QueueHandle
Namespace: Eco.Simulation.Agents
Assembly: Eco.Simulation.dll
Syntax
public abstract class Animal : Organism, IPredator, ITickable, IComparable, IBehaviorControlled, INetTrafficCategory, ICanTakeDamage, IPrey, INetObjectPosition, INetObject, IPositionAndBounds, IDisposable

Constructors

Animal(AnimalSpecies, Vector3, Boolean)

Declaration
protected Animal(AnimalSpecies species, Vector3 pos, bool corpse = false)
Parameters
Type Name Description
AnimalSpecies species
System.Numerics.Vector3 pos
System.Boolean corpse

Fields

AiTarget

Declaration
public AITarget AiTarget
Field Value
Type Description
AITarget

AngerLevelToAttack

Declaration
public const float AngerLevelToAttack = 4F
Field Value
Type Description
System.Single

DefaultChanceToStopFleeing

Declaration
public const float DefaultChanceToStopFleeing = 0.55F
Field Value
Type Description
System.Single

DefaultFleeDuration

Declaration
public const double DefaultFleeDuration = 5
Field Value
Type Description
System.Double

Destroyed

Declaration
public readonly ThreadSafeAction<Animal> Destroyed
Field Value
Type Description
ThreadSafeAction<Animal>

DoNotContinueToWanderMemory

Declaration
public const string DoNotContinueToWanderMemory = "DoNotContinueToWander"
Field Value
Type Description
System.String

EarlyTickDistance

Declaration
public const float EarlyTickDistance = 4F
Field Value
Type Description
System.Single

FleePosition

Declaration
public Vector3 FleePosition
Field Value
Type Description
System.Numerics.Vector3

FleeTarget

Declaration
public INetObjectPosition FleeTarget
Field Value
Type Description
INetObjectPosition

FleeTargetDistance

Declaration
public const float FleeTargetDistance = 15F
Field Value
Type Description
System.Single

FleeThreshold

Declaration
public const float FleeThreshold = 100F
Field Value
Type Description
System.Single

Floating

Declaration
public bool Floating
Field Value
Type Description
System.Boolean

IsAnimalKilledMemory

Declaration
public const string IsAnimalKilledMemory = "IsAnimalKilled"
Field Value
Type Description
System.String

IsPlayerAttackedMemory

Declaration
public const string IsPlayerAttackedMemory = "IsPlayerAttacked"
Field Value
Type Description
System.String

LayToFleeTime

Declaration
public const float LayToFleeTime = 0.5F
Field Value
Type Description
System.Single

MaxAlertness

Declaration
public const float MaxAlertness = 255F
Field Value
Type Description
System.Single

PredatorAlertRate

Declaration
public const float PredatorAlertRate = 50F
Field Value
Type Description
System.Single

Prey

Declaration
public IPrey Prey
Field Value
Type Description
IPrey

RunOrAttackMemory

Declaration
public const string RunOrAttackMemory = "RunOrAttack"
Field Value
Type Description
System.String

ShouldFleeTillMemory

Declaration
public const string ShouldFleeTillMemory = "ShouldFleeTill"
Field Value
Type Description
System.String

TriesToUnStuckMemory

Declaration
public const string TriesToUnStuckMemory = "TriesToUnStuck"
Field Value
Type Description
System.String

WakeUpAlertness

Declaration
public const float WakeUpAlertness = 50F
Field Value
Type Description
System.Single

Properties

Active

Declaration
public bool Active { get; }
Property Value
Type Description
System.Boolean

Alertness

Declaration
public float Alertness { get; set; }
Property Value
Type Description
System.Single

Anger

Declaration
public float Anger { get; set; }
Property Value
Type Description
System.Single

AttachedEntities

Declaration
public List<NetEntity> AttachedEntities { get; set; }
Property Value
Type Description
System.Collections.Generic.List<NetEntity>

BaseVelocity

Declaration
public Vector3 BaseVelocity { get; }
Property Value
Type Description
System.Numerics.Vector3

Bounds

Declaration
public Rect Bounds { get; }
Property Value
Type Description
Rect

Brain

Declaration
public Brain Brain { get; set; }
Property Value
Type Description
Brain

CanInterruptMovement

Declaration
public bool CanInterruptMovement { get; }
Property Value
Type Description
System.Boolean

Controller

Declaration
public INetObjectViewer Controller { get; set; }
Property Value
Type Description
INetObjectViewer

DebugData

Declaration
public BehaviorDebugData DebugData { get; set; }
Property Value
Type Description
BehaviorDebugData

DesiredSpeed

Declaration
public float DesiredSpeed { get; }
Property Value
Type Description
System.Single

DestinationReachTime

Declaration
public float DestinationReachTime { get; }
Property Value
Type Description
System.Single

DetectionRange

Declaration
public float DetectionRange { get; }
Property Value
Type Description
System.Single

FacingDir

Declaration
public Vector3 FacingDir { get; }
Property Value
Type Description
System.Numerics.Vector3

GroundPosition

Declaration
public Vector3 GroundPosition { get; }
Property Value
Type Description
System.Numerics.Vector3

Health

Declaration
public float Health { get; }
Property Value
Type Description
System.Single

Hunger

Declaration
public float Hunger { get; set; }
Property Value
Type Description
System.Single

ID

Declaration
public int ID { get; }
Property Value
Type Description
System.Int32

IsStunned

Declaration
public bool IsStunned { get; set; }
Property Value
Type Description
System.Boolean

LastUpdated

Declaration
public double LastUpdated { get; }
Property Value
Type Description
System.Double

LayerHomePos

Declaration
public Vector2i LayerHomePos { get; set; }
Property Value
Type Description
Vector2i

Memory

Declaration
public IDictionary<string, object> Memory { get; }
Property Value
Type Description
System.Collections.Generic.IDictionary<System.String, System.Object>

MinimumNextTick

Declaration
public double MinimumNextTick { get; set; }
Property Value
Type Description
System.Double

NetObjectCreationRealtime

Declaration
public double NetObjectCreationRealtime { get; set; }
Property Value
Type Description
System.Double

NetTrafficCategory

Declaration
public string NetTrafficCategory { get; }
Property Value
Type Description
System.String

NextTick

Declaration
public override double NextTick { get; set; }
Property Value
Type Description
System.Double
Overrides
Tickable.NextTick

Position

Declaration
public sealed override Vector3 Position { get; set; }
Property Value
Type Description
System.Numerics.Vector3
Overrides
Organism.Position

RemainingPathTime

Declaration
public float RemainingPathTime { get; }
Property Value
Type Description
System.Single

RouteDestination

Declaration
public Nullable<Vector3> RouteDestination { get; }
Property Value
Type Description
System.Nullable<System.Numerics.Vector3>

ShouldSleep

Declaration
public virtual (bool, string) ShouldSleep { get; }
Property Value
Type Description
System.ValueTuple<System.Boolean, System.String>

Species

Declaration
public AnimalSpecies Species { get; }
Property Value
Type Description
AnimalSpecies

StartTime

Declaration
public double StartTime { get; }
Property Value
Type Description
System.Double

State

Declaration
public AnimalState State { get; }
Property Value
Type Description
AnimalState

Target

Declaration
public Nullable<Vector3> Target { get; }
Property Value
Type Description
System.Nullable<System.Numerics.Vector3>

UpdateChannel

Declaration
public NetworkChannel UpdateChannel { get; }
Property Value
Type Description
NetworkChannel

Visible

Declaration
public bool Visible { get; }
Property Value
Type Description
System.Boolean

WorldHomePos

Declaration
public override Vector2i WorldHomePos { get; }
Property Value
Type Description
Vector2i
Overrides
Organism.WorldHomePos

Methods

AlertNearbyAnimals(Vector3, Single, Single)

Apply special cases for running from a dangerous place

Declaration
public static void AlertNearbyAnimals(Vector3 position, float range, float alertness = 150F)
Parameters
Type Name Description
System.Numerics.Vector3 position
System.Single range
System.Single alertness

Attack()

Declaration
public void Attack()

BehaviorDo(String)

Declaration
public void BehaviorDo(string behName)
Parameters
Type Name Description
System.String behName

BehaviorPause(Boolean)

Declaration
public void BehaviorPause(bool paused)
Parameters
Type Name Description
System.Boolean paused

BehaviorStep()

Declaration
public void BehaviorStep()

ChangeState(AnimalState, Single, Boolean)

Declaration
public BTResult ChangeState(AnimalState state, float duration, bool stopMovement)
Parameters
Type Name Description
AnimalState state
System.Single duration
System.Boolean stopMovement
Returns
Type Description
BTResult

CheckAndConsumeDoNotContinueToWanderFlag()

Declaration
public bool CheckAndConsumeDoNotContinueToWanderFlag()
Returns
Type Description
System.Boolean

ClearRoute()

Make full stop for an animal and clear route

Declaration
public void ClearRoute()

Damage(Single)

Apply some damage to the animal - if it dies, return true.

Declaration
public bool Damage(float amount)
Parameters
Type Name Description
System.Single amount
Returns
Type Description
System.Boolean

DesiredDirection(Single)

Declaration
public Vector3 DesiredDirection(float lookAhead)
Parameters
Type Name Description
System.Single lookAhead
Returns
Type Description
System.Numerics.Vector3

Destroy()

Declaration
public override void Destroy()
Overrides
Tickable.Destroy()

Dispose()

Declaration
public void Dispose()

Dispose(Boolean)

Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type Name Description
System.Boolean disposing

FleeFrom(Vector3, Double, Boolean)

Declaration
public virtual void FleeFrom(Vector3 position, double fleeDuration = 5, bool forceTick = false)
Parameters
Type Name Description
System.Numerics.Vector3 position
System.Double fleeDuration
System.Boolean forceTick

FleeFromImmediately(Vector3, Double)

Declaration
public BTStatus FleeFromImmediately(Vector3 position, double fleeDuration = 5)
Parameters
Type Name Description
System.Numerics.Vector3 position
System.Double fleeDuration
Returns
Type Description
BTStatus

ForceTick()

Forces NextTick, usually as reaction on an event. Only updates if NextTick planned for latter time. Otherwise because ticks processed by queue by updating time it may be moved latter in processing queue.

Declaration
public void ForceTick()

GetDirectionHome()

Declaration
public Vector2 GetDirectionHome()
Returns
Type Description
Vector2

GetFleeDirection()

Returns direction from FleePosition to current animal position.

Declaration
public Vector3 GetFleeDirection()
Returns
Type Description
System.Numerics.Vector3

GetFleeDirectionWithChanceToStopFleeing(Single)

Declaration
public Vector3 GetFleeDirectionWithChanceToStopFleeing(float chanceToStopFleeing = 0.55F)
Parameters
Type Name Description
System.Single chanceToStopFleeing
Returns
Type Description
System.Numerics.Vector3

GetObservedLevel()

Calculates animal observer level using ObservationLevel(Vector3, Single) function.

Declaration
public float GetObservedLevel()
Returns
Type Description
System.Single

IsNotRelevant(INetObjectViewer)

Declaration
public bool IsNotRelevant(INetObjectViewer viewer)
Parameters
Type Name Description
INetObjectViewer viewer
Returns
Type Description
System.Boolean

IsRelevant(INetObjectViewer)

Declaration
public bool IsRelevant(INetObjectViewer viewer)
Parameters
Type Name Description
INetObjectViewer viewer
Returns
Type Description
System.Boolean

IsUpdated(INetObjectViewer)

Declaration
public bool IsUpdated(INetObjectViewer viewer)
Parameters
Type Name Description
INetObjectViewer viewer
Returns
Type Description
System.Boolean

Kill()

Declaration
public void Kill()

KillAndDestroy()

Destroy animal entity completely from client request

Declaration
public void KillAndDestroy()

LookAt(Vector3i)

Declaration
public void LookAt(Vector3i lookAtPos)
Parameters
Type Name Description
Vector3i lookAtPos

LookAt(INetObjectPosition)

Declaration
public void LookAt(INetObjectPosition objectPosition)
Parameters
Type Name Description
INetObjectPosition objectPosition

ObstacleAvoidance(Vector3, Boolean)

Try avoid dynamic obstacles in front of us. Forced flag allows to recalculate path even if animal already fleeing from some position.

Declaration
public void ObstacleAvoidance(Vector3 obstaclePosition, bool forced)
Parameters
Type Name Description
System.Numerics.Vector3 obstaclePosition
System.Boolean forced

OnPickup()

Declaration
protected void OnPickup()

OnPredatorDetected(IPredator, Single)

Declaration
public virtual void OnPredatorDetected(IPredator predator, float distance)
Parameters
Type Name Description
IPredator predator
System.Single distance

OnPreyDetected(IPrey)

Declaration
public virtual void OnPreyDetected(IPrey newprey)
Parameters
Type Name Description
IPrey newprey

ReceiveInitialState(BSONObject)

Declaration
public virtual void ReceiveInitialState(BSONObject bsonObj)
Parameters
Type Name Description
BSONObject bsonObj

ReceiveUpdate(BSONObject)

Declaration
public virtual void ReceiveUpdate(BSONObject bsonObj)
Parameters
Type Name Description
BSONObject bsonObj

RemoveController()

Declaration
public void RemoveController()

SendInitialState(BSONObject, INetObjectViewer)

Declaration
public void SendInitialState(BSONObject obj, INetObjectViewer viewer)
Parameters
Type Name Description
BSONObject obj
INetObjectViewer viewer

SendUpdate(BSONObject, INetObjectViewer)

Declaration
public void SendUpdate(BSONObject obj, INetObjectViewer viewer)
Parameters
Type Name Description
BSONObject obj
INetObjectViewer viewer

SetController(INetObjectViewer, INetObjectViewer)

Thread safe controller setter which checks for old viewer before replace with new viewer.

Declaration
public void SetController(INetObjectViewer newViewer, INetObjectViewer oldViewer)
Parameters
Type Name Description
INetObjectViewer newViewer
INetObjectViewer oldViewer

SetFleePositionAndDuration(Vector3, Double)

Sets flee position and duration which should initiate actual flee behavior.

Declaration
public void SetFleePositionAndDuration(Vector3 position, double duration)
Parameters
Type Name Description
System.Numerics.Vector3 position
System.Double duration

SetMemory(String, Object)

Only call this from the simulation thread to keep memory simple

Declaration
public void SetMemory(string name, object memory)
Parameters
Type Name Description
System.String name
System.Object memory

SetRoute(Route, AnimalState, Nullable<Vector3i>, Single)

Set the route of the animal, making sure to change the state and update the next tick based on the distance and speed. Returns needed time to finish the path

Declaration
public float SetRoute(Route route, AnimalState state, Nullable<Vector3i> look = null, float delay = 0F)
Parameters
Type Name Description
Route route
AnimalState state
System.Nullable<Vector3i> look
System.Single delay

Start of the route is delayed by this number of seconds by adding them to initial rotation time.

Returns
Type Description
System.Single

ShouldFlee()

Declaration
public bool ShouldFlee()
Returns
Type Description
System.Boolean

ShouldFlee(Behavior<Animal>)

Declaration
public virtual bool ShouldFlee(Behavior<Animal> beh)
Parameters
Type Name Description
Behavior<Animal> beh
Returns
Type Description
System.Boolean

ShouldFleeUs(IPrey)

Declaration
public bool ShouldFleeUs(IPrey prey)
Parameters
Type Name Description
IPrey prey
Returns
Type Description
System.Boolean

ShouldPredatorAttack(IPredator)

Declaration
public bool ShouldPredatorAttack(IPredator predator)
Parameters
Type Name Description
IPredator predator
Returns
Type Description
System.Boolean

StopFlee()

Declaration
public void StopFlee()

Stun(Boolean)

Declaration
public void Stun(bool isStunned)
Parameters
Type Name Description
System.Boolean isStunned

Tick()

Declaration
public override void Tick()
Overrides
Tickable.Tick()

TryDamage(INetObject, Single)

Tries to make damage to animal. Returns false if animal can't take damage (already dead).

Declaration
public bool TryDamage(INetObject source, float amount)
Parameters
Type Name Description
INetObject source
System.Single amount
Returns
Type Description
System.Boolean

Implements

IPredator
ITickable
System.IComparable
IBehaviorControlled
INetTrafficCategory
ICanTakeDamage
IPrey
INetObjectPosition
INetObject
IPositionAndBounds
System.IDisposable

Extension Methods

AnimalAIUtils.LyingDown(Animal)
AnimalAIUtils.OnFlatGround(Animal)
☀
☾
In This Article
Back to top
Copyright (c) Strange Loop Games 2021
☀
☾