2 using System.Collections.Generic;
6 using Microsoft.Xna.Framework;
12 private string fpsText =
"00";
13 private int fpsSkipCounter;
14 private Canvas debugCanvas;
15 private Matrix canvasTransform = Matrix.Identity;
53 private void InitDebugScreen()
55 debugCanvas =
new Canvas();
90 private StringBuilder layerTextBuilder =
new StringBuilder();
91 private const string layerTextTitle =
"Layers:\n";
93 private void UpdateDebugScreen(
Time time )
103 if ( fpsSkipCounter++ > 10 )
111 layerTextBuilder.Clear();
112 layerTextBuilder.Append( layerTextTitle );
114 for (
int i =
Layers.FirstIndex; i <=
Layers.LastIndex; i++)
116 layerTextBuilder.Append(
"[" );
117 layerTextBuilder.Append( i );
118 layerTextBuilder.Append(
"]: " );
119 layerTextBuilder.Append(
Layers[i].Objects.Count );
120 layerTextBuilder.AppendLine();
127 private void DrawDebugScreen()
133 PaintDebugScreen( debugCanvas );
150 for (
int j = 0; j < vertexes.Length - 1; j++ )
152 double x1 = wmul * vertexes[j].
X;
153 double y1 = hmul * vertexes[j].Y;
154 double x2 = wmul * vertexes[j + 1].X;
155 double y2 = hmul * vertexes[j + 1].Y;
157 var t1 = Vector2.Transform(
new Vector2( (
float)x1, (
float)y1 ), transform );
158 var t2 = Vector2.Transform(
new Vector2( (
float)x2, (
float)y2 ), transform );
160 canvas.
DrawLine( t1.X, t1.Y, t2.X, t2.Y );
163 if ( vertexes.Length > 2 )
165 double x1 = wmul * vertexes[vertexes.Length - 1].X;
166 double y1 = hmul * vertexes[vertexes.Length - 1].Y;
167 double x2 = wmul * vertexes[0].X;
168 double y2 = hmul * vertexes[0].Y;
170 var t1 = Vector2.Transform(
new Vector2( (
float)x1, (
float)y1 ), transform );
171 var t2 = Vector2.Transform(
new Vector2( (
float)x2, (
float)y2 ), transform );
173 canvas.
DrawLine( t1.X, t1.Y, t2.X, t2.Y );
179 if ( obj.
Body == null || obj.
Body.Shape == null || obj.
Shape.Cache == null )
191 for (
int j = 0; j < vertexes.Length - 1; j++ )
193 double x1 = wmul * vertexes[j].
X;
194 double y1 = hmul * vertexes[j].Y;
195 double x2 = wmul * vertexes[j + 1].X;
196 double y2 = hmul * vertexes[j + 1].Y;
198 var t1 = Vector2.Transform(
new Vector2( (
float)x1, (
float)y1 ), transform );
199 var t2 = Vector2.Transform(
new Vector2( (
float)x2, (
float)y2 ), transform );
201 canvas.
DrawLine( t1.X, t1.Y, t2.X, t2.Y );
204 if ( vertexes.Length > 2 )
206 double x1 = wmul * vertexes[vertexes.Length - 1].X;
207 double y1 = hmul * vertexes[vertexes.Length - 1].Y;
208 double x2 = wmul * vertexes[0].X;
209 double y2 = hmul * vertexes[0].Y;
211 var t1 = Vector2.Transform(
new Vector2( (
float)x1, (
float)y1 ), transform );
212 var t2 = Vector2.Transform(
new Vector2( (
float)x2, (
float)y2 ), transform );
214 canvas.
DrawLine( t1.X, t1.Y, t2.X, t2.Y );
218 private void PaintDebugScreen(
Canvas canvas )
222 for (
int i =
Layers.FirstIndex; i <=
Layers.LastIndex; i++ )
224 foreach ( var obj
in Layers[i].Objects )
226 if ( obj == null || obj.Shape == null || obj.Shape.Cache == null || obj.Layer == null )
229 PaintShapeOutlines( canvas, obj );
232 PaintPhysicsOutlines( canvas, (PhysicsObject)obj );
Window FPSWindow
FPS-ikkuna.
Color Color
Väri, jonka värisenä olio piirretään, jos tekstuuria ei ole määritelty.
readonly Vector [] OutlineVertices
Ulkoreunan verteksit, lueteltuna vastapäivään.
override Shape Shape
Olion muoto.
bool DebugScreenVisible
Debug-ruutu näkyvissä / pois.
static new JypeliWindow Window
Ikkuna.
static Layer CreateStaticLayer()
Luo staattisen kerroksen (ei liiku kameran mukana)
static readonly Color LightGray
Vaalea harmaa.
double Right
Olion oikean reunan x-koordinaatti.
Angle AbsoluteAngle
Olion absoluuttinen kulma pelimaailmassa. Jos olio ei ole minkään toisen peliolion lapsiolio...
double Left
Olion vasemman reunan x-koordinaatti.
void DrawLine(Vector startPoint, Vector endPoint)
Piirtää janan.
double ZoomFactor
Kameran zoomauskerroin. Oletuksena 1.0. Mitä suurempi zoomauskerroin, sitä lähempänä kamera on (esim ...
void Begin(ref Matrix worldMatrix, Dimensional dimensionSource)
Layer DebugLayer
Debug-ruutukerros, joka näkyy kun painetaan F12. Voit lisätä olioita myös tälle kerrokselle.
override Vector Size
Olion koko pelimaailmassa. Kertoo olion äärirajat, ei muotoa.
ButtonState
Napin (minkä tahansa) asento.
Peliolio, joka noudattaa fysiikkamoottorin määräämiä fysiikan lakeja. Voidaan kuitenkin myös laittaa ...
bool DebugKeyEnabled
Debug-ruutu F12-näppäimestä päällä / pois.
TimeSpan SinceLastUpdate
Aika joka on kulunut viime päivityksestä.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
Kamera. Määrittää mikä osa pelitasosta on kerralla näkyvissä.
double Top
Olion yläreunan y-koordinaatti.
double Left
Näytön vasemman reunan x-koordinaatti.
SynchronousList< Layer > Layers
Kerrokset, joilla pelioliot viihtyvät.
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Peliluokka reaaliaikaisille peleille.
static readonly Color LightGreen
Vaalea vihreä.
Color BrushColor
Pensselin väri.
Label LayerDisplay
"Layers"-näyttö.
static readonly Color HotPink
Pinkki.
Keyboard Keyboard
Näppäimistö.
Kerros. Vastaa olioiden piirtämisestä.
double Radians
Palauttaa tai asettaa kulman radiaaneina.
static readonly Color Blue
Sininen.
double Top
Näytön yläreunan y-koordinaatti.
Body Body
Fysiikkamoottorin käyttämä tietorakenne.
virtual void OnObjectAdded(IGameObject obj)
Yhteinen rajapinta kaikille peliolioille.
void Add(IGameObject childObject)
Lisää annetun peliolion tämän olion lapseksi. Lapsiolio liikkuu tämän olion mukana, ja sen paikka ja koko ilmaistaan suhteessa tähän olioon.
Label FPSDisplay
FPS-näyttö.
double Right
Näytön oikean reunan x-koordinaatti.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
Window LayerWindow
"Layers"-ikkuna. Huom. asettaa kokonsa automaattisesti.
static readonly Color DarkRed
Tumma punainen.
Layer Layer
Kerros, jolle peliolio on lisätty.
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.
static readonly Color Salmon
Lohenpunainen.
Vector AbsolutePosition
Olion absoluuttinen paikka pelimaailmassa. Jos olio ei ole minkään toisen peliolion lapsiolio...
static readonly Color White
Valkoinen.
virtual void OnObjectRemoved(IGameObject obj)
abstract bool IsUnitSize
If true, the shape must be scaled by the size of the object that has the shape. Typically, an unit-sized object has width and height of 1.0.
double Height
Olion korkeus (Y-suunnassa, korkeimmassa kohdassa).