2using System.Collections.Generic;
3using System.Runtime.CompilerServices;
4using Microsoft.Xna.Framework;
60 new Vector( -0.5f, -0.5f ),
70 TopLeft =
new Vector2( 0.0f, 0.0f ),
71 TopRight =
new Vector2( 1.0f, 0.0f ),
72 BottomLeft =
new Vector2( 0.0f, 1.0f ),
73 BottomRight =
new Vector2( 1.0f, 1.0f ),
157 else if (obj.
Image !=
null)
245 Effects.ForEach( e => e.Draw(worldMatrix) );
259 Vector topLeft = camera.ScreenToWorld(
new Vector( screen.Left, screen.Top ) );
260 Vector topRight = camera.ScreenToWorld(
new Vector( screen.Right, screen.Top ) );
261 Vector bottomLeft = camera.ScreenToWorld(
new Vector( screen.Left, screen.Bottom ) );
262 Vector bottomRight = camera.ScreenToWorld(
new Vector( screen.Right, screen.Bottom ) );
264 int horizontalCount = (int)Math.Ceiling( ( topRight.
X - topLeft.
X ) /
Grid.
CellSize.
X );
265 int leftmostLine = (int)Math.Ceiling( topLeft.
X /
Grid.
CellSize.
X );
268 for (
int i = 0; i < horizontalCount; i++ )
276 int verticalCount = (int)Math.Ceiling( ( topRight.
Y - bottomRight.
Y ) /
Grid.
CellSize.
Y );
277 int bottommostLine = (int)Math.Ceiling( bottomRight.
Y /
Grid.
CellSize.
Y );
280 for (
int i = 0; i < verticalCount; i++ )
285 if ( y == 0.0 ) y += 0.1;
308 Draw(o, ref worldMatrix);
319 if ( o1.
Image ==
null || o2.
Image ==
null )
return 0;
321 int hash1 = RuntimeHelpers.GetHashCode( o1.
Image );
322 int hash2 = RuntimeHelpers.GetHashCode( o2.
Image );
324 if ( hash1 == hash2 )
330 return RuntimeHelpers.GetHashCode( o1 ) - RuntimeHelpers.GetHashCode( o2 );
332 return hash1 - hash2;
353 bool hasChildObjects = o.ObjectCount > 0;
354 bool isSimple = !hasChildObjects && !o.TextureFillsShape;
364 Draw( o, ref worldMatrix );
382 Image previousImage =
null;
389 bool hasChildObjects = o.ObjectCount > 0;
390 bool isSimple = !hasChildObjects && !o.TextureFillsShape;
394 if ( isSimple && ( o.Image !=
null ) )
396 if ( !Object.ReferenceEquals( o.Image, previousImage ) )
403 previousImage = o.Image;
409 Draw( o, ref worldMatrix );
421 o.Draw( worldMatrix );
429 for (
int i = 0; i <
Objects.Count; i++ )
432 if ( go ==
null || go._childObjects ==
null || go is
Window )
435 if ( go.Shape.IsUnitSize )
439 drawChildren(go._childObjects);
442 for (
int j = 0; j < children.
Count; j++)
445 Draw(go, ref worldMatrix);
469 float left = (float)( -wx / 2 + 0.5 );
470 float right = (float)( wx / 2 + 0.5 );
471 float top = (float)( -wy / 2 + 0.5 );
472 float bottom = (float)( wy / 2 + 0.5 );
476 TopLeft =
new Vector2( left, top ),
477 TopRight =
new Vector2( right, top ),
478 BottomLeft =
new Vector2( left, bottom ),
479 BottomRight =
new Vector2( right, bottom ),
500 Vector2 newPosition = position +
new Vector2( ( topLeftX + x ) * newScale.X, ( topLeftY + y ) * newScale.Y );
531 vertices =
new Vector[] { };
532 indices =
new Int16[] { };
552 Matrix.CreateScale( scale.X, scale.Y, 1f )
553 *
Matrix.CreateRotationZ( rotation )
554 *
Matrix.CreateTranslation( position.X, position.Y, 0f )
555 * parentTransformation;
565 else if ( o.
Image !=
null )
578 result.AddRange(
Objects.GetObjectsAboutToBeAdded() );
System.Numerics.Vector2 Vector2
Kamera. Määrittää mikä osa pelitasosta on kerralla näkyvissä.
Vector Position
Kameran sijainti.
double ZoomFactor
Kameran zoomauskerroin. Oletuksena 1.0. Mitä suurempi zoomauskerroin, sitä lähempänä kamera on (esim ...
Järjestelmä partikkelien käsittelyyn
bool IsObjectOnScreen(IGameObject g)
Kertoo onko objekti ruudulla näkyvällä alueella.
Camera Camera
Kamera, joka näyttää ruudulla näkyvän osan kentästä. Kameraa voidaan siirtää, zoomata tai asettaa seu...
static Game Instance
Käynnissä olevan pelin pääolio.
static ScreenView Screen
Näytön dimensiot, eli koko ja reunat.
Pelialueella liikkuva olio. Käytä fysiikkapeleissä PhysicsObject-olioita.
SynchronousList< GameObject > _childObjects
Contains graphics resources.
static LineBatch LineBatch
static ShapeBatch ShapeBatch
static ImageBatch ImageBatch
Avustava luokka ruutukarttojen käsittelyyn. Lisää tämä olio Layerille, jos haluat viivat näkyviin.
Vector CellSize
Ruudun koko, oletuksena 10,10
Color Color
Ruudukon väri, oletuksena Color.Green
void Begin(ref Matrix matrix, Texture2D texture)
void Draw(TextureCoordinates c, Vector2 position, Vector2 size, float angle)
Kerros. Vastaa olioiden piirtämisestä.
static readonly Int16[] squareIndices
Indices for the vertex array of the square.
void DrawTexture(IGameObject o, ref Matrix parentTransformation)
void ObjectRemoved(IGameObject obj)
void Remove(IGameObject o)
Vector _relativeTransition
void DrawShape(IGameObject o, ref Matrix parentTransformation)
void DrawInOrderFromFirstToLast(ref Matrix worldMatrix)
static readonly Int16[] triangleIndices
Indices for the vertex array of the triangle.
SynchronousList< ParticleSystem > Effects
Kerroksen efektit
void DrawChildObjects(Matrix worldMatrix)
void DrawCustomDrawables(Matrix worldMatrix)
bool IgnoresZoom
Jättää kameran zoomin huomiotta jos asetettu.
static readonly Vector[] squareVertices
Vertices for drawing a filled square.
List< IGameObject > objectsWithDrawMethod
Vector RelativeTransition
Kuinka paljon tämän kerroksen olioiden paikka muuttuu kameran siirtyessä suhteessa muihin kerroksiin....
static readonly TextureCoordinates defaultCoords
List< IGameObject > objectsWithImage
void DrawGrid(ref Matrix matrix)
List< IGameObject > objectsWithoutImage
void ObjectAdded(IGameObject obj)
void ApplyChanges()
Instantly applies changes made to the layer's objects.
void Update(Time time)
Ajaa päivityksen kerroksen olioille ja efekteille
void Clear()
Tyhjentää kerroksen olioista
void DrawObjectsWithImages(Matrix worldMatrix)
static Layer CreateStaticLayer()
Luo staattisen kerroksen (ei liiku kameran mukana)
void DrawObjectsWithoutImages(Matrix worldMatrix)
SynchronousList< IGameObject > Objects
Kerroksen oliot
void Draw(IGameObject o, ref Matrix parentTransformation)
int CompareByImageReference(IGameObject o1, IGameObject o2)
static readonly Vector[] triangleVertices
Vertices for drawing a filled triangle.
Layer()
Muodostaa uuden kerroksen
bool IsUpdated
Ajetaanko kerrokselle päivitystä (Aina kyllä)
void DrawEfficientlyInNoParticularOrder(ref Matrix worldMatrix)
void GetObjectsAboutToBeAdded(List< IGameObject > result)
void Draw(Vector startPoint, Vector endPoint, Color color)
void Begin(ref Matrix matrix)
Luokka, joka sisältää metodeita kuvioiden ja tekstuurien piirtämiseen 2D-tasossa.
static void DrawShape(Shape shape, ref Matrix transformation, ref Matrix textureTransformation, Image texture, Vector textureWrapSize, Color color)
Piirtää kuvion niin, että tekstuuri täyttää sen.
static void DrawImage(Image texture, ref Matrix matrix, Vector wrapSize)
Piirtää kuvan
static bool LightingEnabled
Onko valaistus käytössä
void Begin(ref Matrix matrix)
void Draw(Vector[] vertices, Int16[] indices, Color color, Vector2 position, Vector2 size, float angle)
static readonly Rectangle Rectangle
Suorakulmio.
abstract bool IsUnitSize
If true, the shape must be scaled by the size of the object that has the shape. Typically,...
static readonly Triangle Triangle
Tasasivuinen kolmio.
Synkroninen lista, eli lista joka päivittyy vasta kun sen Update-metodia kutsutaan....
int Count
Kuinka monta elementtiä listassa nyt on. Ei laske mukaan samalla päivityskierroksella tehtyjä muutoks...
Rajapinta olioille, joilla on oma Draw-metodi.
Yhteinen rajapinta kaikille peliolioille.
Jypelin sisäiset metodit ja propertyt joihin käyttäjän ei tarvitse päästä käsiksi kuuluvat tÃ...
new Vector Position
Paikka.
Rajapinta päivittyville olioille.
DrawOrder
Piirtojärjestys.
@ FirstToLast
Oliot piirretään siinä järjestyksessä missä ne on lisätty peliin.
Microsoft.Xna.Framework.Matrix Matrix
double Radians
Palauttaa tai asettaa kulman radiaaneina.
Sisältää tiedon ajasta, joka on kulunut pelin alusta ja viime päivityksestä.
double Y
Vektorin Y-komponentti
static readonly Vector Zero
Nollavektori.
double X
Vektorin X-komponentti.
static readonly Vector Diagonal
Diagonaalivektori (1,1)