1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "Asteroid.h"
- Asteroid::Asteroid( int id, Vertex pos, Vertex speed, float rot, float rotS, Model2DData *data )
- : Model2DObject()
- {
- this->id = id;
- setPosition( pos );
- setSpeed( speed );
- setDrehung( rot );
- setDrehungSpeed( rotS );
- setModel( data );
- }
- bool Asteroid::tick( const WeltInfo &info, double zeit )
- {
- wInfo = info;
- return Model2DObject::tick( info, zeit );
- }
- Asteroid *Asteroid::istTreffer( Laser *zL, RandomGenerator *zRandG, int &asteroidId, Vertex &pos )
- {
- Vertex hp;
- for( int i = 0; i < 3; i++ )
- {
- for( int j = 0; j < 3; j++ )
- {
- pos = zL->getPosition() + Punkt( ( i - 1 ) * wInfo.size.x, ( j - 1 ) * wInfo.size.y );
- if( istPunktInnen( pos ) && calcHitPoint( pos - zL->getSpeed(), zL->getSpeed(), hp ) )
- {
- Polygon2D a, b;
- Punkt pa, pb;
- if( zModel()->split( getObjectPos( hp ), getObjectDir( zL->getSpeed() ) * 0.1f, ( char* )"", a, b, pa, pb, [ zRandG ]() -> double
- {
- return zRandG->rand();
- } ) )
- {
- impuls( pos - zL->getSpeed(), zL->getSpeed() * 0.05f );
- hp = ( hp * getSize() ).rotation( getDrehung() ) + getPosition();
- Vertex pav = ( (Vertex)pa ).rotation( getDrehung() ) + getPosition();
- Vertex pbv = ( (Vertex)pb ).rotation( getDrehung() ) + getPosition();
- Array< Polygon2D > *npaA = new Array< Polygon2D >();
- npaA->add( a );
- Model2DData *npdA = new Model2DData();
- npdA->erstelleModell( npaA );
- Array< Polygon2D > *npaB = new Array< Polygon2D >();
- npaB->add( b );
- Model2DData *npdB = new Model2DData();
- npdB->erstelleModell( npaB );
- Asteroid *astr = new Asteroid( asteroidId++, pav, getSpeed() * (float)zRandG->rand(), getDrehung(), getDrehungSpeed() * (float)zRandG->rand(), npdA );
- setSpeed( getSpeed() * (float)zRandG->rand() );
- setDrehungSpeed( getDrehungSpeed() * (float)zRandG->rand() );
- setModel( npdB );
- setPosition( pbv );
- return astr;
- }
- }
- }
- }
- return 0;
- }
- int Asteroid::getId() const
- {
- return id;
- }
|