本文整理汇总了C++中Transform2D::set_origin方法的典型用法代码示例。如果您正苦于以下问题:C++ Transform2D::set_origin方法的具体用法?C++ Transform2D::set_origin怎么用?C++ Transform2D::set_origin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transform2D
的用法示例。
在下文中一共展示了Transform2D::set_origin方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _set
bool TileSet::_set(const StringName &p_name, const Variant &p_value) {
String n = p_name;
int slash = n.find("/");
if (slash == -1)
return false;
int id = String::to_int(n.c_str(), slash);
if (!tile_map.has(id))
create_tile(id);
String what = n.substr(slash + 1, n.length());
if (what == "name")
tile_set_name(id, p_value);
else if (what == "texture")
tile_set_texture(id, p_value);
else if (what == "normal_map")
tile_set_normal_map(id, p_value);
else if (what == "tex_offset")
tile_set_texture_offset(id, p_value);
else if (what == "material")
tile_set_material(id, p_value);
else if (what == "modulate")
tile_set_modulate(id, p_value);
else if (what == "region")
tile_set_region(id, p_value);
else if (what == "shape")
tile_set_shape(id, 0, p_value);
else if (what == "shape_offset") {
Transform2D xform = tile_get_shape_transform(id, 0);
xform.set_origin(p_value);
tile_set_shape_transform(id, 0, xform);
} else if (what == "shape_transform")
tile_set_shape_transform(id, 0, p_value);
else if (what == "shape_one_way")
tile_set_shape_one_way(id, 0, p_value);
else if (what == "shapes")
_tile_set_shapes(id, p_value);
else if (what == "occluder")
tile_set_light_occluder(id, p_value);
else if (what == "occluder_offset")
tile_set_occluder_offset(id, p_value);
else if (what == "navigation")
tile_set_navigation_polygon(id, p_value);
else if (what == "navigation_offset")
tile_set_navigation_polygon_offset(id, p_value);
else
return false;
return true;
}
示例2: screen_rect
//.........这里部分代码省略.........
camera_pos.y = new_camera_pos.y + screen_size.y * 0.5 * drag_margin[MARGIN_BOTTOM] * v_ofs;
}
}
} else if (anchor_mode == ANCHOR_MODE_FIXED_TOP_LEFT) {
camera_pos = new_camera_pos;
}
Point2 screen_offset = (anchor_mode == ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5 * zoom) : Point2());
Rect2 screen_rect(-screen_offset + camera_pos, screen_size * zoom);
if (offset != Vector2())
screen_rect.position += offset;
if (limit_smoothing_enabled) {
if (screen_rect.position.x < limit[MARGIN_LEFT])
camera_pos.x -= screen_rect.position.x - limit[MARGIN_LEFT];
if (screen_rect.position.x + screen_rect.size.x > limit[MARGIN_RIGHT])
camera_pos.x -= screen_rect.position.x + screen_rect.size.x - limit[MARGIN_RIGHT];
if (screen_rect.position.y + screen_rect.size.y > limit[MARGIN_BOTTOM])
camera_pos.y -= screen_rect.position.y + screen_rect.size.y - limit[MARGIN_BOTTOM];
if (screen_rect.position.y < limit[MARGIN_TOP])
camera_pos.y -= screen_rect.position.y - limit[MARGIN_TOP];
}
if (smoothing_enabled && !Engine::get_singleton()->is_editor_hint()) {
float c = smoothing * get_fixed_process_delta_time();
smoothed_camera_pos = ((camera_pos - smoothed_camera_pos) * c) + smoothed_camera_pos;
ret_camera_pos = smoothed_camera_pos;
//camera_pos=camera_pos*(1.0-smoothing)+new_camera_pos*smoothing;
} else {
ret_camera_pos = smoothed_camera_pos = camera_pos;
}
} else {
ret_camera_pos = smoothed_camera_pos = camera_pos = new_camera_pos;
first = false;
}
Point2 screen_offset = (anchor_mode == ANCHOR_MODE_DRAG_CENTER ? (screen_size * 0.5 * zoom) : Point2());
float angle = get_global_transform().get_rotation();
if (rotating) {
screen_offset = screen_offset.rotated(angle);
}
Rect2 screen_rect(-screen_offset + ret_camera_pos, screen_size * zoom);
if (screen_rect.position.x < limit[MARGIN_LEFT])
screen_rect.position.x = limit[MARGIN_LEFT];
if (screen_rect.position.x + screen_rect.size.x > limit[MARGIN_RIGHT])
screen_rect.position.x = limit[MARGIN_RIGHT] - screen_rect.size.x;
if (screen_rect.position.y + screen_rect.size.y > limit[MARGIN_BOTTOM])
screen_rect.position.y = limit[MARGIN_BOTTOM] - screen_rect.size.y;
if (screen_rect.position.y < limit[MARGIN_TOP])
screen_rect.position.y = limit[MARGIN_TOP];
if (offset != Vector2()) {
screen_rect.position += offset;
if (screen_rect.position.x + screen_rect.size.x > limit[MARGIN_RIGHT])
screen_rect.position.x = limit[MARGIN_RIGHT] - screen_rect.size.x;
if (screen_rect.position.y + screen_rect.size.y > limit[MARGIN_BOTTOM])
screen_rect.position.y = limit[MARGIN_BOTTOM] - screen_rect.size.y;
if (screen_rect.position.x < limit[MARGIN_LEFT])
screen_rect.position.x = limit[MARGIN_LEFT];
if (screen_rect.position.y < limit[MARGIN_TOP])
screen_rect.position.y = limit[MARGIN_TOP];
}
camera_screen_center = screen_rect.position + screen_rect.size * 0.5;
Transform2D xform;
if (rotating) {
xform.set_rotation(angle);
}
xform.scale_basis(zoom);
xform.set_origin(screen_rect.position /*.floor()*/);
/*
if (0) {
xform = get_global_transform() * xform;
} else {
xform.elements[2]+=get_global_transform().get_origin();
}
*/
return (xform).affine_inverse();
}