12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*
- Copyright (C) 2016 Marien Raat
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- #pragma once
- #include <SFML/Graphics.hpp>
- #include <vector>
- class CarExhaust : public sf::Drawable {
- public:
- CarExhaust();
- void update(sf::Vector2f position, sf::Vector2f velocity,
- float angle, float boostUsed);
- void setTexture(sf::Texture *texture) { this->texture = texture; }
- private:
- struct Particle {
- sf::Vector2f position;
- sf::Vector2f velocity;
- sf::Vector2f size;
- float rotation;
- float lifetime;
- float lifetimeLeft;
- };
- std::vector<Particle> particles;
- sf::VertexArray vertices;
- float boostParticlesNeeded;
- sf::Texture *texture;
-
- virtual void draw(sf::RenderTarget &target,
- sf::RenderStates states) const;
- void addBoostParticles(sf::Vector2f position,
- sf::Vector2f velocity, float angle,
- float boostUsed);
- void updateParticles();
- sf::Color getBoostParticleColor(float ratio);
- };
|