From e6e8536672b4f815d49a07429479e8e91ea27504 Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Tue, 7 May 2019 03:34:17 -0700 Subject: [PATCH] Clean up DisplayObject traits --- core/src/avm1.rs | 4 +--- core/src/button.rs | 8 +++----- core/src/display_object.rs | 14 ++++---------- core/src/graphic.rs | 6 +++--- core/src/movie_clip.rs | 10 ++++------ core/src/player.rs | 2 +- core/src/text.rs | 6 +++--- 7 files changed, 19 insertions(+), 31 deletions(-) diff --git a/core/src/avm1.rs b/core/src/avm1.rs index 26f3c1c32..b8b7e4368 100644 --- a/core/src/avm1.rs +++ b/core/src/avm1.rs @@ -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() }) diff --git a/core/src/button.rs b/core/src/button.rs index 37414acf0..56f2520c7 100644 --- a/core/src/button.rs +++ b/core/src/button.rs @@ -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 { diff --git a/core/src/display_object.rs b/core/src/display_object.rs index 0037037d7..d98c07b03 100644 --- a/core/src/display_object.rs +++ b/core/src/display_object.rs @@ -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); } diff --git a/core/src/graphic.rs b/core/src/graphic.rs index 9946a87ec..ec158e3b4 100644 --- a/core/src/graphic.rs +++ b/core/src/graphic.rs @@ -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 } diff --git a/core/src/movie_clip.rs b/core/src/movie_clip.rs index b5c473d15..d754afda1 100644 --- a/core/src/movie_clip.rs +++ b/core/src/movie_clip.rs @@ -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>>, } -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 diff --git a/core/src/player.rs b/core/src/player.rs index d161756bb..ce1546388 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -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::*; diff --git a/core/src/text.rs b/core/src/text.rs index 326950f5d..669a3d595 100644 --- a/core/src/text.rs +++ b/core/src/text.rs @@ -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 }