Ejemplo n.º 1
0
void Sprite::set_hframes(int p_amount) {

	ERR_FAIL_COND(p_amount < 1);
	hframes = p_amount;
	update();
	item_rect_changed();
	_change_notify();
}
Ejemplo n.º 2
0
void Sprite::set_frame(int p_frame) {

	ERR_FAIL_INDEX(p_frame,vframes*hframes);

	if (frame != p_frame)
		item_rect_changed();

	frame=p_frame;
}
Ejemplo n.º 3
0
void Sprite::set_region_rect(const Rect2& p_region_rect) {

	bool changed=region_rect!=p_region_rect;
	region_rect=p_region_rect;
	if (region && changed) {
		update();
		item_rect_changed();
	}
}
Ejemplo n.º 4
0
void ViewportSprite::_notification(int p_what) {

	switch(p_what) {

		case NOTIFICATION_ENTER_TREE: {

			if (!viewport_path.is_empty()) {

				Node *n = get_node(viewport_path);
				ERR_FAIL_COND(!n);
				Viewport *vp=n->cast_to<Viewport>();
				ERR_FAIL_COND(!vp);

				Ref<RenderTargetTexture> rtt = vp->get_render_target_texture();
				texture=rtt;
				texture->connect("changed",this,"update");
				item_rect_changed();
			}
		} break;
		case NOTIFICATION_EXIT_TREE: {

			if (texture.is_valid()) {

				texture->disconnect("changed",this,"update");
				texture=Ref<Texture>();
			}
		} break;
		case NOTIFICATION_DRAW: {

			if (texture.is_null())
				return;

			RID ci = get_canvas_item();

			/*
			texture->draw(ci,Point2());
			break;
			*/

			Size2i s;
			Rect2i src_rect;

			s = texture->get_size();

			src_rect.size=s;

			Point2i ofs=offset;
			if (centered)
				ofs-=s/2;

			Rect2i dst_rect(ofs,s);
			texture->draw_rect_region(ci,dst_rect,src_rect,modulate);

		} break;
	}
}
Ejemplo n.º 5
0
void NinePatchRect::set_region_rect(const Rect2 &p_region_rect) {

	if (region_rect == p_region_rect)
		return;

	region_rect = p_region_rect;

	item_rect_changed();
	_change_notify("region_rect");
}
Ejemplo n.º 6
0
void Sprite::set_frame(int p_frame) {

	ERR_FAIL_INDEX(p_frame,vframes*hframes);

	if (frame != p_frame)
		item_rect_changed();

	frame=p_frame;

	emit_signal(SceneStringNames::get_singleton()->frame_changed);
}
Ejemplo n.º 7
0
void Sprite::set_region_rect(const Rect2 &p_region_rect) {

	if (region_rect == p_region_rect)
		return;

	region_rect = p_region_rect;

	if (region)
		item_rect_changed();

	_change_notify("region_rect");
}
Ejemplo n.º 8
0
void VisibilityNotifier2D::set_rect(const Rect2& p_rect){

	rect=p_rect;
	if (is_inside_tree()) {
		get_world_2d()->_update_notifier(this,get_global_transform().xform(rect));
		if (get_tree()->is_editor_hint()) {
			update();
			item_rect_changed();
		}
	}

	_change_notify("rect");
}
Ejemplo n.º 9
0
void Sprite::set_texture(const Ref<Texture>& p_texture) {

	if (p_texture==texture)
		return;
	if (texture.is_valid()) {
		texture->disconnect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->update);
	}
	texture=p_texture;
	if (texture.is_valid()) {
		texture->set_flags(texture->get_flags()); //remove repeat from texture, it looks bad in sprites
		texture->connect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->update);
	}
	update();
	item_rect_changed();
}
Ejemplo n.º 10
0
void Sprite::set_texture(const Ref<Texture> &p_texture) {

	if (p_texture == texture)
		return;

	if (texture.is_valid())
		texture->remove_change_receptor(this);

	texture = p_texture;

	if (texture.is_valid())
		texture->add_change_receptor(this);

	update();
	emit_signal("texture_changed");
	item_rect_changed();
	_change_notify("texture");
}
Ejemplo n.º 11
0
void Sprite::set_texture(const Ref<Texture>& p_texture) {

	if (p_texture==texture)
		return;
#ifdef DEBUG_ENABLED
	if (texture.is_valid()) {
		texture->disconnect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->update);
	}
#endif
	texture=p_texture;
#ifdef DEBUG_ENABLED
	if (texture.is_valid()) {
		texture->set_flags(texture->get_flags()); //remove repeat from texture, it looks bad in sprites
		texture->connect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->update);
	}
#endif
	update();
	emit_signal("texture_changed");
	item_rect_changed();
}
Ejemplo n.º 12
0
void TileMap::_recompute_rect_cache() {


#ifdef DEBUG_ENABLED

	if (!rect_cache_dirty)
		return;

	Rect2 r_total;
	for (Map<PosKey,Quadrant>::Element *E=quadrant_map.front();E;E=E->next()) {


		Rect2 r;
		r.pos=_map_to_world(E->key().x*_get_quadrant_size(), E->key().y*_get_quadrant_size());
		r.expand_to( _map_to_world(E->key().x*_get_quadrant_size()+_get_quadrant_size(), E->key().y*_get_quadrant_size()) );
		r.expand_to( _map_to_world(E->key().x*_get_quadrant_size()+_get_quadrant_size(), E->key().y*_get_quadrant_size()+_get_quadrant_size()) );
		r.expand_to( _map_to_world(E->key().x*_get_quadrant_size(), E->key().y*_get_quadrant_size()+_get_quadrant_size()) );
		if (E==quadrant_map.front())
			r_total=r;
		else
			r_total=r_total.merge(r);

	}

	if (r_total==Rect2()) {
		rect_cache=Rect2(-10,-10,20,20);
	} else {
		rect_cache=r_total.grow(MAX(cell_size.x,cell_size.y)*_get_quadrant_size());
	}

	item_rect_changed();

	rect_cache_dirty=false;
#endif


}
Ejemplo n.º 13
0
void Sprite::set_centered(bool p_center) {

	centered = p_center;
	update();
	item_rect_changed();
}
Ejemplo n.º 14
0
void Sprite::set_offset(const Point2& p_offset) {

	offset=p_offset;
	update();
	item_rect_changed();
}