PathSprite: ja permet createPath amb temps o frames
This commit is contained in:
@@ -56,29 +56,57 @@ void PathSprite::render() {
|
||||
// Añade un recorrido
|
||||
void PathSprite::addPath(Path path, bool centered) {
|
||||
PathCentered path_centered = PathCentered::NONE;
|
||||
|
||||
if (centered) {
|
||||
path_centered = (path.spots.back().x == path.spots.front().x) ? PathCentered::ON_X : PathCentered::ON_Y;
|
||||
if (path.is_point_path) {
|
||||
// Lógica de centrado para paths por PUNTOS (como antes)
|
||||
if (!path.spots.empty()) {
|
||||
// Si X es constante, es un path Vertical, centramos en X
|
||||
path_centered = (path.spots.back().x == path.spots.front().x) ? PathCentered::ON_X : PathCentered::ON_Y;
|
||||
}
|
||||
} else {
|
||||
// Lógica de centrado para paths GENERADOS (por duración)
|
||||
// Si el tipo es Vertical, centramos en X
|
||||
path_centered = (path.type == PathType::VERTICAL) ? PathCentered::ON_X : PathCentered::ON_Y;
|
||||
}
|
||||
}
|
||||
|
||||
switch (path_centered) {
|
||||
case PathCentered::ON_X: {
|
||||
const int X = path.spots.back().x - (pos_.w / 2);
|
||||
for (auto &spot : path.spots) {
|
||||
spot.x = X;
|
||||
// Centrar en el eje X (para paths Verticales)
|
||||
const float X_offset = pos_.w / 2.0f; // Asume que pos_.w está inicializado por el constructor de Sprite
|
||||
if (path.is_point_path) {
|
||||
const float X_base = !path.spots.empty() ? path.spots.front().x : 0.0f;
|
||||
const float X = X_base - X_offset;
|
||||
for (auto &spot : path.spots) {
|
||||
spot.x = X;
|
||||
}
|
||||
} else {
|
||||
// Es un path generado, ajustamos la posición fija (que es X)
|
||||
path.fixed_pos -= X_offset;
|
||||
}
|
||||
paths_.emplace_back(path);
|
||||
paths_.emplace_back(std::move(path)); // Usamos std::move
|
||||
break;
|
||||
}
|
||||
case PathCentered::ON_Y: {
|
||||
const int Y = path.spots.back().y - (pos_.h / 2);
|
||||
for (auto &spot : path.spots) {
|
||||
spot.y = Y;
|
||||
// Centrar en el eje Y (para paths Horizontales)
|
||||
const float Y_offset = pos_.h / 2.0f; // Asume que pos_.h está inicializado
|
||||
if (path.is_point_path) {
|
||||
const float Y_base = !path.spots.empty() ? path.spots.front().y : 0.0f;
|
||||
const float Y = Y_base - Y_offset;
|
||||
for (auto &spot : path.spots) {
|
||||
spot.y = Y;
|
||||
}
|
||||
} else {
|
||||
// Es un path generado, ajustamos la posición fija (que es Y)
|
||||
path.fixed_pos -= Y_offset;
|
||||
}
|
||||
paths_.emplace_back(path);
|
||||
paths_.emplace_back(std::move(path)); // Usamos std::move
|
||||
break;
|
||||
}
|
||||
default:
|
||||
paths_.emplace_back(path);
|
||||
// Sin centrado
|
||||
paths_.emplace_back(std::move(path)); // Usamos std::move
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user