mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Use TileSet::GetTileHitboxRef to get a ref to an hitbox
TileSet::GeTileHitbox now only returns by value (no more by ref overload) (It avoids creating hitboxes in the cache ofthe Tilemap during generation)
This commit is contained in:
@@ -168,33 +168,33 @@ void TileEditor::OnPredefinedShapeMenuItemClicked(wxCommandEvent& event)
|
||||
switch(event.GetId())
|
||||
{
|
||||
case RECTANGLE_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Rectangle(m_tileset->tileSize);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Rectangle(m_tileset->tileSize);
|
||||
break;
|
||||
case TRIANGLE_TL_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::TopLeft);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::TopLeft);
|
||||
break;
|
||||
case TRIANGLE_TR_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::TopRight);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::TopRight);
|
||||
break;
|
||||
case TRIANGLE_BR_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::BottomRight);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::BottomRight);
|
||||
break;
|
||||
case TRIANGLE_BL_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::BottomLeft);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Triangle(m_tileset->tileSize, TileHitbox::BottomLeft);
|
||||
break;
|
||||
case SEMIRECT_T_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x, m_tileset->tileSize.y/2.f));
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x, m_tileset->tileSize.y/2.f));
|
||||
break;
|
||||
case SEMIRECT_R_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x/2.f, m_tileset->tileSize.y));
|
||||
m_tileset->GetTileHitbox(m_currentTile).hitbox.Move(m_tileset->tileSize.x/2.f, 0);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x/2.f, m_tileset->tileSize.y));
|
||||
m_tileset->GetTileHitboxRef(m_currentTile).hitbox.Move(m_tileset->tileSize.x/2.f, 0);
|
||||
break;
|
||||
case SEMIRECT_B_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x, m_tileset->tileSize.y/2.f));
|
||||
m_tileset->GetTileHitbox(m_currentTile).hitbox.Move(0, m_tileset->tileSize.y/2.f);
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x, m_tileset->tileSize.y/2.f));
|
||||
m_tileset->GetTileHitboxRef(m_currentTile).hitbox.Move(0, m_tileset->tileSize.y/2.f);
|
||||
break;
|
||||
case SEMIRECT_L_SHAPE_TOOL_ID:
|
||||
m_tileset->GetTileHitbox(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x/2.f, m_tileset->tileSize.y));
|
||||
m_tileset->GetTileHitboxRef(m_currentTile) = TileHitbox::Rectangle(sf::Vector2f(m_tileset->tileSize.x/2.f, m_tileset->tileSize.y));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ void TileEditor::OnAddPointToolClicked(wxCommandEvent& event)
|
||||
if(!m_tileset || m_tileset->IsDirty())
|
||||
return;
|
||||
|
||||
Polygon2d &mask = m_tileset->GetTileHitbox(m_currentTile).hitbox;
|
||||
Polygon2d &mask = m_tileset->GetTileHitboxRef(m_currentTile).hitbox;
|
||||
|
||||
int selectedPoint = m_polygonHelper.GetSelectedPoint();
|
||||
if(selectedPoint >= mask.vertices.size() || selectedPoint < 0)
|
||||
@@ -235,7 +235,7 @@ void TileEditor::OnEditPointToolClicked(wxCommandEvent& event)
|
||||
if(!m_tileset || m_tileset->IsDirty())
|
||||
return;
|
||||
|
||||
Polygon2d &mask = m_tileset->GetTileHitbox(m_currentTile).hitbox;
|
||||
Polygon2d &mask = m_tileset->GetTileHitboxRef(m_currentTile).hitbox;
|
||||
int selectedPoint = m_polygonHelper.GetSelectedPoint();
|
||||
if(selectedPoint >= mask.vertices.size() || selectedPoint < 0)
|
||||
return;
|
||||
@@ -254,7 +254,7 @@ void TileEditor::OnRemovePointToolClicked(wxCommandEvent& event)
|
||||
if(!m_tileset || m_tileset->IsDirty())
|
||||
return;
|
||||
|
||||
Polygon2d &mask = m_tileset->GetTileHitbox(m_currentTile).hitbox;
|
||||
Polygon2d &mask = m_tileset->GetTileHitboxRef(m_currentTile).hitbox;
|
||||
if(mask.vertices.size() <= 3)
|
||||
return;
|
||||
|
||||
@@ -275,9 +275,9 @@ void TileEditor::OnPreviewLeftDown(wxMouseEvent& event)
|
||||
event.SetX(m_tilePreviewPanel->CalcUnscrolledPosition(wxPoint(event.GetX(), event.GetY())).x);
|
||||
event.SetY(m_tilePreviewPanel->CalcUnscrolledPosition(wxPoint(event.GetX(), event.GetY())).y);
|
||||
|
||||
std::vector<Polygon2d> polygonList(1, m_tileset->GetTileHitbox(m_currentTile).hitbox);
|
||||
std::vector<Polygon2d> polygonList(1, m_tileset->GetTileHitboxRef(m_currentTile).hitbox);
|
||||
m_polygonHelper.OnMouseLeftDown(polygonList, event, wxPoint(m_xOffset, m_yOffset));
|
||||
m_tileset->GetTileHitbox(m_currentTile).hitbox = polygonList[0];
|
||||
m_tileset->GetTileHitboxRef(m_currentTile).hitbox = polygonList[0];
|
||||
|
||||
m_tilePreviewPanel->Refresh();
|
||||
}
|
||||
@@ -300,9 +300,9 @@ void TileEditor::OnPreviewMotion(wxMouseEvent& event)
|
||||
event.SetX(m_tilePreviewPanel->CalcUnscrolledPosition(wxPoint(event.GetX(), event.GetY())).x);
|
||||
event.SetY(m_tilePreviewPanel->CalcUnscrolledPosition(wxPoint(event.GetX(), event.GetY())).y);
|
||||
|
||||
std::vector<Polygon2d> polygonList(1, m_tileset->GetTileHitbox(m_currentTile).hitbox);
|
||||
std::vector<Polygon2d> polygonList(1, m_tileset->GetTileHitboxRef(m_currentTile).hitbox);
|
||||
m_polygonHelper.OnMouseMove(polygonList, event, wxPoint(m_xOffset, m_yOffset), 0.f, 0.f, m_tileset->tileSize.x, m_tileset->tileSize.y);
|
||||
m_tileset->GetTileHitbox(m_currentTile).hitbox = polygonList[0];
|
||||
m_tileset->GetTileHitboxRef(m_currentTile).hitbox = polygonList[0];
|
||||
|
||||
m_tilePreviewPanel->Refresh();
|
||||
}
|
||||
|
@@ -252,7 +252,7 @@ void TileSet::StripUselessHitboxes()
|
||||
}
|
||||
#endif
|
||||
|
||||
TileHitbox& TileSet::GetTileHitbox(int id)
|
||||
TileHitbox& TileSet::GetTileHitboxRef(int id)
|
||||
{
|
||||
if(m_hitboxes.count(id) == 0)
|
||||
m_hitboxes[id] = TileHitbox::Rectangle(tileSize);
|
||||
|
@@ -167,9 +167,10 @@ public:
|
||||
void SetTileCollidable(int id, bool collidable);
|
||||
|
||||
/**
|
||||
* \return the hitbox of a tile.
|
||||
* \return a reference to the hitbox of a tile.
|
||||
* Allows the edition of the hitbox.
|
||||
*/
|
||||
TileHitbox& GetTileHitbox(int id);
|
||||
TileHitbox& GetTileHitboxRef(int id);
|
||||
|
||||
/**
|
||||
* \return the hitbox of a tile.
|
||||
|
Reference in New Issue
Block a user