core: Ignore NaN in StageObject setters

This commit is contained in:
Mike Welsh 2019-12-14 22:34:16 -08:00
parent e36dbad7d2
commit d5f7521061
1 changed files with 30 additions and 14 deletions

View File

@ -363,7 +363,9 @@ fn set_x<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)?;
if !val.is_nan() {
this.set_x(context.gc_context, val);
}
Ok(())
}
@ -382,7 +384,9 @@ fn set_y<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)?;
if !val.is_nan() {
this.set_y(context.gc_context, val);
}
Ok(())
}
@ -402,7 +406,9 @@ fn set_x_scale<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)? / 100.0;
if !val.is_nan() {
this.set_scale_x(context.gc_context, val);
}
Ok(())
}
@ -422,7 +428,9 @@ fn set_y_scale<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)? / 100.0;
if !val.is_nan() {
this.set_scale_y(context.gc_context, val);
}
Ok(())
}
@ -468,7 +476,9 @@ fn set_alpha<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)? / 100.0;
if !val.is_nan() {
this.set_alpha(context.gc_context, val);
}
Ok(())
}
@ -507,7 +517,9 @@ fn set_width<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)?;
if !val.is_nan() {
this.set_width(context.gc_context, val);
}
Ok(())
}
@ -526,7 +538,9 @@ fn set_height<'gc>(
val: Value<'gc>,
) -> Result<(), Error> {
let val = val.as_number(avm, context)?;
if !val.is_nan() {
this.set_height(context.gc_context, val);
}
Ok(())
}
@ -545,6 +559,7 @@ fn set_rotation<'gc>(
degrees: Value<'gc>,
) -> Result<(), Error> {
let mut degrees = degrees.as_number(avm, context)?;
if !degrees.is_nan() {
// Normalize into the range of [-180, 180].
degrees %= 360.0;
if degrees < -180.0 {
@ -553,6 +568,7 @@ fn set_rotation<'gc>(
degrees -= 360.0
}
this.set_rotation(context.gc_context, degrees.to_radians());
}
Ok(())
}