|
@@ -46,15 +46,15 @@ bool Model2DData::istPunktInnen( Vertex p, int polygonId ) const
|
|
|
if( p < minP || p > maxP || !polygons )
|
|
|
return 0;
|
|
|
int num = 0;
|
|
|
- auto outListP = outList.getIterator();
|
|
|
- for( auto polygon = polygons->getIterator(); polygon; polygon++, num++, outListP++ )
|
|
|
+ auto outListP = outList.begin();
|
|
|
+ for( auto polygon = polygons->begin(); polygon; polygon++, num++, outListP++ )
|
|
|
{
|
|
|
if( polygonId >= 0 && num != polygonId )
|
|
|
continue;
|
|
|
int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
bool c = 0;
|
|
|
int j = anz - 1;
|
|
|
- for( auto outListPP = outListP->getIterator(); outListPP; outListPP++ )
|
|
|
+ for( auto outListPP = outListP->begin(); outListPP; outListPP++ )
|
|
|
{
|
|
|
Punkt out = outListPP;
|
|
|
if( out.x < out.y && j > out.x && j < out.y )
|
|
@@ -62,11 +62,11 @@ bool Model2DData::istPunktInnen( Vertex p, int polygonId ) const
|
|
|
if( out.x > out.y && ( j > out.x || j < out.y ) )
|
|
|
j = out.x;
|
|
|
}
|
|
|
- auto point = polygon._.vertex->getIterator();
|
|
|
+ auto point = polygon._.vertex->begin();
|
|
|
for( int i = 0; i < anz; i++, point++ )
|
|
|
{
|
|
|
bool cont = 0;
|
|
|
- for( auto outListPP = outListP->getIterator(); outListPP; outListPP++ )
|
|
|
+ for( auto outListPP = outListP->begin(); outListPP; outListPP++ )
|
|
|
{
|
|
|
Punkt out = outListPP;
|
|
|
if( out.x < out.y && i > out.x && i < out.y )
|
|
@@ -404,15 +404,15 @@ bool Model2DData::calcHitPoint( Vertex pos, Vertex dir, const char *polygonName,
|
|
|
if( dir.x == 0 && dir.y == 0 )
|
|
|
return 0;
|
|
|
bool ret = 0;
|
|
|
- for( auto polygon = polygons->getIterator(); polygon; polygon++ )
|
|
|
+ for( Polygon2D polygon : *polygons )
|
|
|
{
|
|
|
- if( polygon._.name->istGleich( polygonName ) )
|
|
|
+ if( polygon.name->istGleich( polygonName ) )
|
|
|
{
|
|
|
- int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
+ int anz = polygon.vertex->getEintragAnzahl();
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
- Vertex a = polygon._.vertex->get( i );
|
|
|
- Vertex b = polygon._.vertex->get( ( i + 1 ) % anz );
|
|
|
+ Vertex a = polygon.vertex->get( i );
|
|
|
+ Vertex b = polygon.vertex->get( ( i + 1 ) % anz );
|
|
|
b -= a;
|
|
|
float offset = 0;
|
|
|
if( dir.y != 0 && dir.x != 0 )
|
|
@@ -440,9 +440,9 @@ bool Model2DData::calcHitPoint( Vertex pos, Vertex dir, const char *polygonName,
|
|
|
Vertex normal = b.CW90().normalize();
|
|
|
Vertex kNorm = Vertex( dir ).normalize();
|
|
|
moveSpeed = normal * ( normal * kNorm ) * dir.getLength();
|
|
|
- normal = ( point - *polygon._.schwerpunkt ).CW90().normalize();
|
|
|
+ normal = ( point - *polygon.schwerpunkt ).CW90().normalize();
|
|
|
Vertex rotKraft = normal * ( normal * kNorm ) * dir.getLength();
|
|
|
- rotSpeed = ( (float)sqrt( rotKraft.getLength() * ( point - *polygon._.schwerpunkt ).getLength() ) / 180.f ) * 3.14f * ( normal * kNorm );
|
|
|
+ rotSpeed = ( (float)sqrt( rotKraft.getLength() * ( point - *polygon.schwerpunkt ).getLength() ) / 180.f ) * 3.14f * ( normal * kNorm );
|
|
|
hitpoint = point;
|
|
|
if( isnan( moveSpeed.x ) || isnan( moveSpeed.y ) || isnan( rotSpeed ) )
|
|
|
return 0;
|
|
@@ -460,15 +460,15 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
Vertex originalDir = dir;
|
|
|
bool ret = 0;
|
|
|
int num = 0;
|
|
|
- for( auto polygon = polygons->getIterator(); polygon; polygon++, num++ )
|
|
|
+ for( Polygon2D polygon : *polygons )
|
|
|
{
|
|
|
- if( polygon._.name->istGleich( polygonName ) )
|
|
|
+ if( polygon.name->istGleich( polygonName ) )
|
|
|
{
|
|
|
while( istPunktInnen( pos, num ) )
|
|
|
{
|
|
|
pos -= dir;
|
|
|
}
|
|
|
- int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
+ int anz = polygon.vertex->getEintragAnzahl();
|
|
|
Vertex startPoint;
|
|
|
Vertex texturSP;
|
|
|
int leftI = 0;
|
|
@@ -476,13 +476,13 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
Vertex txtChpPix( 0, 0 );
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
- Vertex a = polygon._.vertex->get( i );
|
|
|
- Vertex b = polygon._.vertex->get( ( i + 1 ) % anz );
|
|
|
+ Vertex a = polygon.vertex->get( i );
|
|
|
+ Vertex b = polygon.vertex->get( ( i + 1 ) % anz );
|
|
|
b -= a;
|
|
|
if( ( txtChpPix.x == 0 || txtChpPix.y == 0 ) && b.x != 0 && b.y != 0 )
|
|
|
{
|
|
|
- Vertex ta = polygon._.tKordinaten->get( i );
|
|
|
- Vertex tb = polygon._.tKordinaten->get( ( i + 1 ) % anz );
|
|
|
+ Vertex ta = polygon.tKordinaten->get( i );
|
|
|
+ Vertex tb = polygon.tKordinaten->get( ( i + 1 ) % anz );
|
|
|
tb -= ta;
|
|
|
txtChpPix = Vertex( tb.x / b.x, tb.y / b.y );
|
|
|
}
|
|
@@ -501,22 +501,22 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
leftI = i;
|
|
|
rightI = ( i + 1 ) % anz;
|
|
|
startPoint = point;
|
|
|
- texturSP = polygon._.tKordinaten->get( i ) + ( polygon._.tKordinaten->get( ( i + 1 ) % anz ) - polygon._.tKordinaten->get( i ) ) * offset;
|
|
|
+ texturSP = polygon.tKordinaten->get( i ) + ( polygon.tKordinaten->get( ( i + 1 ) % anz ) - polygon.tKordinaten->get( i ) ) * offset;
|
|
|
}
|
|
|
ret = 1;
|
|
|
}
|
|
|
}
|
|
|
if( ret )
|
|
|
{
|
|
|
- partA.transparent = polygon._.transparent;
|
|
|
+ partA.transparent = polygon.transparent;
|
|
|
partA.schwerpunkt = new Vertex( 0, 0 );
|
|
|
partA.tKordinaten = new Array< Vertex >();
|
|
|
- partA.name = new Text( polygon._.name->getText() );
|
|
|
+ partA.name = new Text( polygon.name->getText() );
|
|
|
partA.vertex = new Array< Vertex >();
|
|
|
- partB.transparent = polygon._.transparent;
|
|
|
+ partB.transparent = polygon.transparent;
|
|
|
partB.schwerpunkt = new Vertex( 0, 0 );
|
|
|
partB.tKordinaten = new Array< Vertex >();
|
|
|
- partB.name = new Text( polygon._.name->getText() );
|
|
|
+ partB.name = new Text( polygon.name->getText() );
|
|
|
partB.vertex = new Array< Vertex >();
|
|
|
*partA.schwerpunkt += startPoint;
|
|
|
*partB.schwerpunkt += startPoint;
|
|
@@ -540,8 +540,8 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
{
|
|
|
if( i == leftI )
|
|
|
continue;
|
|
|
- Vertex a = polygon._.vertex->get( i );
|
|
|
- Vertex b = polygon._.vertex->get( ( i + 1 ) % anz );
|
|
|
+ Vertex a = polygon.vertex->get( i );
|
|
|
+ Vertex b = polygon.vertex->get( ( i + 1 ) % anz );
|
|
|
b -= a;
|
|
|
float offset1 = 0;
|
|
|
if( dir.y != 0 && dir.x != 0 )
|
|
@@ -569,20 +569,20 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
leftIE = i;
|
|
|
rightIE = ( i + 1 ) % anz;
|
|
|
startPoint = point;
|
|
|
- texturSP = polygon._.tKordinaten->get( i ) + ( polygon._.tKordinaten->get( ( i + 1 ) % anz ) - polygon._.tKordinaten->get( i ) ) * offset1;
|
|
|
+ texturSP = polygon.tKordinaten->get( i ) + ( polygon.tKordinaten->get( ( i + 1 ) % anz ) - polygon.tKordinaten->get( i ) ) * offset1;
|
|
|
}
|
|
|
ret = 1;
|
|
|
}
|
|
|
}
|
|
|
if( needOne && !ret )
|
|
|
{
|
|
|
- Vertex a = polygon._.vertex->get( bestI );
|
|
|
- Vertex b = polygon._.vertex->get( ( bestI + 1 ) % anz );
|
|
|
+ Vertex a = polygon.vertex->get( bestI );
|
|
|
+ Vertex b = polygon.vertex->get( ( bestI + 1 ) % anz );
|
|
|
b -= a;
|
|
|
leftIE = bestI;
|
|
|
rightIE = ( bestI + 1 ) % anz;
|
|
|
startPoint = a + ( b * bo1 );
|
|
|
- texturSP = polygon._.tKordinaten->get( bestI ) + ( polygon._.tKordinaten->get( ( bestI + 1 ) % anz ) - polygon._.tKordinaten->get( bestI ) ) * bo1;
|
|
|
+ texturSP = polygon.tKordinaten->get( bestI ) + ( polygon.tKordinaten->get( ( bestI + 1 ) % anz ) - polygon.tKordinaten->get( bestI ) ) * bo1;
|
|
|
ret = 1;
|
|
|
}
|
|
|
if( ret )
|
|
@@ -608,26 +608,26 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
i = i % anz;
|
|
|
if( i == leftI )
|
|
|
break;
|
|
|
- *partA.schwerpunkt += polygon._.vertex->get( i );
|
|
|
- partA.vertex->add( polygon._.vertex->get( i ) );
|
|
|
- partA.tKordinaten->add( polygon._.tKordinaten->get( i ) );
|
|
|
+ *partA.schwerpunkt += polygon.vertex->get( i );
|
|
|
+ partA.vertex->add( polygon.vertex->get( i ) );
|
|
|
+ partA.tKordinaten->add( polygon.tKordinaten->get( i ) );
|
|
|
}
|
|
|
- *partA.schwerpunkt += polygon._.vertex->get( leftI );
|
|
|
- partA.vertex->add( polygon._.vertex->get( leftI ) );
|
|
|
- partA.tKordinaten->add( polygon._.tKordinaten->get( leftI ) );
|
|
|
+ *partA.schwerpunkt += polygon.vertex->get( leftI );
|
|
|
+ partA.vertex->add( polygon.vertex->get( leftI ) );
|
|
|
+ partA.tKordinaten->add( polygon.tKordinaten->get( leftI ) );
|
|
|
for( int i = leftIE; i != rightI; i-- )
|
|
|
{
|
|
|
if( i < 0 )
|
|
|
i += anz;
|
|
|
if( i == rightI )
|
|
|
break;
|
|
|
- *partB.schwerpunkt += polygon._.vertex->get( i );
|
|
|
- partB.vertex->add( polygon._.vertex->get( i ) );
|
|
|
- partB.tKordinaten->add( polygon._.tKordinaten->get( i ) );
|
|
|
+ *partB.schwerpunkt += polygon.vertex->get( i );
|
|
|
+ partB.vertex->add( polygon.vertex->get( i ) );
|
|
|
+ partB.tKordinaten->add( polygon.tKordinaten->get( i ) );
|
|
|
}
|
|
|
- *partB.schwerpunkt += polygon._.vertex->get( rightI );
|
|
|
- partB.vertex->add( polygon._.vertex->get( rightI ) );
|
|
|
- partB.tKordinaten->add( polygon._.tKordinaten->get( rightI ) );
|
|
|
+ *partB.schwerpunkt += polygon.vertex->get( rightI );
|
|
|
+ partB.vertex->add( polygon.vertex->get( rightI ) );
|
|
|
+ partB.tKordinaten->add( polygon.tKordinaten->get( rightI ) );
|
|
|
*partA.schwerpunkt /= (float)partA.vertex->getEintragAnzahl();
|
|
|
*partB.schwerpunkt /= (float)partB.vertex->getEintragAnzahl();
|
|
|
posA = (Punkt)*partA.schwerpunkt;
|
|
@@ -640,6 +640,7 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
*partB.schwerpunkt = Vertex( 0, 0 );
|
|
|
}
|
|
|
}
|
|
|
+ num++;
|
|
|
}
|
|
|
return ret;
|
|
|
}
|
|
@@ -647,20 +648,20 @@ bool Model2DData::split( Vertex pos, Vertex dir, char *polygonName, Polygon2D &p
|
|
|
float Model2DData::getMasse() const
|
|
|
{
|
|
|
float m = 0;
|
|
|
- for( auto p = polygons->getIterator(); p; p++ )
|
|
|
+ for( Polygon2D p : *polygons )
|
|
|
{
|
|
|
- if( p._.transparent )
|
|
|
+ if( p.transparent )
|
|
|
continue;
|
|
|
- int anz = p._.vertex->getEintragAnzahl();
|
|
|
+ int anz = p.vertex->getEintragAnzahl();
|
|
|
if( anz < 3 )
|
|
|
continue;
|
|
|
- Vertex p1 = p._.vertex->get( anz - 1 );
|
|
|
- Vertex p2 = p._.vertex->get( 0 );
|
|
|
+ Vertex p1 = p.vertex->get( anz - 1 );
|
|
|
+ Vertex p2 = p.vertex->get( 0 );
|
|
|
m += ( p1.y + p2.y ) * ( p1.x - p2.x );
|
|
|
for( int i = 1; i < anz; i++ )
|
|
|
{
|
|
|
- p1 = p._.vertex->get( i - 1 );
|
|
|
- p2 = p._.vertex->get( i );
|
|
|
+ p1 = p.vertex->get( i - 1 );
|
|
|
+ p2 = p.vertex->get( i );
|
|
|
m += ( p1.y + p2.y ) * ( p1.x - p2.x );
|
|
|
}
|
|
|
}
|
|
@@ -700,7 +701,7 @@ void Model2DObject::setTextur( Textur2D *t )
|
|
|
int index = 0;
|
|
|
if( rData )
|
|
|
{
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++ )
|
|
|
+ for( Polygon2D i : *rData->polygons )
|
|
|
textur->set( dynamic_cast<Textur2D *>( t->getThis() ), index++ );
|
|
|
}
|
|
|
t->release();
|
|
@@ -718,9 +719,9 @@ void Model2DObject::impuls( Vertex start, Vertex speed, float strength )
|
|
|
Vertex mSpeed;
|
|
|
float rSpeed;
|
|
|
float dist = INFINITY;
|
|
|
- for( auto p = rData->polygons->getIterator(); p; p++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( !p._.transparent && rData->calcHitPoint( start, speed, p._.name->getText(), hp, mSpeed, rSpeed ) )
|
|
|
+ if( !p.transparent && rData->calcHitPoint( start, speed, p.name->getText(), hp, mSpeed, rSpeed ) )
|
|
|
{
|
|
|
float f = ( hp.x - start.x ) / speed.x;
|
|
|
if( !speed.x )
|
|
@@ -745,10 +746,11 @@ void Model2DObject::impuls( Vertex start, Vertex speed, float strength )
|
|
|
void Model2DObject::setTextur( Textur2D *t, const char *polygonName )
|
|
|
{
|
|
|
int index = 0;
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++, index++ )
|
|
|
+ for( Polygon2D i : *rData->polygons )
|
|
|
{
|
|
|
- if( i._.name->istGleich( polygonName ) )
|
|
|
+ if( i.name->istGleich( polygonName ) )
|
|
|
textur->set( dynamic_cast<Textur2D *>( t->getThis() ), index );
|
|
|
+ index++;
|
|
|
}
|
|
|
t->release();
|
|
|
}
|
|
@@ -758,15 +760,15 @@ void Model2DObject::render( Mat3< float > &kamMat, Bild &zRObj, const char *kamN
|
|
|
if( !rData || !rData->polygons || !textur )
|
|
|
return;
|
|
|
int num = 0;
|
|
|
- for( auto p = rData->vListen->getIterator(); p; p++, num++ )
|
|
|
+ for( auto p : *rData->vListen )
|
|
|
{
|
|
|
Mat3< float > mat = kamMat * getObjectMatrix();
|
|
|
if( textur->z( num ) )
|
|
|
{
|
|
|
Bild *txt = textur->z( num )->zTextur();
|
|
|
- for( auto i = p->getIterator(); i && txt; i++ )
|
|
|
+ for( auto i = p->begin(); i && txt; i++ )
|
|
|
{
|
|
|
- for( auto j = i->zListe()->getIterator(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
+ for( auto j = i->zListe()->begin(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
{
|
|
|
Vertex a = mat * *j->punkt;
|
|
|
Vertex b = mat * *j.next()->punkt;
|
|
@@ -778,6 +780,7 @@ void Model2DObject::render( Mat3< float > &kamMat, Bild &zRObj, const char *kamN
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ num++;
|
|
|
}
|
|
|
|
|
|
for( auto *p = &rData->vListen->getIterator(); p && p->set; p = p->next, num++ )
|
|
@@ -807,21 +810,20 @@ bool Model2DObject::istPunktInnen( Vertex p, bool ignoreTransparent ) const
|
|
|
p -= position;
|
|
|
if( p < Mat3< float >::scaling( size ) * rData->minP || p > Mat3< float >::scaling( size ) * rData->maxP || !rData->polygons )
|
|
|
return 0;
|
|
|
- int num = 0;
|
|
|
Mat3< float > mat = Mat3< float >::rotation( -rotation ) * Mat3< float >::scaling( 1 / size );
|
|
|
p = mat * p;
|
|
|
- for( auto polygon = rData->polygons->getIterator(); polygon; polygon++, num++ )
|
|
|
+ for( Polygon2D polygon : *rData->polygons)
|
|
|
{
|
|
|
- if( polygon._.transparent && !ignoreTransparent )
|
|
|
+ if( polygon.transparent && !ignoreTransparent )
|
|
|
continue;
|
|
|
bool c = 0;
|
|
|
- for( auto point = polygon._.vertex->getIterator(); point; point++ )
|
|
|
+ for( auto point = polygon.vertex->begin(); point; point++ )
|
|
|
{
|
|
|
Vertex a;
|
|
|
if( point.next() )
|
|
|
a = point.next();
|
|
|
else
|
|
|
- a = polygon._.vertex->get( 0 );
|
|
|
+ a = polygon.vertex->get( 0 );
|
|
|
Vertex b = point;
|
|
|
if( ( ( a.y >= p.y ) != ( b.y >= p.y ) ) && ( p.x <= ( b.x - a.x ) * ( p.y - a.y ) / (float)( b.y - a.y ) + a.x ) )
|
|
|
c = !c;
|
|
@@ -885,17 +887,17 @@ bool Model2DObject::istModelInnen( const Object2D *zObj, Vertex *sp, bool end, b
|
|
|
return 0;
|
|
|
}
|
|
|
Mat3< float > mat = getObjectMatrix();
|
|
|
- for( auto polygon = rData->polygons->getIterator(); polygon; polygon++ )
|
|
|
+ for( Polygon2D polygon : *rData->polygons )
|
|
|
{
|
|
|
- if( polygon._.transparent && !ignoreTransparent )
|
|
|
+ if( polygon.transparent && !ignoreTransparent )
|
|
|
continue;
|
|
|
- int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
+ int anz = polygon.vertex->getEintragAnzahl();
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
- if( zObj->istPunktInnen( mat * polygon._.vertex->get( i ), ignoreTransparent ) )
|
|
|
+ if( zObj->istPunktInnen( mat * polygon.vertex->get( i ), ignoreTransparent ) )
|
|
|
{
|
|
|
if( sp )
|
|
|
- *sp = mat * polygon._.vertex->get( i );
|
|
|
+ *sp = mat * polygon.vertex->get( i );
|
|
|
return 1;
|
|
|
}
|
|
|
}
|
|
@@ -922,9 +924,9 @@ bool Model2DObject::calcHitPoint( Vertex pos, Vertex dir, Vertex &hitpoint ) con
|
|
|
float dist = INFINITY;
|
|
|
if( rData )
|
|
|
{
|
|
|
- for( auto p = rData->polygons->getIterator(); p; p++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( !p._.transparent && rData->calcHitPoint( pos, dir, p._.name->getText(), hp, ms, rs ) )
|
|
|
+ if( !p.transparent && rData->calcHitPoint( pos, dir, p.name->getText(), hp, ms, rs ) )
|
|
|
{
|
|
|
float f = ( hp.x - pos.x ) / dir.x;
|
|
|
if( !speed.x )
|
|
@@ -955,13 +957,13 @@ float Model2DObject::getLuftWiederstand() const
|
|
|
Mat3< float > m = Mat3< float >::rotation( rotation + faktor * angle ) * Mat3< float >::scaling( size );
|
|
|
float yMin = INFINITY;
|
|
|
float yMax = -INFINITY;
|
|
|
- for( auto p = rData->polygons->getIterator(); p; p++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( p._.transparent )
|
|
|
+ if( p.transparent )
|
|
|
continue;
|
|
|
- for( auto point = p._.vertex->getIterator(); point; point++ )
|
|
|
+ for( Vertex point : *p.vertex )
|
|
|
{
|
|
|
- Vertex v = m * point._;
|
|
|
+ Vertex v = m * point;
|
|
|
if( v.y > yMax )
|
|
|
yMax = v.y;
|
|
|
if( v.y < yMin )
|
|
@@ -993,10 +995,11 @@ Textur2D *Model2DObject::getTextur() const
|
|
|
Textur2D *Model2DObject::getTextur( const char *polygonName ) const
|
|
|
{
|
|
|
int index = 0;
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++, index++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( i._.name->istGleich( polygonName ) )
|
|
|
+ if( p.name->istGleich( polygonName ) )
|
|
|
return textur->get( index );
|
|
|
+ index++;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -1012,10 +1015,11 @@ Textur2D *Model2DObject::zTextur() const
|
|
|
Textur2D *Model2DObject::zTextur( const char *polygonName ) const
|
|
|
{
|
|
|
int index = 0;
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++, index++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( i._.name->istGleich( polygonName ) )
|
|
|
+ if( p.name->istGleich( polygonName ) )
|
|
|
return textur->z( index );
|
|
|
+ index++;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -1098,7 +1102,7 @@ void Model2D::setTextur( Textur2D *t )
|
|
|
int index = 0;
|
|
|
if( rData )
|
|
|
{
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
textur->set( dynamic_cast<Textur2D *>( t->getThis() ), index++ );
|
|
|
}
|
|
|
t->release();
|
|
@@ -1107,10 +1111,11 @@ void Model2D::setTextur( Textur2D *t )
|
|
|
void Model2D::setTextur( Textur2D *t, const char *polygonName )
|
|
|
{
|
|
|
int index = 0;
|
|
|
- for( auto i = rData->polygons->getIterator(); i; i++, index++ )
|
|
|
+ for( Polygon2D p : *rData->polygons )
|
|
|
{
|
|
|
- if( i._.name->istGleich( polygonName ) )
|
|
|
+ if( p.name->istGleich( polygonName ) )
|
|
|
textur->set( dynamic_cast<Textur2D *>( t->getThis() ), index );
|
|
|
+ index++;
|
|
|
}
|
|
|
t->release();
|
|
|
}
|
|
@@ -1132,16 +1137,16 @@ void Model2D::render( Bild &zRObj )
|
|
|
return;
|
|
|
Zeichnung::render( zRObj );
|
|
|
int num = 0;
|
|
|
- for( auto p = rData->vListen->getIterator(); p; p++, num++ )
|
|
|
+ for( auto p : *rData->vListen )
|
|
|
{
|
|
|
Mat3< float > mat = Mat3< float >::translation( pos ) * Mat3< float >::rotation( drehung ) * Mat3< float >::scaling( size );
|
|
|
if( hatStyle( Model2D::Style::Textur ) )
|
|
|
{
|
|
|
if( !textur || !textur->z( num ) || !textur->z( num )->zTextur() || !rData->polygons->get( num ).tKordinaten )
|
|
|
{
|
|
|
- for( auto i = p->getIterator(); i; i++ )
|
|
|
+ for( auto i : *p )
|
|
|
{
|
|
|
- for( auto j = i->zListe()->getIterator(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
+ for( auto j = i->zListe()->begin(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
{
|
|
|
Vertex a = mat * *j->punkt;
|
|
|
Vertex b = mat * *j.next()->punkt;
|
|
@@ -1156,9 +1161,9 @@ void Model2D::render( Bild &zRObj )
|
|
|
else
|
|
|
{
|
|
|
Bild *txt = textur->z( num )->zTextur();
|
|
|
- for( auto i = p->getIterator(); i; i++ )
|
|
|
+ for( auto i : *p )
|
|
|
{
|
|
|
- for( auto j = i->zListe()->getIterator(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
+ for( auto j = i->zListe()->begin(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
{
|
|
|
Vertex a = mat * *j->punkt;
|
|
|
Vertex b = mat * *j.next()->punkt;
|
|
@@ -1176,9 +1181,9 @@ void Model2D::render( Bild &zRObj )
|
|
|
}
|
|
|
if( hatStyle( Model2D::Style::Mesh ) )
|
|
|
{
|
|
|
- for( auto i = p->getIterator(); i; i++ )
|
|
|
+ for( auto i : *p )
|
|
|
{
|
|
|
- for( auto j = i->zListe()->getIterator(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
+ for( auto j = i->zListe()->begin(); j.hasNext() && j.next().hasNext(); j++ )
|
|
|
{
|
|
|
Vertex a = mat * *j->punkt;
|
|
|
Vertex b = mat * *j.next()->punkt;
|
|
@@ -1200,7 +1205,7 @@ void Model2D::render( Bild &zRObj )
|
|
|
}
|
|
|
if( hatStyle( Model2D::Style::Rahmen ) )
|
|
|
{
|
|
|
- auto beg = rData->polygons->get( num ).vertex->getIterator();
|
|
|
+ auto beg = rData->polygons->get( num ).vertex->begin();
|
|
|
if( beg )
|
|
|
{
|
|
|
Vertex letzter;
|
|
@@ -1221,6 +1226,7 @@ void Model2D::render( Bild &zRObj )
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ num++;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1249,19 +1255,18 @@ bool Model2D::istPunktInnen( Vertex p ) const
|
|
|
p -= pos;
|
|
|
if( p < Mat3< float >::scaling( size ) * rData->minP || p > Mat3< float >::scaling( size ) * rData->maxP || !rData->polygons )
|
|
|
return 0;
|
|
|
- int num = 0;
|
|
|
- for( auto polygon = rData->polygons->getIterator(); polygon; polygon++, num++ )
|
|
|
+ for( Polygon2D polygon : *rData->polygons )
|
|
|
{
|
|
|
- if( polygon._.transparent )
|
|
|
+ if( polygon.transparent )
|
|
|
continue;
|
|
|
Mat3< float > mat = Mat3< float >::rotation( drehung ) * Mat3< float >::scaling( size );
|
|
|
- int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
+ int anz = polygon.vertex->getEintragAnzahl();
|
|
|
bool c = 0;
|
|
|
int j = anz - 1;
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
- Vertex a = mat * polygon._.vertex->get( i );
|
|
|
- Vertex b = mat * polygon._.vertex->get( j );
|
|
|
+ Vertex a = mat * polygon.vertex->get( i );
|
|
|
+ Vertex b = mat * polygon.vertex->get( j );
|
|
|
if( ( ( a.y >= p.y ) != ( b.y >= p.y ) ) && ( p.x <= ( b.x - a.x ) * ( p.y - a.y ) / (float)( b.y - a.y ) + a.x ) )
|
|
|
c = !c;
|
|
|
j = i;
|
|
@@ -1329,14 +1334,14 @@ bool Model2D::istModelInnen( const Model2D *zMdl, bool end ) const
|
|
|
return 0;
|
|
|
}
|
|
|
Mat3< float > mat = Mat3< float >::translation( pos ) * Mat3< float >::rotation( drehung ) * Mat3< float >::scaling( size );
|
|
|
- for( auto polygon = rData->polygons->getIterator(); polygon; polygon++ )
|
|
|
+ for( Polygon2D polygon : *rData->polygons )
|
|
|
{
|
|
|
- if( polygon._.transparent )
|
|
|
+ if( polygon.transparent )
|
|
|
continue;
|
|
|
- int anz = polygon._.vertex->getEintragAnzahl();
|
|
|
+ int anz = polygon.vertex->getEintragAnzahl();
|
|
|
for( int i = 0; i < anz; i++ )
|
|
|
{
|
|
|
- if( zMdl->istPunktInnen( mat * polygon._.vertex->get( i ) ) )
|
|
|
+ if( zMdl->istPunktInnen( mat * polygon.vertex->get( i ) ) )
|
|
|
return 1;
|
|
|
}
|
|
|
}
|