|
@@ -32,6 +32,15 @@
|
|
|
void ParallaxLayer::set_motion_scale(const Size2& p_scale) {
|
|
|
|
|
|
motion_scale=p_scale;
|
|
|
+
|
|
|
+
|
|
|
+ ParallaxBackground *pb = get_parent()->cast_to<ParallaxBackground>();
|
|
|
+ if (is_inside_tree() && pb) {
|
|
|
+ Vector2 ofs = pb->get_final_offset();
|
|
|
+ float scale = pb->get_scroll_scale();
|
|
|
+ set_base_offset_and_scale(ofs,scale);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
Size2 ParallaxLayer::get_motion_scale() const {
|
|
@@ -40,6 +49,23 @@ Size2 ParallaxLayer::get_motion_scale() const {
|
|
|
|
|
|
}
|
|
|
|
|
|
+void ParallaxLayer::set_motion_offset(const Size2& p_offset) {
|
|
|
+
|
|
|
+ motion_offset=p_offset;
|
|
|
+
|
|
|
+ ParallaxBackground *pb = get_parent()->cast_to<ParallaxBackground>();
|
|
|
+ if (is_inside_tree() && pb) {
|
|
|
+ Vector2 ofs = pb->get_final_offset();
|
|
|
+ float scale = pb->get_scroll_scale();
|
|
|
+ set_base_offset_and_scale(ofs,scale);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+Size2 ParallaxLayer::get_motion_offset() const {
|
|
|
+
|
|
|
+ return motion_offset;
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
void ParallaxLayer::_update_mirroring() {
|
|
|
|
|
@@ -89,7 +115,7 @@ void ParallaxLayer::set_base_offset_and_scale(const Point2& p_offset,float p_sca
|
|
|
return;
|
|
|
if (get_tree()->is_editor_hint())
|
|
|
return;
|
|
|
- Point2 new_ofs = ((orig_offset+p_offset)*motion_scale)*p_scale;
|
|
|
+ Point2 new_ofs = ((orig_offset+p_offset)*motion_scale)*p_scale+motion_offset;
|
|
|
|
|
|
if (mirroring.x) {
|
|
|
|
|
@@ -132,10 +158,13 @@ void ParallaxLayer::_bind_methods() {
|
|
|
|
|
|
ObjectTypeDB::bind_method(_MD("set_motion_scale","scale"),&ParallaxLayer::set_motion_scale);
|
|
|
ObjectTypeDB::bind_method(_MD("get_motion_scale"),&ParallaxLayer::get_motion_scale);
|
|
|
+ ObjectTypeDB::bind_method(_MD("set_motion_offset","offset"),&ParallaxLayer::set_motion_offset);
|
|
|
+ ObjectTypeDB::bind_method(_MD("get_motion_offset"),&ParallaxLayer::get_motion_offset);
|
|
|
ObjectTypeDB::bind_method(_MD("set_mirroring","mirror"),&ParallaxLayer::set_mirroring);
|
|
|
ObjectTypeDB::bind_method(_MD("get_mirroring"),&ParallaxLayer::get_mirroring);
|
|
|
|
|
|
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"motion/scale"),_SCS("set_motion_scale"),_SCS("get_motion_scale"));
|
|
|
+ ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"motion/offset"),_SCS("set_motion_offset"),_SCS("get_motion_offset"));
|
|
|
ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"motion/mirroring"),_SCS("set_mirroring"),_SCS("get_mirroring"));
|
|
|
|
|
|
}
|