31 using System.Collections.Generic;
38 public partial class GameObject
70 public override void MoveTo(
Vector location,
double speed, Action doWhenArrived )
72 if ( moveTimer == null )
74 moveTimer =
new Timer();
76 moveTimer.Interval = 0.01;
78 else if ( moveTimer.Enabled )
82 moveTarget = location;
83 arrivedAction = doWhenArrived;
92 if ( moveTimer != null )
101 if ( !moveTarget.HasValue )
108 double vt = moveSpeed * moveTimer.Interval;
112 Vector targetLoc = moveTarget.Value;
117 if ( arrivedAction != null )
126 private void AssertOscillators()
128 if ( oscillators == null )
148 Waveform waveform = (
Waveform)Activator.CreateInstance( typeof( WaveForm ),
new object[] { amplitude, frequency, phase, damping } );
149 oscillators.
Add(
new LinearOscillator(
this, axis, waveform ) );
160 public void Oscillate(
Vector axis,
double amplitude,
double frequency,
double phase = 0,
double damping = 0 )
165 oscillators.
Add(
new LinearOscillator(
this, axis, waveform ) );
181 Waveform waveform = (
Waveform)Activator.CreateInstance( typeof( WaveForm ),
new object[] { amplitude.Radians, frequency, 0, damping } );
182 oscillators.
Add(
new AngularOscillator(
this, direction, waveform ) );
197 oscillators.
Add(
new AngularOscillator(
this, direction, waveform ) );
205 throw new NotImplementedException();
void ClearOscillations()
Poistaa kaikki värähtelyt kappaleelta.
double Magnitude
Vektorin pituus.
override void MoveTo(Vector location, double speed, Action doWhenArrived)
Yrittää siirtyä annettuun paikkaan annetulla nopeudella. Laukaisee annetun aliohjelman, kun paikkaan on päästy.
Angle Angle
Kulma radiaaneina.
virtual void MoveToTarget()
void SetEquilibrium()
Asettaa uuden tasapainoaseman värähtelyille.
void OscillateAngle< WaveForm >(double direction, UnlimitedAngle amplitude, double frequency, double damping=0)
Laittaa kappaleen pyörimään edestakaisin tietyn aaltomuodon mukaisesti. Aaltomuotoa voi vaihtaa tyyppip...
void Oscillate(Vector axis, double amplitude, double frequency, double phase=0, double damping=0)
Laittaa kappaleen liikkumaan edestakaisin nykyisen paikkansa ympärillä tietyn akselin suuntaisesti...
bool IsUpdated
Tarvitseeko olio päivittämistä. Kun perit oman luokkasi tästä luokasta, aseta tämä arvoon true...
virtual void Move(Vector movement)
Siirtää oliota.
void Oscillate< WaveForm >(Vector axis, double amplitude, double frequency, double phase=0, double damping=0)
Laittaa kappaleen liikkumaan edestakaisin nykyisen paikkansa ympärillä tietyn akselin suuntaisesti...
virtual void Stop()
Pysäyttää kaiken liikkeen.
Ajastin, joka voidaan asettaa laukaisemaan tapahtumia tietyin väliajoin.
Rajoittamaton kulma (asteina ja radiaaneina). Tietoja kulmasta: http://en.wikipedia.org/wiki/File:Degree-Radian_Conversion.svg
void OscillateAngle(double direction, UnlimitedAngle amplitude, double frequency, double damping=0)
Laittaa kappaleen pyörimään edestakaisin.
Vector AbsolutePosition
Olion absoluuttinen paikka pelimaailmassa. Jos olio ei ole minkään toisen peliolion lapsiolio...
double Radians
Palauttaa tai asettaa kulman radiaaneina.
virtual Vector Position
Olion paikka. Jos olio on jonkun toisen peliolion lapsi, paikka on suhteessa tämän vanhempaan (Parent...
void StopMoveTo()
Pysäyttää MoveTo-aliohjelmalla aloitetun liikkeen.