avm2: Improve Graphics.drawGraphicsData stubs

We now produce stubs or clearer errors for unsupported argument
combinations, instead of unclear `RustError`s
This commit is contained in:
Aaron Hill 2023-12-24 17:04:22 -05:00 committed by TÖRÖK Attila
parent ba3d1bbf66
commit 9a96941de9
1 changed files with 27 additions and 18 deletions

View File

@ -1438,27 +1438,31 @@ fn handle_graphics_triangle_path<'gc>(
culling_to_triangle_culling(activation, culling)?
};
let vertices = obj
.get_public_property("vertices", activation)?
.coerce_to_object(activation)?;
let vertices = obj.get_public_property("vertices", activation)?.as_object();
let indices = obj
.get_public_property("indices", activation)?
.coerce_to_object(activation)?;
let indices = obj.get_public_property("indices", activation)?.as_object();
let _uvt_data = obj
.get_public_property("uvtData", activation)?
.coerce_to_object(activation)?;
let _uvt_data = obj.get_public_property("uvtData", activation)?.as_object();
if _uvt_data.is_some() {
avm2_stub_method!(
activation,
"flash.display.Graphics",
"drawGraphicsData",
"with uvt data"
);
}
if let Some(vertices) = vertices {
if let Some(indices) = indices {
let vertices = vertices
.as_vector_storage()
.expect("vertices is not a Vector");
let indices = indices
.as_vector_storage()
.expect("indices is not a Vector");
if let Some(vertices) = vertices.as_vector_storage() {
if let Some(indices) = indices.as_vector_storage() {
fn read_point<'gc>(
vertices: &VectorStorage<'gc>,
index: usize,
@ -1507,7 +1511,12 @@ fn handle_graphics_triangle_path<'gc>(
draw_triangle_internal(activation, triangle, drawing, culling);
}
} else {
panic!("Indices is not a vector");
avm2_stub_method!(
activation,
"flash.display.Graphics",
"drawGraphicsData",
"with null indices"
);
};
}