From c8940490ca3dc7a2fed46a91be3480f27eb8b46a Mon Sep 17 00:00:00 2001 From: josh Date: Thu, 13 Nov 2008 15:54:31 +0000 Subject: [PATCH] using common LogoBox object in LightBounce mode git-svn-id: svn://anubis/dwscr/trunk@98 5bef9df8-b654-44bb-925b-0ff18baa8f8c --- ss/LightBounce.cc | 27 ++++++++++++++------------- ss/LightBounce.h | 3 ++- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/ss/LightBounce.cc b/ss/LightBounce.cc index 47d1ea4..0a068b7 100644 --- a/ss/LightBounce.cc +++ b/ss/LightBounce.cc @@ -29,11 +29,6 @@ LightBounceBox::LightBounceBox(LogoBox * lb, this->dist = 0.0; } -LightBounceBox::~LightBounceBox() -{ - delete this->logoBox; -} - /* construct screensaver mode and do some basic OpenGL setup */ LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain) { @@ -47,8 +42,7 @@ LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain) 1000.01); glMatrixMode(GL_MODELVIEW); - LogoBox tmp; - float box_stride = tmp.getWidth() * STRIDE_MULTIPLIER; + float box_stride = m_logoBox.getWidth() * STRIDE_MULTIPLIER; float half_size = SIZE * box_stride / 2.0; float y = -half_size + box_stride / 2.0; int rot = false; @@ -59,32 +53,32 @@ LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain) { // front LightBounceBox * box = new LightBounceBox( - new LogoBox(), x, y, -half_size, 0, 180.0, rot ? 90.0 : 0 + &m_logoBox, x, y, -half_size, 0, 180.0, rot ? 90.0 : 0 ); m_boxes.push_back(box); // right box = new LightBounceBox( - new LogoBox(), half_size, y, x, 0, 90.0, rot ? 0 : 90.0 + &m_logoBox, half_size, y, x, 0, 90.0, rot ? 0 : 90.0 ); m_boxes.push_back(box); // back box = new LightBounceBox( - new LogoBox(), x, y, half_size, 0, 0, rot ? 90.0 : 0 + &m_logoBox, x, y, half_size, 0, 0, rot ? 90.0 : 0 ); m_boxes.push_back(box); // left box = new LightBounceBox( - new LogoBox(), -half_size, y, x, 0, 270.0, rot ? 0 : 90.0 + &m_logoBox, -half_size, y, x, 0, 270.0, rot ? 0 : 90.0 ); m_boxes.push_back(box); // top box = new LightBounceBox( - new LogoBox(), x, half_size, y, 270, 0, rot ? 0 : 90.0 + &m_logoBox, x, half_size, y, 270, 0, rot ? 0 : 90.0 ); m_boxes.push_back(box); // bottom box = new LightBounceBox( - new LogoBox(), x, -half_size, y, 90, 0, rot ? 0 : 90.0 + &m_logoBox, x, -half_size, y, 90, 0, rot ? 0 : 90.0 ); m_boxes.push_back(box); @@ -95,6 +89,13 @@ LightBounce::LightBounce(SSMain * _SSMain) : SSMode(_SSMain) } } +LightBounce::~LightBounce() +{ + int sz = m_boxes.size(); + for (int i = 0; i < sz; i++) + delete m_boxes[i]; +} + /* called every time this screensaver mode should redraw the screen */ void LightBounce::update() { diff --git a/ss/LightBounce.h b/ss/LightBounce.h index edd4aa5..39dc4e4 100644 --- a/ss/LightBounce.h +++ b/ss/LightBounce.h @@ -18,7 +18,6 @@ public: LightBounceBox(LogoBox * lb, float x, float y, float z, float xr, float yr, float zr); - ~LightBounceBox(); LogoBox * logoBox; float x; float y; @@ -33,9 +32,11 @@ class LightBounce : public SSMode { public: LightBounce(SSMain * _SSMain); + ~LightBounce(); void update(); protected: vector m_boxes; + LogoBox m_logoBox; }; #endif