-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMisc.cpp
More file actions
22 lines (22 loc) · 996 Bytes
/
Misc.cpp
File metadata and controls
22 lines (22 loc) · 996 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "Misc.hpp"
#include <Engine/Factory.hpp>
engine::Node* CreateExplosion(engine::Scene* scene, float force, const sf::Vector2f& pos, float sizeScale, uint8_t numParticles) {
engine::SpriteNode* explosion = static_cast<engine::SpriteNode*> (engine::Factory::CreateChildFromFile("assets/script/explosion.json", scene));
explosion->setScale(sizeScale, sizeScale);
explosion->setPosition(pos);
explosion->GetAnimation()->OnOver = [explosion]() {
explosion->Delete();
};
Json::Value ep;
if (engine::Factory::LoadJson("assets/script/shockwave_particle.json", ep)) {
for (uint32_t i = 0; i < numParticles; i++) {
float angle = (i / static_cast<float>(numParticles)) * 360.0f * engine::util::fPI / 180.0f;
b2Vec2 rayDir(sinf(angle), cosf(angle));
engine::Node* particle = engine::Factory::CreateChild(ep, explosion);
explosion->AddNode(particle);
particle->SetPosition(pos.x, pos.y);
particle->GetBody()->SetLinearVelocity(force * rayDir);
}
}
return explosion;
}