修复越界锚点持久化兼容
移除持久化层对有序越界 anchor 的错误范围限制 同步移除编辑器中的越界锚点误导警告 新增越界 anchor 保存加载往返回归测试
This commit is contained in:
@@ -678,16 +678,6 @@ fn validate_node(
|
||||
{
|
||||
return Err("UI 节点 Transform 必须是有限数值".to_string());
|
||||
}
|
||||
if node
|
||||
.layout
|
||||
.transform
|
||||
.anchor_min
|
||||
.iter()
|
||||
.chain(node.layout.transform.anchor_max.iter())
|
||||
.any(|value| *value < 0.0 || *value > 1.0)
|
||||
{
|
||||
return Err("UI 节点 Transform 的 anchor 必须处于 0..=1 范围".to_string());
|
||||
}
|
||||
if node
|
||||
.layout
|
||||
.transform
|
||||
@@ -1053,6 +1043,34 @@ mod tests {
|
||||
assert_eq!(loaded.state, state);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn preserves_ordered_out_of_range_transform_anchors() {
|
||||
let (directory, asset_id) = fixture();
|
||||
let mut state = state_with_sprite_and_dragged_transform();
|
||||
let transform = &mut state.ui_trees[0].root.children[0].layout.transform;
|
||||
transform.anchor_min = Vector2::new(-0.25, -0.5);
|
||||
transform.anchor_max = Vector2::new(1.5, 1.25);
|
||||
|
||||
let saved = save_ui_design_state_at(input(directory.path(), &asset_id, 0, state.clone()))
|
||||
.expect("save ordered out-of-range anchors");
|
||||
assert!(matches!(
|
||||
saved,
|
||||
SaveUiDesignStateResult::Saved {
|
||||
revision: 1,
|
||||
state: ref installed,
|
||||
..
|
||||
} if installed == &state
|
||||
));
|
||||
|
||||
let loaded = load_ui_design_state_at(LoadUiDesignStateInput {
|
||||
project_path: directory.path().to_string_lossy().into_owned(),
|
||||
expected_project_id: PROJECT_ID.to_string(),
|
||||
asset_id,
|
||||
})
|
||||
.expect("load ordered out-of-range anchors");
|
||||
assert_eq!(loaded.state, state);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rejects_inverted_transform_anchors() {
|
||||
let state: State = serde_json::from_value(serde_json::json!({
|
||||
|
||||
-2
@@ -367,8 +367,6 @@ export function TransformEditor({
|
||||
const warning =
|
||||
transform.anchor_min[0] > transform.anchor_max[0] ||
|
||||
transform.anchor_min[1] > transform.anchor_max[1] ||
|
||||
transform.anchor_min.some((value) => value < 0 || value > 1) ||
|
||||
transform.anchor_max.some((value) => value < 0 || value > 1) ||
|
||||
geometry?.invalid;
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user