跳转至

GFGridTransform2D

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/foundation/math/gf_grid_transform_2d.gd
  • 模块:Standard
  • 继承:RefCounted
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:3.21.0

2D 矩形网格坐标变换工具。 提供旋转、镜像和对角翻转的纯坐标映射,可用于格子模板、画刷、 房间蓝图、棋盘片段或编辑器工具。它只处理 Vector2i / Vector2 坐标, 不绑定 TileMapLayer、TileSet、渲染、碰撞或项目业务语义。

成员概览

类型 名称 签名
枚举 Transform enum Transform
常量 INVALID_TRANSFORM const INVALID_TRANSFORM: int = -1
方法 is_transform_valid static func is_transform_valid(transform: int) -> bool:
方法 is_axis_swapped static func is_axis_swapped(transform: int) -> bool:
方法 get_transformed_size static func get_transformed_size(size: Vector2i, transform: int) -> Vector2i:
方法 get_inverse_transform static func get_inverse_transform(transform: int) -> int:
方法 transform_local_cell static func transform_local_cell(cell: Vector2i, source_size: Vector2i, transform: int) -> Vector2i:
方法 transform_cell static func transform_cell( cell: Vector2i, source_rect: Rect2i, transform: int, target_origin: Vector2i = Vector2i.ZERO ) -> Vector2i:
方法 transform_cells static func transform_cells( cells: Array[Vector2i], source_rect: Rect2i, transform: int, target_origin: Vector2i = Vector2i.ZERO ) -> Array[Vector2i]:
方法 transform_local_point static func transform_local_point(point: Vector2, source_size: Vector2, transform: int) -> Vector2:
方法 transform_point static func transform_point( point: Vector2, source_rect: Rect2, transform: int, target_origin: Vector2 = Vector2.ZERO ) -> Vector2:

枚举

Transform

  • API:public
enum Transform { ## 不变换。 IDENTITY, ## 顺时针旋转 90 度。 ROTATE_90, ## 旋转 180 度。 ROTATE_180, ## 顺时针旋转 270 度。 ROTATE_270, ## 沿 X 轴方向镜像,即左右翻转。 MIRROR_X, ## 沿 Y 轴方向镜像,即上下翻转。 MIRROR_Y, ## 沿左上到右下对角线翻转。 DIAGONAL_MAIN, ## 沿右上到左下对角线翻转。 DIAGONAL_ANTI, }

2D 矩形局部空间中的离散变换。

常量

INVALID_TRANSFORM

  • API:public
const INVALID_TRANSFORM: int = -1

无效变换哨兵值。

方法

is_transform_valid

  • API:public
static func is_transform_valid(transform: int) -> bool:

判断变换编号是否有效。

参数:

名称 说明
transform Transform 枚举值。

返回:有效时返回 true。

is_axis_swapped

  • API:public
static func is_axis_swapped(transform: int) -> bool:

判断变换后宽高轴是否互换。

参数:

名称 说明
transform Transform 枚举值。

返回:旋转 90/270 或对角翻转时返回 true。

get_transformed_size

  • API:public
static func get_transformed_size(size: Vector2i, transform: int) -> Vector2i:

获取变换后的矩形尺寸。

参数:

名称 说明
size 原始矩形尺寸。
transform Transform 枚举值。

返回:变换后的尺寸;无效尺寸时返回 Vector2i.ZERO。

get_inverse_transform

  • API:public
static func get_inverse_transform(transform: int) -> int:

获取逆变换。

参数:

名称 说明
transform Transform 枚举值。

返回:对应逆变换;无效输入返回 INVALID_TRANSFORM。

transform_local_cell

  • API:public
static func transform_local_cell(cell: Vector2i, source_size: Vector2i, transform: int) -> Vector2i:

变换局部格坐标。

参数:

名称 说明
cell 原始局部格坐标,通常位于 [0, size)
source_size 原始矩形尺寸。
transform Transform 枚举值。

返回:变换后的局部格坐标。

transform_cell

  • API:public
static func transform_cell( cell: Vector2i, source_rect: Rect2i, transform: int, target_origin: Vector2i = Vector2i.ZERO ) -> Vector2i:

变换矩形内的全局格坐标。

参数:

名称 说明
cell 原始格坐标。
source_rect 原始矩形范围。
transform Transform 枚举值。
target_origin 变换后矩形的目标起点。

返回:变换后的格坐标。

transform_cells

  • API:public
static func transform_cells( cells: Array[Vector2i], source_rect: Rect2i, transform: int, target_origin: Vector2i = Vector2i.ZERO ) -> Array[Vector2i]:

批量变换矩形内的全局格坐标。

参数:

名称 说明
cells 原始格坐标列表。
source_rect 原始矩形范围。
transform Transform 枚举值。
target_origin 变换后矩形的目标起点。

返回:变换后的格坐标列表,顺序与输入一致。

transform_local_point

  • API:public
static func transform_local_point(point: Vector2, source_size: Vector2, transform: int) -> Vector2:

变换局部连续坐标。

参数:

名称 说明
point 原始局部坐标,通常位于 [0, size]
source_size 原始矩形尺寸。
transform Transform 枚举值。

返回:变换后的局部坐标。

transform_point

  • API:public
static func transform_point( point: Vector2, source_rect: Rect2, transform: int, target_origin: Vector2 = Vector2.ZERO ) -> Vector2:

变换矩形内的全局连续坐标。

参数:

名称 说明
point 原始坐标。
source_rect 原始矩形范围。
transform Transform 枚举值。
target_origin 变换后矩形的目标起点。

返回:变换后的坐标。