31 using Microsoft.Xna.Framework;
33 using Microsoft.Xna.Framework.Graphics;
34 using System.Collections.Generic;
45 private List<GameObject> followedObjects = null;
48 internal bool _stayInLevel =
false;
50 internal double _zoomFactor = 1.0;
75 Position =
new Vector( value, Position.
Y );
90 Position =
new Vector( Position.
X, value );
100 get {
return _zoomFactor; }
101 set { _zoomFactor = value; }
109 get {
return _stayInLevel; }
110 set { _stayInLevel = value; }
225 public void Zoom(
double zoom )
250 if ( gameobjects.Length == 0 )
return;
251 if ( gameobjects.Length == 1 )
258 followedObjects =
new List<GameObject>( gameobjects );
289 if ( followedObjects != null )
291 followedObjects = null;
298 private void updateAvgPoint()
318 ZoomTo( bottomLeft.
X, bottomLeft.
Y, topRight.
X, topRight.
Y );
346 private void doZoomToAllObjects(
double borderSize )
359 public void ZoomTo(
double left,
double bottom,
double right,
double top )
361 ZoomTo( left, bottom, right, top, 0 );
364 internal void ZoomTo(
double left,
double bottom,
double right,
double top,
double borderSize )
368 double width = right - left;
369 double height = top - bottom;
371 Position =
new Vector( left + width / 2, bottom + height / 2 );
373 if ( ( width / height ) >= ( screenWidth / screenHeight ) )
374 this.
ZoomFactor = screenWidth / ( width + borderSize );
376 this.
ZoomFactor = screenHeight / ( height + borderSize );
402 internal void Update(
Time time )
412 if ( followedObjects != null ) updateAvgPoint();
428 double screenAspectRatio = screenWidth / screenHeight;
429 double levelAspectRatio = level.
Width / level.
Height;
434 double viewAreaWidth = screenWidth /
ZoomFactor;
435 double viewAreaHeight = screenHeight /
ZoomFactor;
437 if ( zoomedWidth < screenWidth || zoomedHeight < screenHeight )
442 if ( ( Position.
X - ( viewAreaWidth / 2 ) ) < level.
Left )
444 Position.
X = level.
Left + ( viewAreaWidth / 2 );
446 else if ( Position.
X + ( viewAreaWidth / 2 ) > level.
Right )
448 Position.
X = level.
Right - ( viewAreaWidth / 2 );
451 if ( Position.
Y - ( viewAreaHeight / 2 ) < level.
Bottom )
453 Position.
Y = level.
Bottom + ( viewAreaHeight / 2 );
455 else if ( Position.
Y + ( viewAreaHeight / 2 ) > level.
Top )
457 Position.
Y = level.
Top - ( viewAreaHeight / 2 );
void FollowY(params GameObject[] gameobjects)
Seuraa jotakin peliobjektia Y- eli pystysuunnassa.
void ZoomToAllObjects(double borderSize)
Zoomaa ja sijoittaa kameran siten, että kaikki pelioliot ovat yhtäaikaa näkyvissä.
Vector WorldToScreen(Vector point, Layer layer)
Muuntaa annetun pisteen maailmankoordinaateista ruutukoordinaatteihin ottaen huomioon oliokerroksen s...
static void DoNextUpdate(Action action)
Suorittaa aliohjelman seuraavalla päivityksellä.
double X
Olion paikan X-koordinaatti.
double X
Kameran paikan X-koordinaatti.
Vector RelativeTransition
Kuinka paljon tämän kerroksen olioiden paikka muuttuu kameran siirtyessä suhteessa muihin kerroksiin...
double Y
Olion paikan Y-koordinaatti.
Vector ScreenToWorld(Vector point, Layer layer)
Muuntaa annetun pisteen ruutukoordinaateista maailmankoordinaatteihin ottaen huomioon oliokerroksen s...
double Top
Kentän yläreunan y-koordinaatti.
void ZoomTo(double left, double bottom, double right, double top)
Zoomaa ja sijoittaa kameran niin, että parametreina annettua alue näkyy kokonaan ruudulla.
void Follow(params GameObject[] gameobjects)
Seuraa yhtä tai useampaa peliobjektia.
void Move(Vector v)
Kohdistaa kameran.
double Bottom
Suorakaiteen alareunen Y
void Reset()
Resetoi kameran (keskittää, laittaa zoomin oletusarvoon ja lopettaa seuraamisen). ...
double ZoomFactor
Kameran zoomauskerroin. Oletuksena 1.0. Mitä suurempi zoomauskerroin, sitä lähempänä kamera on (esim ...
BoundingRectangle FindObjectLimits()
Laskee pienimmän alueen, jonka sisälle kaikki kentän oliot mahtuvat.
void FollowX(params GameObject[] gameobjects)
Seuraa jotakin peliobjektia X- eli vaakasuunnassa.
double Right
Suorakaiteen oikean reunan X
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
void Zoom(double zoom)
Zoomaa.
static readonly Vector Zero
Nollavektori.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Kamera. Määrittää mikä osa pelitasosta on kerralla näkyvissä.
bool FollowsY
Seurataanko oliota (FollowedObject) y- eli pystysuunnassa.
double Height
Näytön korkeus y-suunnassa.
Vector FollowOffset
Jos kamera seuraa oliota, tällä voi säätää missä kohtaa ruutua pelaaja näkyy. Toisin sanoen ruutukoor...
bool StayInLevel
Jos tosi, kamera ei mene koskaan kentän ulkopuolelle.
void ZoomTo(BoundingRectangle rectangle)
double FollowYMargin
Jos kamera seuraa useita olioita, tällä voi säätää kuinka paljon ylä- ja alareunaan jätetään tyhjää t...
Pelikenttä, johon voi lisätä olioita. Kentällä voi myös olla reunat ja taustaväri tai taustakuva...
double Left
Suorakaiteen vasemman reunan X
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Vector Position
Kameran sijainti.
bool IgnoresZoom
Jättää kameran zoomin huomiotta jos asetettu.
Peliluokka reaaliaikaisille peleille.
double Top
Suorakaiteen yläreunan Y
double Bottom
Kentän alareunan y-koordinaatti.
Kerros. Vastaa olioiden piirtämisestä.
double Height
Kentän korkeus.
bool FollowsX
Seurataanko oliota (FollowedObject) x- eli vaakasuunnassa.
Level Level
Aktiivinen kenttä.
void ZoomToLevel(double borderSize)
Zoomaa ja keskittää kameran siten, että koko kenttä on näkyvissä kerralla. Tällöin kamera ei seuraa m...
void ZoomTo(Vector bottomLeft, Vector topRight)
Zoomaa ja sijoittaa kameran niin, että parametreina annettua alue näkyy kokonaan ruudulla.
override void Destroy()
Tuhoaa olion. Tuhottu olio poistuu pelistä.
double Width
Kentän leveys.
double Y
Kameran paikan Y-koordinaatti.
Vector Velocity
Kameran liikkumisnopeus.
double FollowXMargin
Jos kamera seuraa useita olioita, tällä voi säätää kuinka paljon vasempaan ja oikeaan reunaan jätetää...
void StopFollowing()
Lopettaa olio(iden) seuraamisen.
GameObject FollowedObject
Olio, jota kamera seuraa. Jos null, mitään oliota ei seurata.
double Right
Kentän oikean reunan x-koordinaatti.
void ZoomTo(BoundingRectangle rectangle, double borderSize)
Vector WorldToScreen(Vector point)
Muuntaa annetun pisteen maailmankoordinaateista ruutukoordinaatteihin.
double Width
Näytön leveys x-suunnassa.
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
Vector ScreenToWorld(Vector point)
Muuntaa annetun pisteen ruutukoordinaateista maailmankoordinaatteihin.
void ZoomToLevel()
Zoomaa ja keskittää kameran siten, että koko kenttä on näkyvissä kerralla.
virtual Vector Position
Olion paikka. Jos olio on jonkun toisen peliolion lapsi, paikka on suhteessa tämän vanhempaan (Parent...
static Vector ComponentProduct(Vector a, Vector b)
Kertoo kaksi vektoria komponenteittain.
double Left
Kentän vasemman reunan x-koordinaatti.