added negative X and negative Y offset to TileMap
clang-format
added negative X and negative Y offset to TileMap
(cherry picked from commit 63e0fd7675)
This commit is contained in:
committed by
Rémi Verschelde
parent
0f1704c9e8
commit
794341e0b5
@ -1392,15 +1392,17 @@ Vector2 TileMap::_map_to_world(int p_x, int p_y, bool p_ignore_ofs) const {
|
||||
if (!p_ignore_ofs) {
|
||||
switch (half_offset) {
|
||||
|
||||
case HALF_OFFSET_X: {
|
||||
case HALF_OFFSET_X:
|
||||
case HALF_OFFSET_NEGATIVE_X: {
|
||||
if (ABS(p_y) & 1) {
|
||||
|
||||
ret += get_cell_transform()[0] * 0.5;
|
||||
ret += get_cell_transform()[0] * (half_offset == HALF_OFFSET_X ? 0.5 : -0.5);
|
||||
}
|
||||
} break;
|
||||
case HALF_OFFSET_Y: {
|
||||
case HALF_OFFSET_Y:
|
||||
case HALF_OFFSET_NEGATIVE_Y: {
|
||||
if (ABS(p_x) & 1) {
|
||||
ret += get_cell_transform()[1] * 0.5;
|
||||
ret += get_cell_transform()[1] * (half_offset == HALF_OFFSET_Y ? 0.5 : -0.5);
|
||||
}
|
||||
} break;
|
||||
default: {}
|
||||
@ -1463,11 +1465,21 @@ Vector2 TileMap::world_to_map(const Vector2 &p_pos) const {
|
||||
ret.x -= 0.5;
|
||||
}
|
||||
} break;
|
||||
case HALF_OFFSET_NEGATIVE_X: {
|
||||
if (ret.y > 0 ? int(ret.y) & 1 : (int(ret.y) - 1) & 1) {
|
||||
ret.x += 0.5;
|
||||
}
|
||||
} break;
|
||||
case HALF_OFFSET_Y: {
|
||||
if (ret.x > 0 ? int(ret.x) & 1 : (int(ret.x) - 1) & 1) {
|
||||
ret.y -= 0.5;
|
||||
}
|
||||
} break;
|
||||
case HALF_OFFSET_NEGATIVE_Y: {
|
||||
if (ret.x > 0 ? int(ret.x) & 1 : (int(ret.x) - 1) & 1) {
|
||||
ret.y += 0.5;
|
||||
}
|
||||
} break;
|
||||
default: {}
|
||||
}
|
||||
|
||||
@ -1678,7 +1690,7 @@ void TileMap::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "cell_size", PROPERTY_HINT_RANGE, "1,8192,1"), "set_cell_size", "get_cell_size");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_quadrant_size", PROPERTY_HINT_RANGE, "1,128,1"), "set_quadrant_size", "get_quadrant_size");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM2D, "cell_custom_transform"), "set_custom_transform", "get_custom_transform");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_half_offset", PROPERTY_HINT_ENUM, "Offset X,Offset Y,Disabled"), "set_half_offset", "get_half_offset");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_half_offset", PROPERTY_HINT_ENUM, "Offset X,Offset Y,Disabled,Offset Negative X,Offset Negative Y"), "set_half_offset", "get_half_offset");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_tile_origin", PROPERTY_HINT_ENUM, "Top Left,Center,Bottom Left"), "set_tile_origin", "get_tile_origin");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_y_sort"), "set_y_sort_mode", "is_y_sort_mode_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "cell_clip_uv"), "set_clip_uv", "get_clip_uv");
|
||||
@ -1704,6 +1716,8 @@ void TileMap::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(HALF_OFFSET_X);
|
||||
BIND_ENUM_CONSTANT(HALF_OFFSET_Y);
|
||||
BIND_ENUM_CONSTANT(HALF_OFFSET_DISABLED);
|
||||
BIND_ENUM_CONSTANT(HALF_OFFSET_NEGATIVE_X);
|
||||
BIND_ENUM_CONSTANT(HALF_OFFSET_NEGATIVE_Y);
|
||||
|
||||
BIND_ENUM_CONSTANT(TILE_ORIGIN_TOP_LEFT);
|
||||
BIND_ENUM_CONSTANT(TILE_ORIGIN_CENTER);
|
||||
|
||||
@ -52,6 +52,8 @@ public:
|
||||
HALF_OFFSET_X,
|
||||
HALF_OFFSET_Y,
|
||||
HALF_OFFSET_DISABLED,
|
||||
HALF_OFFSET_NEGATIVE_X,
|
||||
HALF_OFFSET_NEGATIVE_Y,
|
||||
};
|
||||
|
||||
enum TileOrigin {
|
||||
|
||||
Reference in New Issue
Block a user