Initial Vectorail GC format library
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
#include "gc/GcTargetEffect.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <set>
|
||||
#include <string>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
if (argc < 3) {
|
||||
std::cerr << "usage: opencoaster-effect-probe EFC_DATA UV_DATA [first [last]]\n";
|
||||
return 2;
|
||||
}
|
||||
|
||||
GcTargetEffectBank bank;
|
||||
std::string error;
|
||||
if (!bank.load(argv[1], argv[2], &error)) {
|
||||
std::cerr << error << '\n';
|
||||
return 1;
|
||||
}
|
||||
|
||||
const int first = argc > 3 ? std::atoi(argv[3]) : 0;
|
||||
const int last = argc > 4 ? std::atoi(argv[4]) : first;
|
||||
const int uvBase = argc > 5 ? std::atoi(argv[5]) : 0;
|
||||
for (int effect = first; effect <= last; ++effect) {
|
||||
std::cout << "effect " << effect << " lifetime=" << bank.lifetime(effect) << '\n';
|
||||
const int lifetime = bank.lifetime(effect);
|
||||
const int sampleTicks[] = {0, 1, lifetime / 2, lifetime > 0 ? lifetime - 1 : 0};
|
||||
std::set<int> seenTicks;
|
||||
for (const int tick : sampleTicks) {
|
||||
if (!seenTicks.insert(tick).second) continue;
|
||||
const auto sprites = bank.evaluate(effect, static_cast<float>(tick), uvBase);
|
||||
std::cout << " tick " << tick << " sprites=" << sprites.size() << '\n';
|
||||
for (const auto& sprite : sprites) {
|
||||
const GcUvCell* cell = bank.uvCell(sprite.uvRecord, sprite.frame);
|
||||
std::cout << " uv=" << sprite.uvRecord << " tex="
|
||||
<< bank.uvTexture(sprite.uvRecord) << " frame=" << sprite.frame;
|
||||
if (cell) {
|
||||
std::cout << " cell=" << cell->x << ',' << cell->y << ' '
|
||||
<< cell->width << 'x' << cell->height;
|
||||
}
|
||||
std::cout << " pos=" << sprite.offsetPixels.x << ',' << sprite.offsetPixels.y
|
||||
<< " scale=" << sprite.scale.x << ',' << sprite.scale.y
|
||||
<< " rot=" << sprite.rotationDegrees
|
||||
<< " rgba=" << sprite.color.r << ',' << sprite.color.g << ','
|
||||
<< sprite.color.b << ',' << sprite.color.a << '\n';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user