yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
dungeon_snapping.h
Go to the documentation of this file.
1#ifndef YAZE_APP_EDITOR_DUNGEON_DUNGEON_SNAPPING_H
2#define YAZE_APP_EDITOR_DUNGEON_DUNGEON_SNAPPING_H
3
4#include <algorithm>
5#include <cmath>
6#include "imgui/imgui.h"
7
9
13enum class GridType {
14 Object, // 8px (1 tile)
15 Sprite, // 16px (2x2 tiles)
16 Item, // 4px horizontal, 16px vertical
17 Door // Snap to walls (handled by DoorPositionManager)
18};
19
23inline int SnapToTile(int pixel) {
24 return (pixel / 8) * 8;
25}
26
30inline int SnapToGrid(int pixel, int grid_size) {
31 if (grid_size <= 0) return pixel;
32 return (pixel / grid_size) * grid_size;
33}
34
38inline ImVec2 SnapToTileGrid(const ImVec2& point) {
39 return ImVec2(static_cast<float>(SnapToTile(static_cast<int>(point.x))),
40 static_cast<float>(SnapToTile(static_cast<int>(point.y))));
41}
42
46inline ImVec2 SnapToItemGrid(const ImVec2& point) {
47 return ImVec2(static_cast<float>(SnapToGrid(static_cast<int>(point.x), 4)),
48 static_cast<float>(SnapToGrid(static_cast<int>(point.y), 16)));
49}
50
54inline ImVec2 SnapToSpriteGrid(const ImVec2& point) {
55 return ImVec2(static_cast<float>(SnapToGrid(static_cast<int>(point.x), 16)),
56 static_cast<float>(SnapToGrid(static_cast<int>(point.y), 16)));
57}
58
59} // namespace yaze::editor::snapping
60
61#endif // YAZE_APP_EDITOR_DUNGEON_DUNGEON_SNAPPING_H
ImVec2 SnapToTileGrid(const ImVec2 &point)
Snap a point to the 8px tile grid.
ImVec2 SnapToSpriteGrid(const ImVec2 &point)
Snap a point for Sprites (16x16px)
int SnapToTile(int pixel)
Snap a pixel coordinate to the 8px tile grid.
int SnapToGrid(int pixel, int grid_size)
Snap a pixel coordinate to a specific grid size.
GridType
Snapping grids for different dungeon elements.
ImVec2 SnapToItemGrid(const ImVec2 &point)
Snap a point for Pot Items (X: 4px, Y: 16px)