2 using System.Collections.Generic;
13 double _logicDelay = 0;
14 double remainingDelay = 0;
84 get {
return _logicDelay; }
88 remainingDelay = (
Owner == null ) ? 0 : value;
108 if (
Owner == null )
return 0;
109 if ( obj1 == null )
return 1;
110 if ( obj2 == null )
return -1;
114 double diff = Math.Abs( d1 - d2 );
116 if (
CurrentTarget == obj1 && diff < changeTargetDistance )
return -1;
117 if (
CurrentTarget == obj2 && diff < changeTargetDistance )
return 1;
119 return d1.CompareTo( d2 );
152 for (
int i = 0; i < targets.Length; i++)
156 else if (targets[i] is
string)
157 TagsToFollow.Add((
string)targets[i]);
159 throw new ArgumentException(
string.Format(
"Target type not recognized: {0} ({1})", targets[i].ToString(), targets[i].GetType().Name));
163 private void SelectTarget()
169 foreach ( var obj
in layer.Objects )
188 private void SetTargetPosition(
double dt )
200 if ( physTarget != null )
214 if ( dt <= 0 )
return;
216 remainingDelay -= dt;
223 SetTargetPosition( dt );
224 remainingDelay =
Delay;
233 if ( !
double.IsNaN( realDist.
Magnitude ) && !
double.IsInfinity( realDist.
Magnitude ) )
240 bool targetFar = Math.Abs( distance ) >
DistanceFar;
241 if ( targetClose && TargetClose != null )
TargetClose();
248 ( (PhysicsObject)
Owner ).Stop();
272 ( (PhysicsObject)
Owner ).Stop();
static readonly Brain None
Tyhjät aivot, eivät sisällä mitään toiminnallisuutta.
double Magnitude
Vektorin pituus.
Angle Angle
Kulma radiaaneina.
double Delay
Viive seuraamislogiikassa. Oletuksena nolla (seuraa reaaliajassa)
Comparison< IGameObject > FollowComparer
Metodi, joka vertailee kahta oliota keskenään. Kumpi olio tulee ensimmäiseksi, sitä seurataan...
Comparison< IGameObject > CreateDistanceComparer(double changeTargetDistance)
Luo FollowComparer-vertailijan, jolla aivot seuraavat aina lähintä oliota.
Yhteinen rajapinta kaikille fysiikkaolioille.
FollowerBrain(params object[] targets)
Luo aivot ja asettaa ne seuraamaan yhtä tai useampaa kohdetta.
Aivot, joiden tehtävänä on laittaa omistajansa seuraamaan jotakin kohdetta.
DoubleMeter DistanceToTarget
Etäisyys lähimpään kohteeseen.
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Aivoluokka peliolioille. Voidaan käyttää tekoälyn ja tilannekohtaisten toimintamallien luomiseen peli...
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
override void Update(Time time)
Kutsutaan, kun tilaa päivitetään. Suurin osa päätöksenteosta tapahtuu täällä.
bool TurnWhileMoving
Käännytäänkö siihen suuntaan mihin liikutaan.
Yleiset liikkumiseen tarkoitetut aivot.
SynchronousList< Layer > Layers
Kerrokset, joilla pelioliot viihtyvät.
Peliluokka reaaliaikaisille peleille.
Action TargetClose
Tapahtuma, joka suoritetaan, kun ollaan tarpeeksi lähellä seurattavaa.
bool StopWhenTargetClose
Pysähdytäänkö, kun ollaan lähellä kohdetta.
Brain FarBrain
Aivot, joita käytetään näiden sijasta kun ollaan kaukana kaikista kohteista, esim. RandomMoverBrain
double Height
Kentän korkeus.
Level Level
Aktiivinen kenttä.
FollowerBrain()
Luo aivot.
static double Distance(Vector p1, Vector p2)
Etäisyys kahden pisteen välillä.
double Width
Kentän leveys.
Yhteinen rajapinta kaikille peliolioille.
double DistanceFar
Etäisyys, jolloin ollaan kaukana kohteesta ja lopetetaan sen seuraaminen.
static Time Time
Peliaika. Sisältää tiedon siitä, kuinka kauan peliä on pelattu (Time.SinceStartOfGame) ja kuinka kaua...
List< string > TagsToFollow
Tagit, joita seurataan.
List< IGameObject > ObjectsToFollow
Oliot, joita seurataan.
Brain CloseBrain
Aivot, joita käytetään näiden sijasta kun ollaan lähellä kohdestta
IGameObject Owner
Aivojen haltija.
double DistanceClose
Etäisyys, jolloin ollaan lähellä kohdetta.
void Move(Vector direction)
IGameObject CurrentTarget
Olio, jota parhaillaan seurataan.