コード例 #1
0
ファイル: node_2d.cpp プロジェクト: 93i/godot
void Node2D::_update_transform() {

	_mat.set_rotation_and_scale(angle, _scale);
	_mat.elements[2] = pos;

	VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(), _mat);

	if (!is_inside_tree())
		return;

	_notify_transform();
}
コード例 #2
0
ファイル: node_2d.cpp プロジェクト: Ragar0ck/godot
void Node2D::set_transform(const Matrix32& p_transform) {

	_mat=p_transform;
	_xform_dirty=true;

	VisualServer::get_singleton()->canvas_item_set_transform(get_canvas_item(),_mat);

	if (!is_inside_tree())
		return;

	_notify_transform();
}
コード例 #3
0
ファイル: canvas_item.cpp プロジェクト: AMG194/godot
void CanvasItem::_notify_transform(CanvasItem *p_node) {

	if (p_node->xform_change.in_list() && p_node->global_invalid)
		return; //nothing to do

	p_node->global_invalid=true;

	if (!p_node->xform_change.in_list()) {
		if (!p_node->block_transform_notify) {
			if (p_node->is_inside_tree())
				get_tree()->xform_change_list.add(&p_node->xform_change);
		}
	}


	for(List<CanvasItem*>::Element *E=p_node->children_items.front();E;E=E->next()) {

		CanvasItem* ci=E->get();
		if (ci->toplevel)
			continue;
		_notify_transform(ci);
	}
}