Aggiornati handle per debug su collezioni

This commit is contained in:
2026-06-19 14:03:45 +02:00
parent 83928c9bd7
commit 298db61ace
2 changed files with 41 additions and 15 deletions
BIN
View File
Binary file not shown.
+40 -14
View File
@@ -31,7 +31,7 @@ struct State
sf::Clock clock; sf::Clock clock;
ReferencePlane selectedPlane = ReferencePlane::XZ; ReferencePlane selectedPlane = ReferencePlane::XZ;
int selected = -1; PieceInterface* selected = nullptr;
bool rot_Piece = false; bool rot_Piece = false;
bool drag_Piece = false; bool drag_Piece = false;
@@ -164,15 +164,15 @@ void handle_mouseMove(const sf::Event::MouseMoved &mouseMoved, State &gs)
#ifdef DEBUG_MODE #ifdef DEBUG_MODE
if (gs.selected != -1 && gs.drag_Piece){ if (gs.selected != nullptr && gs.drag_Piece){
rb::Vector3 tmp = gs.pieces[gs.selected]->body.getPos(); rb::Vector3 tmp = gs.selected->body.getPos();
gs.pieces[gs.selected]->body.setPos({tmp[0]+ (offset.x * px),tmp[1]+ (offset.x * py),tmp[2]+offset.y}); gs.selected->body.setPos({tmp[0]+ (offset.x * px),tmp[1]+ (offset.x * py),tmp[2]+offset.y});
} }
if (gs.selected != -1 && gs.rot_Piece){ if (gs.selected != nullptr && gs.rot_Piece){
rb::Vector3 tmp = gs.pieces[gs.selected]->body.getRot(); rb::Vector3 tmp = gs.selected->body.getRot();
float nrot = float(offset.x)/100; float nrot = float(offset.x)/100;
gs.pieces[gs.selected]->body.setRot({tmp[0]+(nrot*py),tmp[1]+(nrot*px),tmp[2]}); gs.selected->body.setRot({tmp[0]+(nrot*py),tmp[1]+(nrot*px),tmp[2]});
//printf("Rotation : %f,%f,%f \n",gs.pieces[gs.selected]->body.getRot()[0],gs.pieces[gs.selected]->body.getRot()[1],gs.pieces[gs.selected]->body.getRot()[2]); //printf("Rotation : %f,%f,%f \n",gs.pieces[gs.selected]->body.getRot()[0],gs.pieces[gs.selected]->body.getRot()[1],gs.pieces[gs.selected]->body.getRot()[2]);
} }
@@ -189,7 +189,7 @@ void handle_mousePressed(const sf::Event::MouseButtonPressed &mouseBP, State &gs
if ( mouseBP.button == sf::Mouse::Button::Left){ if ( mouseBP.button == sf::Mouse::Button::Left){
gs.drag_Piece = true; gs.drag_Piece = true;
int i = 0;
for (PieceInterface* p : gs.pieces){ for (PieceInterface* p : gs.pieces){
sf::Vector2f pos; sf::Vector2f pos;
if (gs.selectedPlane == ReferencePlane::XZ) if (gs.selectedPlane == ReferencePlane::XZ)
@@ -198,15 +198,27 @@ void handle_mousePressed(const sf::Event::MouseButtonPressed &mouseBP, State &gs
pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]}; pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]};
if (dist(pos,mouseBP.position) < 20){ if (dist(pos,mouseBP.position) < 20){
gs.selected = i; gs.selected = p;
}
}
for (collection c : gs.createdColl){
for (auto p : c.pieces){
sf::Vector2f pos;
if (gs.selectedPlane == ReferencePlane::XZ)
pos = {p->globalPos[0]+ p->body.getPos()[0], p->globalPos[2]+ p->body.getPos()[2]};
else if (gs.selectedPlane == ReferencePlane::YZ)
pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]};
if (dist(pos,mouseBP.position) < 20){
gs.selected = p;
}
} }
i++;
} }
} }
if ( mouseBP.button == sf::Mouse::Button::Right){ if ( mouseBP.button == sf::Mouse::Button::Right){
gs.rot_Piece = true; gs.rot_Piece = true;
int i = 0;
for (PieceInterface* p : gs.pieces){ for (PieceInterface* p : gs.pieces){
sf::Vector2f pos; sf::Vector2f pos;
if (gs.selectedPlane == ReferencePlane::XZ) if (gs.selectedPlane == ReferencePlane::XZ)
@@ -215,9 +227,23 @@ void handle_mousePressed(const sf::Event::MouseButtonPressed &mouseBP, State &gs
pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]}; pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]};
if (dist(pos,mouseBP.position) < 20){ if (dist(pos,mouseBP.position) < 20){
gs.selected = i; gs.selected = p;
}
}
for (collection c : gs.createdColl){
for (auto p : c.pieces){
sf::Vector2f pos;
if (gs.selectedPlane == ReferencePlane::XZ)
pos = {p->globalPos[0]+ p->body.getPos()[0], p->globalPos[2]+ p->body.getPos()[2]};
else if (gs.selectedPlane == ReferencePlane::YZ)
pos = {p->globalPos[1]+ p->body.getPos()[1], p->globalPos[2]+ p->body.getPos()[2]};
if (dist(pos,mouseBP.position) < 20){
gs.selected = p;
}
} }
i++;
} }
} }
@@ -230,7 +256,7 @@ void handle_mouseRelease(const sf::Event::MouseButtonReleased &, State &gs)
gs.drag = false; gs.drag = false;
gs.drag_Piece = false; gs.drag_Piece = false;
gs.rot_Piece = false; gs.rot_Piece = false;
gs.selected = -1; gs.selected = nullptr;
} }