Merge pull request #48 from victorlevasseur/tilemapobject/dev

Improvements for TileMapObject
This commit is contained in:
Florian Rival
2014-10-19 21:03:19 +02:00
13 changed files with 384 additions and 138 deletions

View File

@@ -192,8 +192,10 @@ void RuntimeTileMapObject::SetTile(int layer, int column, int row, int tileId)
if(layer < 0 || layer > 2 || column < 0 || column >= tileMap.Get().GetColumnsCount() || row < 0 || row >= tileMap.Get().GetRowsCount())
return;
needGeneration = true; //The tilemap object will be re-generated before the next rendering
//Just update a single tile in the tile map
tileMap.Get().SetTile(layer, column, row, tileId);
TileMapExtension::UpdateVertexArray(vertexArray, layer, column, row, tileSet.Get(), tileMap.Get());
TileMapExtension::UpdateHitboxes(hitboxes, sf::Vector2f(GetX(), GetY()), layer, column, row, tileSet.Get(), tileMap.Get());
}
float RuntimeTileMapObject::GetColumnAt(float x)

View File

@@ -84,6 +84,8 @@ void TileEditor::OnTileSetSelectionChanged(TileSelectionEvent &event)
m_mainToolbar->ToggleTool(COLLIDABLE_TOOL_ID, m_tileset->GetTileHitbox(m_currentTile).collidable);
UpdateScrollbars();
m_tilePreviewPanel->Refresh();
m_tileIdLabel->SetLabel(_("Tile ID: ") + wxString::FromDouble(m_currentTile));
}
void TileEditor::OnPreviewErase(wxEraseEvent& event)
@@ -138,7 +140,7 @@ void TileEditor::OnPreviewPaint(wxPaintEvent& event)
wxBitmap tileBitmap = m_tileset->GetTileBitmap(m_currentTile);
m_xOffset = width/2 - tileBitmap.GetWidth()/2;
m_yOffset = height/2 - tileBitmap.GetHeight()/2;
dc.DrawBitmap(tileBitmap, m_xOffset, m_yOffset);
dc.DrawBitmap(tileBitmap, m_xOffset, m_yOffset, true);
//Draw the hitbox
std::vector<Polygon2d> polygonList(1, m_tileset->GetTileHitbox(m_currentTile).hitbox);

View File

@@ -67,10 +67,10 @@ TileMapObjectEditorBase::TileMapObjectEditorBase(wxWindow* parent, wxWindowID id
flexGridSizer200->AddGrowableRow(1);
m_mainPanel->SetSizer(flexGridSizer200);
wxFlexGridSizer* flexGridSizer490 = new wxFlexGridSizer(0, 2, 0, 0);
wxFlexGridSizer* flexGridSizer490 = new wxFlexGridSizer(0, 3, 0, 0);
flexGridSizer490->SetFlexibleDirection( wxBOTH );
flexGridSizer490->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
flexGridSizer490->AddGrowableCol(1);
flexGridSizer490->AddGrowableCol(2);
flexGridSizer490->AddGrowableRow(0);
flexGridSizer200->Add(flexGridSizer490, 1, wxALL|wxEXPAND, 0);
@@ -112,12 +112,16 @@ TileMapObjectEditorBase::TileMapObjectEditorBase(wxWindow* parent, wxWindowID id
m_layerChoice = new wxChoice(m_mainPanelToolbar, wxID_ANY, wxDefaultPosition, wxSize(-1,-1), m_layerChoiceArr, 0);
m_layerChoice->SetSelection(0);
m_mainPanelToolbar->AddControl(m_layerChoice);
m_mainPanelToolbar->AddSeparator();
m_mainPanelToolbar->AddTool(HIDE_UPPER_LAYERS_TOOL_ID, _("Hide upper layers"), wxXmlResource::Get()->LoadBitmap(wxT("layer16")), wxNullBitmap, wxITEM_CHECK, wxT(""), wxT(""), NULL);
m_mainPanelToolbar->Realize();
m_toolbar516 = new wxToolBar(m_mainPanel, wxID_ANY, wxDefaultPosition, wxSize(-1,-1), wxTB_FLAT);
m_toolbar516->SetToolBitmapSize(wxSize(16,16));
flexGridSizer490->Add(m_toolbar516, 0, wxALL|wxEXPAND, 0);
m_toolbar516->AddTool(HIDE_UPPER_LAYERS_TOOL_ID, _("Hide upper layers"), wxXmlResource::Get()->LoadBitmap(wxT("eye")), wxNullBitmap, wxITEM_CHECK, _("Hide upper layers"), _("Hide upper layers"), NULL);
m_toolbar516->Realize();
wxFlexGridSizer* flexGridSizer7 = new wxFlexGridSizer(4, 1, 0, 0);
flexGridSizer7->SetFlexibleDirection( wxBOTH );
flexGridSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -165,8 +169,8 @@ TileMapObjectEditorBase::TileMapObjectEditorBase(wxWindow* parent, wxWindowID id
m_stdBtnSizer60->AddButton(m_button64);
m_stdBtnSizer60->Realize();
SetMinSize( wxSize(950,550) );
SetSizeHints(950,550);
SetMinSize( wxSize(1100,550) );
SetSizeHints(1100,550);
if ( GetSizer() ) {
GetSizer()->Fit(this);
}
@@ -271,6 +275,9 @@ TileSetConfigurationEditorBase::TileSetConfigurationEditorBase(wxWindow* parent,
flexGridSizer2692->Add(flexGridSizer295, 1, wxALL|wxEXPAND, 5);
m_textureNameTextCtrl = new wxTextCtrl(m_mainPanel, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(-1,-1), 0);
#if wxVERSION_NUMBER >= 3000
m_textureNameTextCtrl->SetHint(wxT(""));
#endif
flexGridSizer295->Add(m_textureNameTextCtrl, 0, wxALL|wxEXPAND, 5);
@@ -534,7 +541,7 @@ TileEditorBase::TileEditorBase(wxWindow* parent, wxWindowID id, const wxPoint& p
bBitmapLoaded = true;
}
wxFlexGridSizer* flexGridSizer398 = new wxFlexGridSizer(2, 1, 0, 0);
wxFlexGridSizer* flexGridSizer398 = new wxFlexGridSizer(3, 1, 0, 0);
flexGridSizer398->SetFlexibleDirection( wxBOTH );
flexGridSizer398->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
flexGridSizer398->AddGrowableCol(0);
@@ -579,8 +586,15 @@ TileEditorBase::TileEditorBase(wxWindow* parent, wxWindowID id, const wxPoint& p
flexGridSizer398->Add(m_tilePreviewPanel, 0, wxALL|wxEXPAND, 5);
m_tilePreviewPanel->SetMinSize(wxSize(100,100));
m_tileIdLabel = new wxStaticText(this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(-1,-1), 0);
wxFont m_tileIdLabelFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
m_tileIdLabelFont.SetStyle(wxFONTSTYLE_ITALIC);
m_tileIdLabel->SetFont(m_tileIdLabelFont);
flexGridSizer398->Add(m_tileIdLabel, 0, wxALL, 5);
SetMinSize( wxSize(200,200) );
SetSizeHints(500,300);
SetSizeHints(400,300);
if ( GetSizer() ) {
GetSizer()->Fit(this);
}

View File

@@ -44,6 +44,7 @@ protected:
wxToolBar* m_mainPanelToolbar;
wxStaticText* m_staticText355;
wxChoice* m_layerChoice;
wxToolBar* m_toolbar516;
TileMapPanel* m_tileMapPanel;
wxStaticText* m_staticText448;
wxStaticBitmap* m_staticBitmap456;
@@ -67,7 +68,7 @@ protected:
virtual void OnCancelButtonPressed(wxCommandEvent& event) { event.Skip(); }
public:
TileMapObjectEditorBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("TileMap Object Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(950,550), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX);
TileMapObjectEditorBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("TileMap Object Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(1100,550), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX);
virtual ~TileMapObjectEditorBase();
};
@@ -145,6 +146,7 @@ protected:
wxToolBar* m_mainToolbar;
wxToolBar* m_toolbar418;
wxScrolledWindow* m_tilePreviewPanel;
wxStaticText* m_tileIdLabel;
protected:
virtual void OnCollidableToolToggled(wxCommandEvent& event) { event.Skip(); }
@@ -159,7 +161,7 @@ protected:
virtual void OnPreviewMotion(wxMouseEvent& event) { event.Skip(); }
public:
TileEditorBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(500,300), long style = wxTAB_TRAVERSAL);
TileEditorBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(400,300), long style = wxTAB_TRAVERSAL);
virtual ~TileEditorBase();
};

View File

@@ -1,7 +1,7 @@
{
"metadata": {
"m_generatedFilesDir": ".",
"m_objCounter": 512,
"m_objCounter": 518,
"m_includeFiles": ["TileMapDialogsIds.h"],
"m_bitmapFunction": "wxCF6DCInitBitmapResources",
"m_bitmapsFile": "TileMapDialogs_wxsmith_bitmaps.cpp",
@@ -22,11 +22,11 @@
"m_properties": [{
"type": "string",
"m_label": "Size:",
"m_value": "950,550"
"m_value": "1100,550"
}, {
"type": "string",
"m_label": "Minimum Size:",
"m_value": "950,550"
"m_value": "1100,550"
}, {
"type": "string",
"m_label": "Name:",
@@ -685,7 +685,7 @@
}, {
"type": "string",
"m_label": "# Columns:",
"m_value": "2"
"m_value": "3"
}, {
"type": "string",
"m_label": "# Rows:",
@@ -693,7 +693,7 @@
}, {
"type": "string",
"m_label": "Growable columns:",
"m_value": "1"
"m_value": "2"
}, {
"type": "string",
"m_label": "Growable rows:",
@@ -1285,27 +1285,50 @@
"m_noBody": false
}],
"m_children": []
}]
}, {
"m_type": 4461,
"proportion": 0,
"border": 0,
"gbSpan": "1,1",
"gbPosition": "0,0",
"m_styles": ["wxTB_FLAT"],
"m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM", "wxEXPAND"],
"m_properties": [{
"type": "winid",
"m_label": "ID:",
"m_winid": "wxID_ANY"
}, {
"m_type": 4504,
"proportion": 0,
"border": 5,
"gbSpan": "1,1",
"gbPosition": "0,0",
"m_styles": [],
"m_sizerFlags": [],
"m_properties": [{
"type": "string",
"m_label": "Name:",
"m_value": "m_tbSeparator363"
}, {
"type": "choice",
"m_label": "Kind:",
"m_selection": 0,
"m_options": ["separator"]
}],
"m_events": [],
"m_children": []
"type": "string",
"m_label": "Size:",
"m_value": "-1,-1"
}, {
"type": "string",
"m_label": "Name:",
"m_value": "m_toolbar516"
}, {
"type": "string",
"m_label": "Tooltip:",
"m_value": ""
}, {
"type": "string",
"m_label": "Bitmap Size:",
"m_value": "16,16"
}, {
"type": "string",
"m_label": "Margins:",
"m_value": "-1,-1"
}, {
"type": "string",
"m_label": "Padding:",
"m_value": "1"
}, {
"type": "string",
"m_label": "Separator Size:",
"m_value": "5"
}],
"m_events": [],
"m_children": [{
"m_type": 4462,
"proportion": 0,
"border": 5,
@@ -1328,15 +1351,15 @@
}, {
"type": "multi-string",
"m_label": "Tooltip:",
"m_value": ""
"m_value": "Hide upper layers"
}, {
"type": "string",
"m_label": "Help String:",
"m_value": ""
"m_value": "Hide upper layers"
}, {
"type": "bitmapPicker",
"m_label": "Bitmap File:",
"m_path": "../../Binaries/Output/Release_Windows/res/icons_default/layer16.png"
"m_path": "../../Binaries/Output/Release_Windows/res/eye.png"
}, {
"type": "filePicker",
"m_label": "Disabled-Bitmap File",
@@ -2573,6 +2596,10 @@
"type": "string",
"m_label": "Value:",
"m_value": ""
}, {
"type": "string",
"m_label": "Text Hint",
"m_value": ""
}, {
"type": "string",
"m_label": "Max Length:",
@@ -5034,7 +5061,7 @@
"m_properties": [{
"type": "string",
"m_label": "Size:",
"m_value": "500,300"
"m_value": "400,300"
}, {
"type": "string",
"m_label": "Minimum Size:",
@@ -5133,7 +5160,7 @@
}, {
"type": "string",
"m_label": "# Rows:",
"m_value": "2"
"m_value": "3"
}, {
"type": "string",
"m_label": "Growable columns:",
@@ -5686,6 +5713,81 @@
"m_noBody": false
}],
"m_children": []
}, {
"m_type": 4405,
"proportion": 0,
"border": 5,
"gbSpan": "1,1",
"gbPosition": "0,0",
"m_styles": [],
"m_sizerFlags": ["wxALL", "wxLEFT", "wxRIGHT", "wxTOP", "wxBOTTOM"],
"m_properties": [{
"type": "winid",
"m_label": "ID:",
"m_winid": "wxID_ANY"
}, {
"type": "string",
"m_label": "Size:",
"m_value": "-1,-1"
}, {
"type": "string",
"m_label": "Minimum Size:",
"m_value": "-1,-1"
}, {
"type": "string",
"m_label": "Name:",
"m_value": "m_tileIdLabel"
}, {
"type": "multi-string",
"m_label": "Tooltip:",
"m_value": ""
}, {
"type": "colour",
"m_label": "Bg Colour:",
"colour": "<Default>"
}, {
"type": "colour",
"m_label": "Fg Colour:",
"colour": "<Default>"
}, {
"type": "font",
"m_label": "Font:",
"m_value": "wxSYS_DEFAULT_GUI_FONT,italic,normal,normal"
}, {
"type": "bool",
"m_label": "Hidden",
"m_value": false
}, {
"type": "bool",
"m_label": "Disabled",
"m_value": false
}, {
"type": "bool",
"m_label": "Focused",
"m_value": false
}, {
"type": "string",
"m_label": "Class Name:",
"m_value": ""
}, {
"type": "string",
"m_label": "Include File:",
"m_value": ""
}, {
"type": "string",
"m_label": "Style:",
"m_value": ""
}, {
"type": "multi-string",
"m_label": "Label:",
"m_value": ""
}, {
"type": "string",
"m_label": "Wrap:",
"m_value": "-1"
}],
"m_events": [],
"m_children": []
}]
}]
}]

View File

@@ -4,7 +4,7 @@
<title>TileMap Object Editor</title>
<centered>1</centered>
<style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX</style>
<size>950,550</size>
<size>1100,550</size>
<object class="wxAuiManager">
<flags>285</flags>
<sashsize>-1</sashsize>
@@ -121,11 +121,11 @@
<flag>wxALL|wxEXPAND</flag>
<option>1</option>
<object class="wxFlexGridSizer">
<cols>2</cols>
<cols>3</cols>
<rows>0</rows>
<vgap>0</vgap>
<hgap>0</hgap>
<growablecols>1</growablecols>
<growablecols>2</growablecols>
<growablerows>0</growablerows>
<object class="sizeritem">
<flag>wxALL|wxEXPAND|wxALIGN_TOP</flag>
@@ -224,16 +224,25 @@
<![CDATA[0]]>
</selection>
</object>
<object class="separator"/>
</object>
</object>
<object class="sizeritem">
<flag>wxALL|wxEXPAND</flag>
<object class="wxToolBar" name="m_toolbar516">
<style>wxTB_FLAT</style>
<bitmapsize>16,16</bitmapsize>
<object class="tool" name="m_hideUpperLayerCheck">
<toggle>1</toggle>
<label>
<![CDATA[Hide upper layers]]>
</label>
<tooltip>
<![CDATA[Hide upper layers]]>
</tooltip>
<longhelp>
<![CDATA[]]>
<![CDATA[Hide upper layers]]>
</longhelp>
<bitmap>../../Binaries/Output/Release_Windows/res/icons_default/layer16.png</bitmap>
<bitmap>../../Binaries/Output/Release_Windows/res/eye.png</bitmap>
</object>
</object>
</object>
@@ -449,6 +458,9 @@
<border>5</border>
<object class="wxTextCtrl" name="m_textureNameTextCtrl">
<style/>
<hint>
<![CDATA[]]>
</hint>
</object>
</object>
<object class="sizeritem">
@@ -820,11 +832,11 @@
</object>
</object>
<object class="wxPanel" name="TileEditorBase">
<size>500,300</size>
<size>400,300</size>
<style>wxTAB_TRAVERSAL</style>
<object class="wxFlexGridSizer">
<cols>1</cols>
<rows>2</rows>
<rows>3</rows>
<vgap>0</vgap>
<hgap>0</hgap>
<growablecols>0</growablecols>
@@ -923,6 +935,22 @@
<scrollrate>5,5</scrollrate>
</object>
</object>
<object class="sizeritem">
<flag>wxALL</flag>
<border>5</border>
<object class="wxStaticText" name="m_tileIdLabel">
<label>
<![CDATA[]]>
</label>
<style/>
<font>
<sysfont>wxSYS_DEFAULT_GUI_FONT</sysfont>
<style>italic</style>
<weight>normal</weight>
<underlined>0</underlined>
</font>
</object>
</object>
</object>
</object>
</resource>

View File

@@ -110,9 +110,44 @@ static unsigned char xml_res_file_2[] = {
97,66,68,1,11,196,163,181,251,186,226,10,3,30,254,130,219,124,1,35,61,168,
36,95,254,94,55,0,0,0,0,73,69,78,68,174,66,96,130};
static size_t xml_res_size_3 = 559;
static size_t xml_res_size_3 = 677;
static unsigned char xml_res_file_3[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
0,31,243,255,97,0,0,0,4,103,65,77,65,0,0,177,143,11,252,97,5,0,0,0,32,99,
72,82,77,0,0,122,38,0,0,128,132,0,0,250,0,0,0,128,232,0,0,117,48,0,0,234,
96,0,0,58,152,0,0,23,112,156,186,81,60,0,0,0,9,112,72,89,115,0,0,11,18,
0,0,11,18,1,210,221,126,252,0,0,0,16,116,69,88,116,83,111,117,114,99,101,
0,87,80,67,108,105,112,97,114,116,225,30,142,97,0,0,0,25,116,69,88,116,
83,111,102,116,119,97,114,101,0,80,97,105,110,116,46,78,69,84,32,118,51,
46,53,46,54,208,131,173,90,0,0,1,218,73,68,65,84,56,79,205,146,205,107,
19,81,20,197,239,100,58,78,172,105,166,141,237,36,134,209,144,143,146,134,
150,54,181,76,164,136,8,241,99,81,37,66,112,37,69,8,6,13,218,133,130,130,
218,22,75,235,70,16,234,66,173,133,66,173,8,226,70,87,110,68,212,118,92,
235,210,63,192,93,81,178,19,149,154,227,153,50,19,130,72,93,234,131,31,
247,125,156,123,238,123,151,39,242,191,143,48,47,184,143,156,34,103,201,
105,114,152,152,127,187,248,94,10,86,200,103,210,32,240,248,194,248,128,
216,36,240,39,147,29,220,156,39,223,252,36,69,81,16,10,133,96,154,166,107,
180,238,25,126,103,92,35,227,173,38,221,92,188,213,117,29,170,170,250,21,
55,163,107,18,143,199,145,78,167,159,114,125,148,188,36,95,201,156,111,
224,86,126,99,24,70,131,162,102,178,166,105,40,151,203,176,109,27,66,147,
222,108,238,135,174,7,135,169,61,68,22,253,100,133,147,235,228,83,62,159,
127,103,236,74,66,98,125,144,54,29,217,108,22,245,122,29,142,227,64,211,
182,33,154,200,32,22,223,125,158,218,73,226,54,118,115,88,100,137,84,11,
163,251,159,132,199,42,144,234,12,100,112,20,238,115,106,181,26,198,142,
29,135,4,59,209,147,202,33,106,37,47,122,79,216,233,27,68,56,113,200,246,
84,186,247,66,166,114,5,114,243,17,228,246,115,72,169,10,25,57,8,57,113,
6,82,28,71,194,46,110,168,90,240,6,181,183,90,155,119,137,139,41,119,35,
16,80,59,243,71,74,31,195,215,238,66,238,189,130,44,127,128,44,188,134,
204,62,68,87,101,18,86,127,97,149,178,23,164,89,221,205,187,76,98,205,110,
118,116,229,250,139,165,247,201,137,217,70,100,122,17,145,169,5,236,57,
55,253,211,178,139,142,40,129,103,212,13,181,86,255,125,238,126,14,149,
119,233,48,162,137,147,214,64,225,142,153,25,124,220,214,30,190,207,253,
171,94,191,182,202,151,118,158,166,200,8,57,224,49,192,24,218,50,235,159,
30,254,2,64,56,132,243,239,19,97,87,0,0,0,0,73,69,78,68,174,66,96,130};
static size_t xml_res_size_4 = 559;
static unsigned char xml_res_file_4[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
0,31,243,255,97,0,0,0,1,115,82,71,66,0,174,206,28,233,0,0,0,4,103,65,77,
65,0,0,177,143,11,252,97,5,0,0,0,9,112,72,89,115,0,0,14,195,0,0,14,195,
1,199,111,168,100,0,0,0,24,116,69,88,116,83,111,102,116,119,97,114,101,
@@ -140,8 +175,8 @@ static unsigned char xml_res_file_3[] = {
229,97,57,12,243,3,195,148,153,246,224,78,44,245,0,0,0,0,73,69,78,68,174,
66,96,130};
static size_t xml_res_size_4 = 603;
static unsigned char xml_res_file_4[] = {
static size_t xml_res_size_5 = 603;
static unsigned char xml_res_file_5[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
0,31,243,255,97,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,2,18,73,
68,65,84,56,141,165,147,77,104,19,81,16,199,255,187,228,163,49,194,150,
@@ -172,8 +207,8 @@ static unsigned char xml_res_file_4[] = {
150,201,235,146,75,94,175,156,174,173,37,29,203,212,7,248,87,249,13,137,
45,22,202,33,129,14,207,0,0,0,0,73,69,78,68,174,66,96,130};
static size_t xml_res_size_5 = 387;
static unsigned char xml_res_file_5[] = {
static size_t xml_res_size_6 = 387;
static unsigned char xml_res_file_6[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
0,31,243,255,97,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,1,58,73,
68,65,84,56,141,165,147,63,75,195,64,24,198,159,212,40,93,250,7,71,43,34,
@@ -194,22 +229,6 @@ static unsigned char xml_res_file_5[] = {
126,231,111,152,235,231,188,105,150,156,225,0,0,0,0,73,69,78,68,174,66,
96,130};
static size_t xml_res_size_6 = 270;
static unsigned char xml_res_file_6[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
0,31,243,255,97,0,0,0,4,115,66,73,84,8,8,8,8,124,8,100,136,0,0,0,197,73,
68,65,84,56,141,99,252,255,255,63,3,37,128,5,155,160,173,199,76,162,76,
61,188,35,157,145,137,34,235,209,93,96,183,230,193,127,126,54,86,6,129,
44,31,188,154,62,76,219,2,103,163,184,224,217,199,15,12,31,127,253,38,221,
5,170,198,109,255,25,24,24,24,24,25,24,24,158,51,48,48,124,231,229,99,224,
224,96,197,80,140,205,101,88,195,224,195,231,79,12,63,126,16,231,18,156,
129,72,172,33,120,99,129,24,67,8,70,35,33,67,136,74,7,248,12,193,154,18,
113,25,194,249,235,55,3,63,27,43,195,225,29,233,140,36,185,0,6,176,165,
19,22,6,6,6,6,246,0,243,251,63,164,132,21,25,167,109,195,107,192,157,100,
3,70,116,49,38,6,6,6,134,43,181,206,74,28,207,222,222,39,197,53,48,192,
72,105,118,6,0,253,131,77,130,231,153,199,49,0,0,0,0,73,69,78,68,174,66,
96,130};
static size_t xml_res_size_7 = 473;
static unsigned char xml_res_file_7[] = {
137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,16,0,0,0,16,8,6,0,0,
@@ -470,7 +489,7 @@ static unsigned char xml_res_file_12[] = {
148,152,61,0,53,102,23,224,196,108,7,120,252,165,188,1,223,94,27,87,47,
146,220,102,0,0,0,0,73,69,78,68,174,66,96,130};
static size_t xml_res_size_13 = 2151;
static size_t xml_res_size_13 = 2129;
static unsigned char xml_res_file_13[] = {
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
110,99,111,100,105,110,103,61,34,85,84,70,45,56,34,63,62,10,60,114,101,
@@ -501,34 +520,33 @@ static unsigned char xml_res_file_13[] = {
115,95,114,101,115,95,105,99,111,110,115,95,100,101,102,97,117,108,116,
95,101,100,105,116,49,54,46,112,110,103,60,47,111,98,106,101,99,116,62,
10,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,
105,116,109,97,112,34,32,110,97,109,101,61,34,102,105,108,108,49,54,34,
62,84,105,108,101,77,97,112,68,105,97,108,111,103,115,95,119,120,115,109,
105,116,104,95,98,105,116,109,97,112,115,46,99,112,112,36,46,46,95,46,46,
95,66,105,110,97,114,105,101,115,95,79,117,116,112,117,116,95,82,101,108,
101,97,115,101,95,87,105,110,100,111,119,115,95,114,101,115,95,102,105,
108,108,49,54,46,112,110,103,60,47,111,98,106,101,99,116,62,10,32,32,60,
111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,105,116,109,
97,112,34,32,110,97,109,101,61,34,104,101,108,112,49,54,34,62,84,105,108,
101,77,97,112,68,105,97,108,111,103,115,95,119,120,115,109,105,116,104,
95,98,105,116,109,97,112,115,46,99,112,112,36,46,46,95,46,46,95,66,105,
110,97,114,105,101,115,95,79,117,116,112,117,116,95,82,101,108,101,97,115,
101,95,87,105,110,100,111,119,115,95,114,101,115,95,105,99,111,110,115,
95,100,101,102,97,117,108,116,95,104,101,108,112,49,54,46,112,110,103,60,
47,111,98,106,101,99,116,62,10,32,32,60,111,98,106,101,99,116,32,99,108,
97,115,115,61,34,119,120,66,105,116,109,97,112,34,32,110,97,109,101,61,
34,105,109,97,103,101,49,54,34,62,84,105,108,101,77,97,112,68,105,97,108,
105,116,109,97,112,34,32,110,97,109,101,61,34,101,121,101,34,62,84,105,
108,101,77,97,112,68,105,97,108,111,103,115,95,119,120,115,109,105,116,
104,95,98,105,116,109,97,112,115,46,99,112,112,36,46,46,95,46,46,95,66,
105,110,97,114,105,101,115,95,79,117,116,112,117,116,95,82,101,108,101,
97,115,101,95,87,105,110,100,111,119,115,95,114,101,115,95,101,121,101,
46,112,110,103,60,47,111,98,106,101,99,116,62,10,32,32,60,111,98,106,101,
99,116,32,99,108,97,115,115,61,34,119,120,66,105,116,109,97,112,34,32,110,
97,109,101,61,34,102,105,108,108,49,54,34,62,84,105,108,101,77,97,112,68,
105,97,108,111,103,115,95,119,120,115,109,105,116,104,95,98,105,116,109,
97,112,115,46,99,112,112,36,46,46,95,46,46,95,66,105,110,97,114,105,101,
115,95,79,117,116,112,117,116,95,82,101,108,101,97,115,101,95,87,105,110,
100,111,119,115,95,114,101,115,95,102,105,108,108,49,54,46,112,110,103,
60,47,111,98,106,101,99,116,62,10,32,32,60,111,98,106,101,99,116,32,99,
108,97,115,115,61,34,119,120,66,105,116,109,97,112,34,32,110,97,109,101,
61,34,104,101,108,112,49,54,34,62,84,105,108,101,77,97,112,68,105,97,108,
111,103,115,95,119,120,115,109,105,116,104,95,98,105,116,109,97,112,115,
46,99,112,112,36,46,46,95,46,46,95,66,105,110,97,114,105,101,115,95,79,
117,116,112,117,116,95,82,101,108,101,97,115,101,95,87,105,110,100,111,
119,115,95,114,101,115,95,105,99,111,110,115,95,100,101,102,97,117,108,
116,95,105,109,97,103,101,49,54,46,112,110,103,60,47,111,98,106,101,99,
116,62,10,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,
120,66,105,116,109,97,112,34,32,110,97,109,101,61,34,108,97,121,101,114,
49,54,34,62,84,105,108,101,77,97,112,68,105,97,108,111,103,115,95,119,120,
116,95,104,101,108,112,49,54,46,112,110,103,60,47,111,98,106,101,99,116,
62,10,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,
66,105,116,109,97,112,34,32,110,97,109,101,61,34,105,109,97,103,101,49,
54,34,62,84,105,108,101,77,97,112,68,105,97,108,111,103,115,95,119,120,
115,109,105,116,104,95,98,105,116,109,97,112,115,46,99,112,112,36,46,46,
95,46,46,95,66,105,110,97,114,105,101,115,95,79,117,116,112,117,116,95,
82,101,108,101,97,115,101,95,87,105,110,100,111,119,115,95,114,101,115,
95,105,99,111,110,115,95,100,101,102,97,117,108,116,95,108,97,121,101,114,
95,105,99,111,110,115,95,100,101,102,97,117,108,116,95,105,109,97,103,101,
49,54,46,112,110,103,60,47,111,98,106,101,99,116,62,10,32,32,60,111,98,
106,101,99,116,32,99,108,97,115,115,61,34,119,120,66,105,116,109,97,112,
34,32,110,97,109,101,61,34,109,97,115,107,69,100,105,116,49,54,34,62,84,
@@ -594,19 +612,19 @@ void wxCF6DCInitBitmapResources()
else wxFileSystem::AddHandler(new wxMemoryFSHandlerBase);
}
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_add16.png"), xml_res_file_0, xml_res_size_0, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_delete16.png"), xml_res_file_1, xml_res_size_1, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_edit16.png"), xml_res_file_2, xml_res_size_2, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_fill16.png"), xml_res_file_3, xml_res_size_3, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_help16.png"), xml_res_file_4, xml_res_size_4, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_image16.png"), xml_res_file_5, xml_res_size_5, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_layer16.png"), xml_res_file_6, xml_res_size_6, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_maskEdit16.png"), xml_res_file_7, xml_res_size_7, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_options16.png"), xml_res_file_8, xml_res_size_8, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_CppPlatform_Extensions_pathfindingobstacleicon16.png"), xml_res_file_9, xml_res_size_9, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_conditions_rectangle.png"), xml_res_file_10, xml_res_size_10, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_remove16.png"), xml_res_file_11, xml_res_size_11, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_tilemasktrianglebr16.png"), xml_res_file_12, xml_res_size_12, wxT("image/png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$E__Developpement_GD_Extensions_TileMapObject_TileMapDialogs_wxsmith_bitmaps.xrc"), xml_res_file_13, xml_res_size_13, wxT("text/xml"));
wxXmlResource::Get()->Load(wxT("memory:XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$E__Developpement_GD_Extensions_TileMapObject_TileMapDialogs_wxsmith_bitmaps.xrc"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_add16.png"), xml_res_file_0, xml_res_size_0, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_delete16.png"), xml_res_file_1, xml_res_size_1, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_edit16.png"), xml_res_file_2, xml_res_size_2, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_eye.png"), xml_res_file_3, xml_res_size_3, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_fill16.png"), xml_res_file_4, xml_res_size_4, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_help16.png"), xml_res_file_5, xml_res_size_5, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_image16.png"), xml_res_file_6, xml_res_size_6, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_maskEdit16.png"), xml_res_file_7, xml_res_size_7, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_options16.png"), xml_res_file_8, xml_res_size_8, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_CppPlatform_Extensions_pathfindingobstacleicon16.png"), xml_res_file_9, xml_res_size_9, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_conditions_rectangle.png"), xml_res_file_10, xml_res_size_10, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_icons_default_remove16.png"), xml_res_file_11, xml_res_size_11, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$.._.._Binaries_Output_Release_Windows_res_tilemasktrianglebr16.png"), xml_res_file_12, xml_res_size_12, wxT("image/x-apple-ios-png"));
XRC_ADD_FILE(wxT("XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$_home_victor_Developpement_GD_Extensions_TileMapObject_TileMapDialogs_wxsmith_bitmaps.xrc"), xml_res_file_13, xml_res_size_13, wxT("text/xml"));
wxXmlResource::Get()->Load(wxT("memory:XRC_resource/TileMapDialogs_wxsmith_bitmaps.cpp$_home_victor_Developpement_GD_Extensions_TileMapObject_TileMapDialogs_wxsmith_bitmaps.xrc"));
}

View File

@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">
<object class="wxBitmap" name="add16">..\..\Binaries\Output\Release_Windows\res\icons_default\add16.png</object>
<object class="wxBitmap" name="delete16">..\..\Binaries\Output\Release_Windows\res\icons_default\delete16.png</object>
<object class="wxBitmap" name="edit16">..\..\Binaries\Output\Release_Windows\res\icons_default\edit16.png</object>
<object class="wxBitmap" name="fill16">..\..\Binaries\Output\Release_Windows\res\fill16.png</object>
<object class="wxBitmap" name="help16">..\..\Binaries\Output\Release_Windows\res\icons_default\help16.png</object>
<object class="wxBitmap" name="image16">..\..\Binaries\Output\Release_Windows\res\icons_default\image16.png</object>
<object class="wxBitmap" name="layer16">..\..\Binaries\Output\Release_Windows\res\icons_default\layer16.png</object>
<object class="wxBitmap" name="maskEdit16">..\..\Binaries\Output\Release_Windows\res\maskEdit16.png</object>
<object class="wxBitmap" name="options16">..\..\Binaries\Output\Release_Windows\res\icons_default\options16.png</object>
<object class="wxBitmap" name="pathfindingobstacleicon16">..\..\Binaries\Output\Release_Windows\CppPlatform\Extensions\pathfindingobstacleicon16.png</object>
<object class="wxBitmap" name="rectangle">..\..\Binaries\Output\Release_Windows\res\conditions\rectangle.png</object>
<object class="wxBitmap" name="remove16">..\..\Binaries\Output\Release_Windows\res\icons_default\remove16.png</object>
<object class="wxBitmap" name="tilemasktrianglebr16">..\..\Binaries\Output\Release_Windows\res\tilemasktrianglebr16.png</object>
<object class="wxBitmap" name="add16">../../Binaries/Output/Release_Windows/res/icons_default/add16.png</object>
<object class="wxBitmap" name="delete16">../../Binaries/Output/Release_Windows/res/icons_default/delete16.png</object>
<object class="wxBitmap" name="edit16">../../Binaries/Output/Release_Windows/res/icons_default/edit16.png</object>
<object class="wxBitmap" name="eye">../../Binaries/Output/Release_Windows/res/eye.png</object>
<object class="wxBitmap" name="fill16">../../Binaries/Output/Release_Windows/res/fill16.png</object>
<object class="wxBitmap" name="help16">../../Binaries/Output/Release_Windows/res/icons_default/help16.png</object>
<object class="wxBitmap" name="image16">../../Binaries/Output/Release_Windows/res/icons_default/image16.png</object>
<object class="wxBitmap" name="maskEdit16">../../Binaries/Output/Release_Windows/res/maskEdit16.png</object>
<object class="wxBitmap" name="options16">../../Binaries/Output/Release_Windows/res/icons_default/options16.png</object>
<object class="wxBitmap" name="pathfindingobstacleicon16">../../Binaries/Output/Release_Windows/CppPlatform/Extensions/pathfindingobstacleicon16.png</object>
<object class="wxBitmap" name="rectangle">../../Binaries/Output/Release_Windows/res/conditions/rectangle.png</object>
<object class="wxBitmap" name="remove16">../../Binaries/Output/Release_Windows/res/icons_default/remove16.png</object>
<object class="wxBitmap" name="tilemasktrianglebr16">../../Binaries/Output/Release_Windows/res/tilemasktrianglebr16.png</object>
</resource>

View File

@@ -49,26 +49,39 @@ sf::VertexArray GenerateVertexArray(TileSet &tileSet, TileMap &tileMap)
{
for(int row = 0; row < tileMap.GetRowsCount(); row++)
{
if(tileMap.GetTile(layer, col, row) == -1)
continue;
TileTextureCoords coords;
if(tileMap.GetTile(layer, col, row) != -1)
{
coords = tileSet.GetTileTextureCoords(tileMap.GetTile(layer, col, row));
}
else
{
coords = tileSet.GetTileTextureCoords(0);
}
vertexs += 4;
TileTextureCoords coords = tileSet.GetTileTextureCoords(tileMap.GetTile(layer, col, row));
{
sf::Vertex vertex(sf::Vector2f(col * tileWidth, row * tileHeight), coords.topLeft);
if(tileMap.GetTile(layer, col, row) == -1)
vertex.color.a = 0;
vertexArray.append(vertex);
}
{
sf::Vertex vertex(sf::Vector2f(col * tileWidth, (row + 1) * tileHeight), coords.bottomLeft);
if(tileMap.GetTile(layer, col, row) == -1)
vertex.color.a = 0;
vertexArray.append(vertex);
}
{
sf::Vertex vertex(sf::Vector2f((col + 1) * tileWidth, (row + 1) * tileHeight), coords.bottomRight);
if(tileMap.GetTile(layer, col, row) == -1)
vertex.color.a = 0;
vertexArray.append(vertex);
}
{
sf::Vertex vertex(sf::Vector2f((col + 1) * tileWidth, row * tileHeight), coords.topRight);
if(tileMap.GetTile(layer, col, row) == -1)
vertex.color.a = 0;
vertexArray.append(vertex);
}
}
@@ -83,33 +96,85 @@ sf::VertexArray GenerateVertexArray(TileSet &tileSet, TileMap &tileMap)
std::vector<Polygon2d> GenerateHitboxes(TileSet &tileSet, TileMap &tileMap)
{
std::vector<Polygon2d> hitboxes;
int tileWidth = tileSet.tileSize.x;
int tileHeight = tileSet.tileSize.y;
const int tileWidth = tileSet.tileSize.x;
const int tileHeight = tileSet.tileSize.y;
if(tileSet.IsDirty())
return hitboxes;
std::cout << "Generating Hitboxes" << std::endl;
for(int layer = 0; layer < 3; layer++)
{
for(int col = 0; col < tileMap.GetColumnsCount(); col++)
{
for(int row = 0; row < tileMap.GetRowsCount(); row++)
{
if(tileMap.GetTile(layer, col, row) == -1 || !tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).collidable)
continue;
//Note : a hitbox is also added for empty/non-collidable tiles to ease the hitbox update when changing a tile
Polygon2d newPolygon;
std::vector<Polygon2d>::iterator newHitboxIt = hitboxes.insert(hitboxes.begin(), tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).hitbox);
std::cout << "Collision mask at " << col * tileWidth << ";" << row * tileHeight << std::endl;
newHitboxIt->Move(col * tileWidth, row * tileHeight);
if(tileMap.GetTile(layer, col, row) != -1 && tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).collidable)
{
newPolygon = tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).hitbox;
}
newPolygon.Move(col * tileWidth, row * tileHeight);
hitboxes.push_back(newPolygon);
}
}
}
std::cout << "Hitbox:OK" << std::endl;
return hitboxes;
}
void UpdateVertexArray(sf::VertexArray &vertexArray, int layer, int col, int row, TileSet &tileSet, TileMap &tileMap)
{
std::cout << "Updating Vertex Array" << std::endl;
if(tileSet.IsDirty())
return;
const int vertexPos = 4 * (layer * tileMap.GetColumnsCount() * tileMap.GetRowsCount() + col * tileMap.GetRowsCount() + row);
std::cout << " at " << vertexPos << std::endl;
TileTextureCoords newCoords = tileMap.GetTile(layer, col, row) != -1 ? tileSet.GetTileTextureCoords(tileMap.GetTile(layer, col, row)) : tileSet.GetTileTextureCoords(0);
vertexArray[vertexPos].texCoords = newCoords.topLeft;
vertexArray[vertexPos + 1].texCoords = newCoords.bottomLeft;
vertexArray[vertexPos + 2].texCoords = newCoords.bottomRight;
vertexArray[vertexPos + 3].texCoords = newCoords.topRight;
for(int i = 0; i < 4; i++)
{
if(tileMap.GetTile(layer, col, row) == -1)
{
vertexArray[vertexPos + i].color.a = 0;
}
else
{
vertexArray[vertexPos + i].color.a = 255;
}
}
std::cout << " [Done]" << std::endl;
}
void UpdateHitboxes(std::vector<Polygon2d> &polygons, sf::Vector2f position, int layer, int col, int row, TileSet &tileSet, TileMap &tileMap)
{
if(tileSet.IsDirty())
return;
const int vertexPos = layer * tileMap.GetColumnsCount() * tileMap.GetRowsCount() + col * tileMap.GetRowsCount() + row;
const int tileWidth = tileSet.tileSize.x;
const int tileHeight = tileSet.tileSize.y;
if(tileMap.GetTile(layer, col, row) != -1 && tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).collidable)
{
polygons[vertexPos] = tileSet.GetTileHitbox(tileMap.GetTile(layer, col, row)).hitbox;
}
else
{
polygons[vertexPos] = Polygon2d();
}
polygons[vertexPos].Move(position.x + col * tileWidth, position.y + row * tileHeight);
}
}

View File

@@ -38,6 +38,9 @@ namespace TileMapExtension
{
sf::VertexArray GenerateVertexArray(TileSet &tileSet, TileMap &tileMap);
std::vector<Polygon2d> GenerateHitboxes(TileSet &tileSet, TileMap &tileMap);
void UpdateVertexArray(sf::VertexArray &vertexArray, int layer, int col, int row, TileSet &tileSet, TileMap &tileMap);
void UpdateHitboxes(std::vector<Polygon2d> &polygons, sf::Vector2f position, int layer, int col, int row, TileSet &tileSet, TileMap &tileMap);
}
#endif

View File

@@ -45,6 +45,8 @@ freely, subject to the following restrictions:
*/
struct TileTextureCoords
{
TileTextureCoords() : topLeft(0,0), topRight(0,0), bottomRight(0,0), bottomLeft(0,0) {};
sf::Vector2f topLeft;
sf::Vector2f topRight;
sf::Vector2f bottomRight;

View File

@@ -121,7 +121,6 @@ void TileSetPanel::OnPaint(wxPaintEvent& event)
{
dc.SetPen(wxPen(wxColor(0, 0, 255, 255), 4));
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawText("#" + wxString::FromDouble(m_tileset->GetTileIDFromCell(m_selectedCol, m_selectedRow)), GetPositionOfTile(m_selectedCol, m_selectedRow) + wxPoint(2, 2));
dc.DrawRectangle(GetPositionOfTile(m_selectedCol, m_selectedRow), wxSize(m_tileset->tileSize.x, m_tileset->tileSize.y));
}
}

View File

@@ -58,6 +58,15 @@ float distance(float minA, float maxA, float minB, float maxB)
CollisionResult GD_API PolygonCollisionTest(Polygon2d & p1, Polygon2d & p2)
{
if(p1.vertices.size() < 3 || p2.vertices.size() < 3)
{
CollisionResult result;
result.collision = false;
result.move_axis.x = 0.0f;
result.move_axis.y = 0.0f;
return result;
}
p1.ComputeEdges();
p2.ComputeEdges();