Add grid snapping

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
Nic0Nic0Nii 2024-03-14 20:16:14 +00:00
parent 50562dbf5c
commit f5588d053b
6 changed files with 32 additions and 12 deletions

View File

@ -956,4 +956,14 @@ wH
<?xpacket end="w"?>'Vk¹bKGD—?Ÿ pHYsÃÃÇo¨dtIMEè *)¡þ‰ëIDATxÚí\Ý–† ,OïÿÊíU紮ƒZWûmI¢Ãø³m`9oe{xyƒŒR<<3C>Õë¼ëÿÞÎ<C39E> <?xpacket end="w"?>'Vk¹bKGD—?Ÿ pHYsÃÃÇo¨dtIMEè *)¡þ‰ëIDATxÚí\Ý–† ,OïÿÊíU紮ƒZWûmI¢Ãø³m`9oe{xyƒŒR<<3C>Õë¼ëÿÞÎ<C39E>
s@Q}Ÿ>ÊèÙ†޵³Ïó<÷}ßz×»çšì{¥ö¯bD—ŽeÆÀ·fÖ^•¬™h®:׫ ü¶mÛn@¯r÷Ù٪ߓ_w¨T?Úé¯Ð3ƨZå³ôK³¶ºxâ7Š5²0âúµwf<77>Ð<EFBFBD>ü(Ú—1Œûÿë÷z3;);æg>Eö,ëDb~=OBû,ù½~ù’Ú¯üª@'­¾ô¼–Ûú­M~¤>ðf3äýnû­nÕê&Ù¿£®-«=Œvf€Õà.èG%ËÒ¬nDzaÉ$²Ú“<C39A>jjßtoñ'G]9K[õ„)lX;ÎÊðeLhžßCÒ¨ ÷•ÃvËÙa&[®5½Ja¹.«å>©0ŒñF=ƒ<>dšüÛ§ }šÖпf 3³•'¡ý•×¾2#Ï·¸4-<2D>öäù¨×è¼(åPy­Yªy$m!Kk¿ê¹´x²Òïl€]<5D>ïÉ®ôþçÕï@-g¥|سGó¯üÃb<C383>¬Îg î^.Ë s@Q}Ÿ>ÊèÙ†޵³Ïó<÷}ßz×»çšì{¥ö¯bD—ŽeÆÀ·fÖ^•¬™h®:׫ ü¶mÛn@¯r÷Ù٪ߓ_w¨T?Úé¯Ð3ƨZå³ôK³¶ºxâ7Š5²0âúµwf<77>Ð<EFBFBD>ü(Ú—1Œûÿë÷z3;);æg>Eö,ëDb~=OBû,ù½~ù’Ú¯üª@'­¾ô¼–Ûú­M~¤>ðf3äýnû­nÕê&Ù¿£®-«=Œvf€Õà.èG%ËÒ¬nDzaÉ$²Ú“<C39A>jjßtoñ'G]9K[õ„)lX;ÎÊðeLhžßCÒ¨ ÷•ÃvËÙa&[®5½Ja¹.«å>©0ŒñF=ƒ<>dšüÛ§ }šÖпf 3³•'¡ý•×¾2#Ï·¸4-<2D>öäù¨×è¼(åPy­Yªy$m!Kk¿ê¹´x²Òïl€]<5D>ïÉ®ôþçÕï@-g¥|سGó¯üÃb<C383>¬Îg î^.Ë
]KÅæ[þÞÛµäáitfXb`†•3äÕd‡E?æf ú~ÑrÁ™yóÛx€Sˆ<1A>yæ÷Ü+æjô©5϶¶ù>ª[+_¶Èï b´ÿ3õÿÊ[óüì<ݶ´¼ýÍÈ“Y<@Ëk 8 <20>¡[%oÏØ/`•éá9¼zDùƒh)SÜÍÀ˜ÓÂ3™¨Û#µdl-+O<>¾ÙD„¦Ñö36cŒìR§yÆKs—¿bª§ùÒôc \´o¬uKÆì<19>×ß¿+<2B>µËš]L™^°œW>©AZ¶žGÝ>R?2°¿Î¯9å yºeSÊ:JíW<C3AD>áÛØÿ? í³<C3AD>g´1fžíGåOCû3<C3BB>fæ ²éáUÓXZªç>ñ‘ðÜû} cg•<67>ÆkÏ®œ(˜¬Á^êÄwöXö"DwyÜ~„ÔN{wö¥FºFdp{–Ïâf…ÆGkeThýëw±(ÍZï÷ „tmË=ÍAH¦€q&¹ÕºÝÄ•ç{brô8ƒΤ—µxpèf<C3A8>ãûÖó¿²íÖ=ï™Öó†t3¢gæeS.Rb$Wÿ˜Æ•.l*#C†°<0F>ŒØÌ<C398>Þ6‰é€±°]™tTBÜÚéÒ±³ÒËCb1yô[GëeiEΓÃÏD½Ò²¯wÖyoð´Äv霟yŸŸwí8"'ãòÄm[ÞÉÒ©K½ƒo¡DY·oZ.j´.ò\Â+ GáÕ9ñN³[IEND®B` ]KÅæ[þÞÛµäáitfXb`†•3äÕd‡E?æf ú~ÑrÁ™yóÛx€Sˆ<1A>yæ÷Ü+æjô©5϶¶ù>ª[+_¶Èï b´ÿ3õÿÊ[óüì<ݶ´¼ýÍÈ“Y<@Ëk 8 <20>¡[%oÏØ/`•éá9¼zDùƒh)SÜÍÀ˜ÓÂ3™¨Û#µdl-+O<>¾ÙD„¦Ñö36cŒìR§yÆKs—¿bª§ùÒôc \´o¬uKÆì<19>×ß¿+<2B>µËš]L™^°œW>©AZ¶žGÝ>R?2°¿Î¯9å yºeSÊ:JíW<C3AD>áÛØÿ? í³<C3AD>g´1fžíGåOCû3<C3BB>fæ ²éáUÓXZªç>ñ‘ðÜû} cg•<67>ÆkÏ®œ(˜¬Á^êÄwöXö"DwyÜ~„ÔN{wö¥FºFdp{–Ïâf…ÆGkeThýëw±(ÍZï÷ „tmË=ÍAH¦€q&¹ÕºÝÄ•ç{brô8ƒΤ—µxpèf<C3A8>ãûÖó¿²íÖ=ï™Öó†t3¢gæeS.Rb$Wÿ˜Æ•.l*#C†°<0F>ŒØÌ<C398>Þ6‰é€±°]™tTBÜÚéÒ±³ÒËCb1yô[GëeiEΓÃÏD½Ò²¯wÖyoð´Äv霟yŸŸwí8"'ãòÄm[ÞÉÒ©K½ƒo¡DY·oZ.j´.ò\Â+ GáÕ9ñN³[IEND®B`‰PNG

IHDR`òñ¬ˆ„iCCPICC profile(}=HÃ@Å_S¥*-vqÈP<C388>ìbEK`¡´Zu0¹ô š4$).ŽkÁÁ<C381>Ūƒ³®®‚ øâìà¤è"%þ/)´ˆñà¸ïî=îÞB«ÆT³/¨šed 1_X¯ð#„AD˜©§²9xޝ{øøzåYÞçþ!¥h2À'Ç™nXÄijÎyŸ8Ì*B|N<eй.»üƹì°À3ÃF.3O&Ë=,÷0« qDQ5Êò.+œ·8«µëÜ“¿0XÔV²\§9Ž$<>B"d4PE ¢´˜ÈÐ~ÂÃ?æøÓäÉUêP!9~ð?øÝ­YŠM»IÁÐÿbÛ@`h7mûûضÛ'€ÿ¸Òºþz ˜û$½ÙÕ"GÀð6pqÝÕä=àr}Ò%Cr$?M¡TÞÏè›
ÀÈ-0´æöÖÙÇé<03>£®o€ƒC`²LÙëïèííß3<C39F>þ~Õ>rÎ"M‡žbKGD—?Ÿ pHYs.#.#x¥?vtIMEè 0*Ÿ_±¥tEXtCommentCreated with GIMPW<50>=IDATxÚí<C39A>ÑŽã EˆÿÿåîS%6jwû6×缌F*`cLæñ€†<ŸÏ'Z€»Û_eÝF\­ý«å‰¶—•³Êóg"XØ<'2å£:9êàŒNzS b"@[¥EÑüûlYY:`"ï3ÜïÐñŒñlÛ¶Íå·mÛV3œlŸ<6C>:<[V¡wÈ¢ëç¬PÔ3—<33>ÿFWëTÕÎêïpîûÊK€ÿ…³ÕuÓÝ<ßÐqré~(X-l†:¼lO±”éhûÙ~<7E>
B¸ hž¹£ý˜ËÎu~Sß¿<8εÇ{<7B>ë(úÞ^w+?û<>¡Ìþ̾À@°ìø9îIÎöÇQˆÌ'ìFšLûNù<4E>.SGÇöUúw ¾×Æ­®ŸÓºWì]Ϧɴ_I~Gùl]ôÏìï<>@ï©8Žª˜²ud) Zb¶ãÒ»}©w'ÈzQWv<57>
úwEp2Ýé=Fø@•µXÖ“ž­‡YóoDô¡HâŒÕïjy26<îfÀŠìl]œˆ[†Ù<E280A0>¬¸„èʸÃV=@¢Þ=tŒ$í©^BeÚVgæí²†V•w>ÿhyÞøÖÿ À[2AT€²ígÛîÚÿý¶|Ö†2e>•ÿ¶^Å<><C385>™ç_b+pf;îñ÷ÑÃ,ѲGù³ý<C2B3><|¶3÷î·êFªH]»Â¾Íœ
û…3‰”í¾±„ÁïiÿWQѯ³À.EÎ
ëhÀYùUé´¢õÜÁéÝá~J‡üãƒàÊ%Àf]U£ÌQÿàùoÙ÷Ù¢³×v#«£<C2AB>îvç¿ÛÚQñ.cõÁë,CF5Ãͦ£r¦Äv8Ò¹ÿgÁ£üŽAXåTäù)ìîÁ¦¼[>R¾ZûgëÈÇ|÷û3u|º×ïÛ:ÔòGÊgŸÕF¤LÛ.û—'„èV^]NPãLŸbDêpß®ìØÅ¨¸™ù˜<C3B9>#úüö·ß.¤a+dK²I1”W¼GäŽ&•±oßV¤´Ê΀ΔXî@1 <1D>¿Rj¬+õ¯Ð]Vþnè¨0kf¯&%fs&„©`ƒ+öWvÂe¼ aè¼|Q¥±Ô%s
ºj2W¿3II£³øü{‡þ‰Ø¼ •ñºÂ(÷yhÎck£¸L>ˆŒýeì6Ó@ù
6*íüsÊÒu+µBnÇ!®Šöç`@ ÇÓùfÛ
u€Ñ(Žâ®Z^qUuœºcàžÍß%9Äm¿ÖpRuž»kyeìî¿s àr`ÙŒLîç7\¿j8Ê:%ÔJ ¥òW ÒL°rû«²j€â<væ,uö,vÖx”÷Ûcüy=¬<16>¹íˆˆœXƒlN€Ù>ÁwC€ÀÝ"åA¿gç<<3C> ŒâZ,ýìÜG¢ÕýÿV¦]yÙu=³ó<¾ú8mäzõŒT8N¬°A&ƒûkÍÝSþÚ<C39A>Yw(nWÍÜëÆºÉÇ6QAÕô¿W1LÙÎ;á²×;ËŸ­'{3±ræ]Õ í÷J[wPàœ<C3A0>€™<>ð\ú«ôÜ®–ã]><3E>+e <0C>:Q@özêŽGb+DUŽC#ëyÜçÑß?3gõóøŠþWø†Ý9+óÑvOÙ²ÒxùœÆrbµ¼’ wa,à6ë÷Õ—r$Iêt+Þèç<0F>ÒkÖÚ‘IEND®B`

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -44,7 +44,7 @@ public:
bool OnUserUpdate(float fElapsedTime) override bool OnUserUpdate(float fElapsedTime) override
{ {
Clear(VERY_DARK_BLUE); Clear(VERY_DARK_BLUE);
/*
view.HandlePanAndZoom(); view.HandlePanAndZoom();
const Tileset&tileset=tilesets[activeTileset]; const Tileset&tileset=tilesets[activeTileset];
@ -62,10 +62,10 @@ public:
} }
for(auto&[objName,obj]:tileset.objects){ for(auto&[objName,obj]:tileset.objects){
view.DrawLineDecal(obj.bounds.pos,obj.bounds.pos+vf2d{2.f,float(obj.bounds.size.y)},YELLOW); view.DrawLineDecal(obj.bounds.pos,obj.bounds.pos+vf2d{0.f,float(obj.bounds.size.y)},YELLOW);
view.DrawLineDecal(obj.bounds.pos,obj.bounds.pos+vf2d{float(obj.bounds.size.x),2},YELLOW); view.DrawLineDecal(obj.bounds.pos,obj.bounds.pos+vf2d{float(obj.bounds.size.x),0.f},YELLOW);
view.DrawLineDecal(obj.bounds.pos+obj.bounds.size,obj.bounds.pos+obj.bounds.size+vf2d{-2.f,-float(obj.bounds.size.y)},YELLOW); view.DrawLineDecal(obj.bounds.pos+obj.bounds.size,obj.bounds.pos+obj.bounds.size+vf2d{0.f,-float(obj.bounds.size.y)},YELLOW);
view.DrawLineDecal(obj.bounds.pos+obj.bounds.size,obj.bounds.pos+obj.bounds.size+vf2d{-float(obj.bounds.size.x),-2.f},YELLOW); view.DrawLineDecal(obj.bounds.pos+obj.bounds.size,obj.bounds.pos+obj.bounds.size+vf2d{-float(obj.bounds.size.x),0.f},YELLOW);
vi2d nameTextSize=GetTextSizeProp(objName)*0.25f; vi2d nameTextSize=GetTextSizeProp(objName)*0.25f;
view.GradientFillRectDecal(obj.bounds.pos,nameTextSize+vf2d{2,2},RED,{255,0,0,64},{255,0,0,64},RED); view.GradientFillRectDecal(obj.bounds.pos,nameTextSize+vf2d{2,2},RED,{255,0,0,64},{255,0,0,64},RED);
@ -89,13 +89,22 @@ public:
const TilesetObject&obj=tileset.objects.at(selectedObj); const TilesetObject&obj=tileset.objects.at(selectedObj);
const bool EditingQuad=editingPoint<4&&editingQuad!=nullptr; const bool EditingQuad=editingPoint<4&&editingQuad!=nullptr;
auto GetSnapPoint=[&](){
vf2d worldCoords=view.ScreenToWorld(GetMousePos());
if(GetKey(CTRL).bHeld){
return vf2d{round(worldCoords.x),round(worldCoords.y)};
}
return vf2d{round(worldCoords.x/tileset.tilewidth)*tileset.tilewidth,round(worldCoords.y/tileset.tileheight)*tileset.tileheight};
};
if(EditingQuad){ if(EditingQuad){
(*editingQuad)[editingPoint]=view.ScreenToWorld(GetMousePos()); (*editingQuad)[editingPoint]=GetSnapPoint();
} }
if(GetMouse(Mouse::LEFT).bPressed){ if(GetMouse(Mouse::LEFT).bPressed){
if(EditingQuad){ if(EditingQuad){
(*editingQuad)[editingPoint]=view.ScreenToWorld(GetMousePos()); (*editingQuad)[editingPoint]=GetSnapPoint();
editingPoint++; editingPoint++;
}else{ }else{
if(obj.collisionTiles.size()==0){ if(obj.collisionTiles.size()==0){
@ -127,13 +136,13 @@ public:
view.DrawPolygonDecal(nullptr,points,uvs,cols); view.DrawPolygonDecal(nullptr,points,uvs,cols);
} }
} }
*/
//Font test. //Font test.
DrawStringDecal({0,0},"the quick brown fox jumps over the lazy dog 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f}); /*DrawStringDecal({0,0},"the quick brown fox jumps over the lazy dog 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f});
DrawStringDecal({0,18},"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f}); DrawStringDecal({0,18},"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f});
DrawStringPropDecal({0,36},"the quick brown fox jumps over the lazy dog 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f}); DrawStringPropDecal({0,36},"the quick brown fox jumps over the lazy dog 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f});
DrawStringPropDecal({0,54},"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f}); DrawStringPropDecal({0,54},"THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG 1234567890 !@#$%^&*()-=_+[]{}\\;':\",./<>?~`",WHITE,{1.5f,1.5f});
*/
return true; return true;
} }

View File

@ -6307,6 +6307,7 @@ namespace olc
mapKeys[DOM_PK_END] = Key::END; mapKeys[DOM_PK_PAGE_UP] = Key::PGUP; mapKeys[DOM_PK_PAGE_DOWN] = Key::PGDN; mapKeys[DOM_PK_END] = Key::END; mapKeys[DOM_PK_PAGE_UP] = Key::PGUP; mapKeys[DOM_PK_PAGE_DOWN] = Key::PGDN;
mapKeys[DOM_PK_BACKSPACE] = Key::BACK; mapKeys[DOM_PK_ESCAPE] = Key::ESCAPE; mapKeys[DOM_PK_BACKSPACE] = Key::BACK; mapKeys[DOM_PK_ESCAPE] = Key::ESCAPE;
mapKeys[DOM_PK_ENTER] = Key::ENTER; mapKeys[DOM_PK_NUMPAD_EQUAL] = Key::EQUALS; mapKeys[DOM_PK_ENTER] = Key::ENTER; mapKeys[DOM_PK_NUMPAD_EQUAL] = Key::EQUALS;
mapKeys[DOM_PK_NUMPAD_ENTER] = Key::ENTER; mapKeys[DOM_PK_PAUSE] = Key::PAUSE; mapKeys[DOM_PK_NUMPAD_ENTER] = Key::ENTER; mapKeys[DOM_PK_PAUSE] = Key::PAUSE;
mapKeys[DOM_PK_SCROLL_LOCK] = Key::SCROLL; mapKeys[DOM_PK_SCROLL_LOCK] = Key::SCROLL;
mapKeys[DOM_PK_NUMPAD_0] = Key::NP0; mapKeys[DOM_PK_NUMPAD_1] = Key::NP1; mapKeys[DOM_PK_NUMPAD_2] = Key::NP2; mapKeys[DOM_PK_NUMPAD_0] = Key::NP0; mapKeys[DOM_PK_NUMPAD_1] = Key::NP1; mapKeys[DOM_PK_NUMPAD_2] = Key::NP2;

BIN
assets/font3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB