39 public Surface(
double width,
double height )
47 this.heights =
new double[1] { height };
72 public Surface(
double width,
double min,
double max,
int points )
73 : this( width,
RandomGen.NextDoubleArray( Math.Max( min, 1.0f ), max, points ), 1.0 )
86 public Surface(
double width,
double min,
double max,
int points,
int maxchange )
87 : this( width,
RandomGen.NextDoubleArray( Math.Max( min, 1.0f ), max, points, maxchange ), 1.0 )
93 #region Static private methods for constructors
98 throw new Exception(
"At least two Y-points needed in order to create ground" );
100 throw new Exception(
"The heights must be positive and at least 1" );
108 double step = width / ( n - 1 );
113 double halfHeight = maxHeight / 2;
118 Vector bottomRight =
new Vector( width / 2, -halfHeight );
121 for (
int i = 0; i < n; i++ )
123 vertexes[i] =
new Vector( bottomRight.
X - ( i * step ), bottomRight.
Y );
126 double left = -width / 2;
129 for (
int i = 0; i < n; i++ )
146 double step = width / ( n - 1 );
148 Int16[] outlineIndices =
new Int16[n * 2];
150 for (
int i = 0; i < n * 2; i++ )
151 outlineIndices[i] = (Int16)i;
152 for (
int i = 0; i < n - 1; i++ )
154 triangles[2 * i] =
new IndexTriangle( i, 2 * n - i - 2, 2 * n - i - 1 );
155 triangles[2 * i + 1] =
new IndexTriangle( i, i + 1, 2 * n - i - 2 );
158 Vector[] outlineVertices =
new Vector[outlineIndices.Length];
159 for (
int i = 0; i < outlineIndices.Length; i++ )
160 outlineVertices[i] = vertexes[outlineIndices[i]];
162 return new Polygon(
new ShapeCache( vertexes, triangles, outlineIndices ),
false );
168 double minHeightDifference =
double.PositiveInfinity;
170 for (
int i = 0; i < n - 1; i++ )
173 if ( diff >
double.Epsilon && diff < minHeightDifference ) minHeightDifference = diff;
176 return minHeightDifference;
181 #region Factory methods
440 #region Public methods
452 double step =
Width / ( n - 1 );
455 double indexX = (
Width / 2 + x ) / step;
456 int lowerIndex = (int)Math.Floor( indexX );
457 int upperIndex = (int)Math.Ceiling( indexX );
459 if ( upperIndex >= n )
return Top;
463 double relX = (
Width / 2 + x ) % step;
478 double step =
Width / ( n - 1 );
481 double indexX = (
Width / 2 + x ) / step;
482 int lowerIndex = (int)Math.Floor( indexX );
483 int upperIndex = (int)Math.Ceiling( indexX );
486 if ( lowerIndex == upperIndex )
bool TextureFillsShape
Jos true, kuva piirretään niin, ettei se mene olion muodon ääriviivojen yli. Toisin sanoen kuva p...
double Top
Olion yläreunan y-koordinaatti.
double Bottom
Olion alareunan y-koordinaatti.
double Width
Olion leveys (X-suunnassa, leveimmässä kohdassa).
double Right
Olion oikean reunan x-koordinaatti.
Pelikenttä, johon voi lisätä olioita. Kentällä voi myös olla reunat ja taustaväri tai taustakuva.
double Top
Kentän yläreunan y-koordinaatti.
double Left
Kentän vasemman reunan x-koordinaatti.
double Right
Kentän oikean reunan x-koordinaatti.
double Width
Kentän leveys.
double Bottom
Kentän alareunan y-koordinaatti.
readonly Vector Center
Kentän keskipiste.
double Height
Kentän korkeus.
double GetBorderThickness()
Kappale joka noudattaa fysiikan lakeja, johon voi törmätä. Vaatii että käytössä on fysiikkapeli.
override Vector?? Position
void MakeStatic()
Tekee oliosta staattisen eli liikkumattoman.
Satunnaisgeneraattori. Luo satunnaisia arvoja, mm. lukuja, vektoreita sekä kulmia.
Sisältää valmiiksi lasketut kolmiot, joiden avulla piirtäminen on suoraviivaista.
Tasainen tai epätasainen pinta.
static Surface CreateBottom(Level level, double min, double max, int points)
Luo kentälle epätasaisen alareunan. Ei lisää reunaa automaattisesti kenttään.
double GetGroundHeight(double x)
Maanpinnan korkeus annetussa x-koordinaatissa
static Surface CreateTop(Level level, double min, double max, int points)
Luo kentälle epätasaisen yläreunan. Ei lisää reunaa automaattisesti kenttään.
static Polygon CreateRuggedShape(double width, double[] heights, double scale)
static Surface Create(Level level, Direction direction)
Luo kentälle tasaisen reunan. Ei lisää reunaa automaattisesti kenttään.
Surface(double width, double min, double max, int points)
Luo satunnaisen pinnan.
Vector GetGroundNormal(double x)
Maanpinnan normaalivektori annetulla x-koordinaatilla
static double GetMinHeightDifference(double[] heights)
static Surface CreateRight(Level level)
Luo kentälle tasaisen oikean reunan. Ei lisää reunaa automaattisesti kenttään.
static Surface Create(Level level, Direction direction, double min, double max, int points, int maxchange)
Luo kentälle epätasaisen reunan. Ei lisää reunaa automaattisesti kenttään.
static Vector[] CalculateVertexes(double width, double[] heights, double scale)
static double CalculateHeight(double[] heights, double scale)
static Surface Create(Level level, Direction direction, double min, double max, int points)
Luo kentälle epätasaisen reunan. Ei lisää reunaa automaattisesti kenttään.
Surface(double width, double min, double max, int points, int maxchange)
Luo satunnaisen pinnan.
static Surface CreateLeft(Level level, double min, double max, int points, int maxchange)
Luo kentälle epätasaisen vasemman reunan. Ei lisää reunaa automaattisesti kenttään.
void InitializeFlat(double height)
static Surface CreateTop(Level level)
Luo kentälle tasaisen yläreunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateRight(Level level, double min, double max, int points, int maxchange)
Luo kentälle epätasaisen oikean reunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateRight(Level level, double min, double max, int points)
Luo kentälle epätasaisen oikean reunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateTop(Level level, double min, double max, int points, int maxchange)
Luo kentälle epätasaisen yläreunan. Ei lisää reunaa automaattisesti kenttään.
void InitializeRugged(double[] heights, double scale)
static Surface CreateBottom(Level level, double min, double max, int points, int maxchange)
Luo kentälle epätasaisen alareunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateLeft(Level level, double min, double max, int points)
Luo kentälle epätasaisen vasemman reunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateBottom(Level level)
Luo kentälle tasaisen alareunan. Ei lisää reunaa automaattisesti kenttään.
static Surface CreateLeft(Level level)
Luo kentälle tasaisen vasemman reunan. Ei lisää reunaa automaattisesti kenttään.
static Polygon CreateShape(double width, double[] heights, Vector[] vertexes)
Surface(double width, double[] heights, double scale)
Helppo tapa lisätä kenttään epätasainen pinta. Pinta kuvataan luettelemalla Y-koordinaatteja vasemmal...
Surface(double width, double height)
Luo tasaisen pinnan.
Suuntakulma (rajoitettu -180 ja 180 asteen välille) asteina ja radiaaneina. Tietoja kulmasta: http://...
static readonly Angle RightAngle
Suora kulma (90 astetta).
static readonly Angle StraightAngle
Oikokulma (180 astetta).
static Angle ArcTan(double d)
Palauttaa kulman joka vastaa d:n arcus-tangentti.
static readonly Color ForestGreen
Metsänvihreä.
static Direction Up
Suunta ylös.
static Direction Right
Suunta oikealle.
static Direction Down
Suunta alas.
static Direction Left
Suunta vasemmalle.
Muotojen määrityksessä käytettävä kolmio.
double Y
Vektorin Y-komponentti
double X
Vektorin X-komponentti.
static readonly Vector UnitY
Pystysuuntainen yksikkövektori (pituus 1, suunta ylös).
static Vector FromLengthAndAngle(double length, double angle)
Luo vektorin pituuden ja kulman perusteella.