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
无效变换哨兵值。
方法¶
is_transform_valid¶
- API:
public
判断变换编号是否有效。
参数:
| 名称 | 说明 |
|---|---|
transform |
Transform 枚举值。 |
返回:有效时返回 true。
is_axis_swapped¶
- API:
public
判断变换后宽高轴是否互换。
参数:
| 名称 | 说明 |
|---|---|
transform |
Transform 枚举值。 |
返回:旋转 90/270 或对角翻转时返回 true。
get_transformed_size¶
- API:
public
获取变换后的矩形尺寸。
参数:
| 名称 | 说明 |
|---|---|
size |
原始矩形尺寸。 |
transform |
Transform 枚举值。 |
返回:变换后的尺寸;无效尺寸时返回 Vector2i.ZERO。
get_inverse_transform¶
- API:
public
获取逆变换。
参数:
| 名称 | 说明 |
|---|---|
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
变换局部连续坐标。
参数:
| 名称 | 说明 |
|---|---|
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 |
变换后矩形的目标起点。 |
返回:变换后的坐标。