Clean up DisplayObject traits
This commit is contained in:
parent
7983d9eb96
commit
e6e8536672
|
@ -1,4 +1,4 @@
|
|||
use crate::display_object::{DisplayObject, DisplayObjectUpdate};
|
||||
use crate::display_object::{DisplayObject, DisplayObjectImpl};
|
||||
use crate::movie_clip::MovieClip;
|
||||
use bacon_rajan_cc::Cc;
|
||||
use rand::{rngs::SmallRng, Rng, SeedableRng};
|
||||
|
@ -162,7 +162,6 @@ impl Avm1 {
|
|||
&self,
|
||||
context: &'a ActionContext,
|
||||
) -> std::cell::Ref<'a, crate::movie_clip::MovieClip> {
|
||||
use crate::display_object::DisplayObjectUpdate;
|
||||
Ref::map(context.active_clip.borrow(), |c| c.as_movie_clip().unwrap())
|
||||
}
|
||||
|
||||
|
@ -170,7 +169,6 @@ impl Avm1 {
|
|||
&self,
|
||||
context: &'a ActionContext,
|
||||
) -> std::cell::RefMut<'a, crate::movie_clip::MovieClip> {
|
||||
use crate::display_object::DisplayObjectUpdate;
|
||||
RefMut::map(context.active_clip.borrow_mut(), |c| {
|
||||
c.as_movie_clip_mut().unwrap()
|
||||
})
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
use crate::display_object::{
|
||||
DisplayObject, DisplayObjectBase, DisplayObjectImpl, DisplayObjectUpdate,
|
||||
};
|
||||
use crate::display_object::{DisplayObject, DisplayObjectBase, DisplayObjectImpl};
|
||||
use crate::matrix::Matrix;
|
||||
use crate::player::{RenderContext, UpdateContext};
|
||||
use crate::prelude::*;
|
||||
|
@ -84,9 +82,9 @@ impl Button {
|
|||
}
|
||||
}
|
||||
|
||||
impl_display_object!(Button, base);
|
||||
impl DisplayObjectImpl for Button {
|
||||
impl_display_object!(base);
|
||||
|
||||
impl DisplayObjectUpdate for Button {
|
||||
fn run_frame(&mut self, context: &mut UpdateContext) {
|
||||
if self.state == ButtonState::Down {
|
||||
// let mut action_context = crate::avm1::ActionContext {
|
||||
|
|
|
@ -45,13 +45,11 @@ impl DisplayObjectImpl for DisplayObjectBase {
|
|||
}
|
||||
}
|
||||
|
||||
impl DisplayObjectUpdate for DisplayObjectBase {}
|
||||
|
||||
impl Trace for DisplayObjectBase {
|
||||
fn trace(&mut self, _tracer: &mut Tracer) {}
|
||||
}
|
||||
|
||||
pub trait DisplayObjectImpl: DisplayObjectUpdate {
|
||||
pub trait DisplayObjectImpl: Trace {
|
||||
fn transform(&self) -> &Transform;
|
||||
fn get_matrix(&self) -> &Matrix;
|
||||
fn set_matrix(&mut self, matrix: &Matrix);
|
||||
|
@ -59,9 +57,7 @@ pub trait DisplayObjectImpl: DisplayObjectUpdate {
|
|||
fn set_color_transform(&mut self, color_transform: &ColorTransform);
|
||||
fn name(&self) -> &str;
|
||||
fn set_name(&mut self, name: &str);
|
||||
}
|
||||
|
||||
pub trait DisplayObjectUpdate: Trace {
|
||||
fn preload(&self, _context: &mut UpdateContext) {}
|
||||
fn run_frame(&mut self, _context: &mut UpdateContext) {}
|
||||
fn run_post_frame(&mut self, _context: &mut UpdateContext) {}
|
||||
|
@ -78,8 +74,7 @@ pub trait DisplayObjectUpdate: Trace {
|
|||
}
|
||||
|
||||
macro_rules! impl_display_object {
|
||||
($name:ident, $field:ident) => {
|
||||
impl crate::display_object::DisplayObjectImpl for $name {
|
||||
($field:ident) => {
|
||||
fn transform(&self) -> &crate::transform::Transform {
|
||||
self.$field.transform()
|
||||
}
|
||||
|
@ -101,7 +96,6 @@ macro_rules! impl_display_object {
|
|||
fn set_name(&mut self, name: &str) {
|
||||
self.$field.set_name(name)
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -121,9 +115,9 @@ impl DisplayObject {
|
|||
}
|
||||
}
|
||||
|
||||
impl_display_object!(DisplayObject, inner);
|
||||
impl DisplayObjectImpl for DisplayObject {
|
||||
impl_display_object!(inner);
|
||||
|
||||
impl DisplayObjectUpdate for DisplayObject {
|
||||
fn preload(&self, context: &mut UpdateContext) {
|
||||
self.inner.preload(context);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::backend::render::ShapeHandle;
|
||||
use crate::color_transform::ColorTransform;
|
||||
use crate::display_object::{DisplayObjectBase, DisplayObjectImpl, DisplayObjectUpdate};
|
||||
use crate::display_object::{DisplayObjectBase, DisplayObjectImpl};
|
||||
use crate::matrix::Matrix;
|
||||
use crate::player::{RenderContext, UpdateContext};
|
||||
use bacon_rajan_cc::{Trace, Tracer};
|
||||
|
@ -25,9 +25,9 @@ impl Graphic {
|
|||
}
|
||||
}
|
||||
|
||||
impl_display_object!(Graphic, base);
|
||||
impl DisplayObjectImpl for Graphic {
|
||||
impl_display_object!(base);
|
||||
|
||||
impl DisplayObjectUpdate for Graphic {
|
||||
fn run_frame(&mut self, _context: &mut UpdateContext) {
|
||||
// Noop
|
||||
}
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
use crate::audio::AudioStreamHandle;
|
||||
use crate::character::Character;
|
||||
use crate::color_transform::ColorTransform;
|
||||
use crate::display_object::{
|
||||
DisplayObject, DisplayObjectBase, DisplayObjectImpl, DisplayObjectUpdate,
|
||||
};
|
||||
use crate::display_object::{DisplayObject, DisplayObjectBase, DisplayObjectImpl};
|
||||
use crate::font::Font;
|
||||
use crate::graphic::Graphic;
|
||||
use crate::matrix::Matrix;
|
||||
|
@ -32,8 +30,6 @@ pub struct MovieClip {
|
|||
children: BTreeMap<Depth, Cc<RefCell<DisplayObject>>>,
|
||||
}
|
||||
|
||||
impl_display_object!(MovieClip, base);
|
||||
|
||||
impl MovieClip {
|
||||
pub fn new() -> MovieClip {
|
||||
MovieClip {
|
||||
|
@ -353,7 +349,9 @@ impl MovieClip {
|
|||
}
|
||||
}
|
||||
|
||||
impl DisplayObjectUpdate for MovieClip {
|
||||
impl DisplayObjectImpl for MovieClip {
|
||||
impl_display_object!(base);
|
||||
|
||||
fn preload(&self, context: &mut UpdateContext) {
|
||||
context
|
||||
.tag_stream
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use crate::audio::Audio;
|
||||
use crate::avm1::Avm1;
|
||||
use crate::backend::{audio::AudioBackend, render::RenderBackend};
|
||||
use crate::display_object::{DisplayObject, DisplayObjectUpdate};
|
||||
use crate::display_object::{DisplayObject, DisplayObjectImpl};
|
||||
use crate::library::Library;
|
||||
use crate::movie_clip::MovieClip;
|
||||
use crate::prelude::*;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use crate::backend::render::ShapeHandle;
|
||||
use crate::color_transform::ColorTransform;
|
||||
use crate::display_object::{DisplayObjectBase, DisplayObjectImpl, DisplayObjectUpdate};
|
||||
use crate::display_object::{DisplayObjectBase, DisplayObjectImpl};
|
||||
use crate::matrix::Matrix;
|
||||
use crate::player::{RenderContext, UpdateContext};
|
||||
use bacon_rajan_cc::{Trace, Tracer};
|
||||
|
@ -20,9 +20,9 @@ impl Text {
|
|||
}
|
||||
}
|
||||
|
||||
impl_display_object!(Text, base);
|
||||
impl DisplayObjectImpl for Text {
|
||||
impl_display_object!(base);
|
||||
|
||||
impl DisplayObjectUpdate for Text {
|
||||
fn run_frame(&mut self, _context: &mut UpdateContext) {
|
||||
// Noop
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue