From bfa6212d09d8735d8fd5e2638188e4a99f21ada4 Mon Sep 17 00:00:00 2001 From: Charles McGarvey Date: Sun, 30 Aug 2009 23:59:27 -0600 Subject: [PATCH] preliminary physics, sound, hud --- configure.ac | 13 +- data/scenes/Test.json | 11 +- data/sounds/NightFusion.xm | Bin 0 -> 475014 bytes extra/yoink.ebuild | 14 +- src/Character.cc | 124 +++++++++++++- src/Character.hh | 125 ++++++++++++++- src/Hud.cc | 176 ++++++++++++++++++++ src/Hud.hh | 107 +++++++++++++ src/Makefile.am | 8 + src/Moof/Aabb.cc | 8 +- src/Moof/Animation.cc | 36 ++--- src/Moof/Animation.hh | 6 +- src/Moof/Camera.cc | 28 ++-- src/Moof/Engine.cc | 29 ++-- src/Moof/Engine.hh | 4 +- src/Moof/Math.hh | 19 ++- src/Moof/Mippleton.hh | 4 +- src/Moof/Octree.cc | 320 +++++++++++++++++++++++++++++++++++++ src/Moof/Octree.hh | 269 +++++-------------------------- src/Moof/OpenGL.cc | 22 ++- src/Moof/OpenGL.hh | 8 + src/Moof/Physics.hh | 75 +++++++++ src/Moof/Rectangle.cc | 51 ++++++ src/Moof/Rectangle.hh | 102 ++++++++++++ src/Moof/Resource.cc | 2 +- src/Moof/Resource.hh | 2 +- src/Moof/RigidBody.hh | 72 +++++++++ src/Moof/Scene.cc | 112 ++++++------- src/Moof/Scene.hh | 9 +- src/Moof/Sound.cc | 194 ++++++++++++++++++++++ src/Moof/Sound.hh | 86 ++++++++++ src/Moof/State.hh | 100 ++++++++++++ src/Moof/Texture.cc | 25 ++- src/Moof/Texture.hh | 6 +- src/Moof/Tilemap.cc | 16 +- src/Moof/Tilemap.hh | 6 +- src/YoinkApp.cc | 112 ++++++++----- src/YoinkApp.hh | 15 +- 38 files changed, 1858 insertions(+), 458 deletions(-) create mode 100644 data/sounds/NightFusion.xm create mode 100644 src/Hud.cc create mode 100644 src/Hud.hh create mode 100644 src/Moof/Octree.cc create mode 100644 src/Moof/Physics.hh create mode 100644 src/Moof/Rectangle.cc create mode 100644 src/Moof/Rectangle.hh create mode 100644 src/Moof/RigidBody.hh create mode 100644 src/Moof/Sound.cc create mode 100644 src/Moof/Sound.hh create mode 100644 src/Moof/State.hh diff --git a/configure.ac b/configure.ac index e8d8d9b..e8fd379 100644 --- a/configure.ac +++ b/configure.ac @@ -98,12 +98,21 @@ BOOST_FUNCTION AC_SEARCH_LIBS([IMG_Load], [SDL_image],, [AC_MSG_ERROR([libSDL_image is required])]) +AC_SEARCH_LIBS([Sound_Init], [SDL_sound],, + [AC_MSG_ERROR([libSDL_sound is required])]) + AC_SEARCH_LIBS([glBegin], [GL],, [AC_MSG_ERROR([libGL is required])]) AC_SEARCH_LIBS([gluPerspective], [GLU],, [AC_MSG_ERROR([libGLU is required])]) +AC_SEARCH_LIBS([alGenBuffers], [openal],, + [AC_MSG_ERROR([libopenal is required])]) + +AC_SEARCH_LIBS([alutInit], [alut],, + [AC_MSG_ERROR([libalut is required])]) + AC_SEARCH_LIBS([clock_gettime], [rt], [AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Define to 1 if you have the 'clock_gettime' function.])]) @@ -171,7 +180,7 @@ AC_OUTPUT # Print a friendly little message. # -echo "=====================================" +echo "======================================" echo " Configuration complete!" echo "" @@ -194,5 +203,5 @@ fi echo " To finish the installation, execute:" echo " make" echo " make install" -echo "=====================================" +echo "======================================" diff --git a/data/scenes/Test.json b/data/scenes/Test.json index 562a3be..b6aac66 100644 --- a/data/scenes/Test.json +++ b/data/scenes/Test.json @@ -1,6 +1,6 @@ { "playfield_bounds": [0, 0, -100, 1280, 500, 100], - "maximum_bounds": [-160, 0, -192, 1440, 512, 224], + "maximum_bounds": [-160, 0, -192, 1440, 480, 224], "instructions": [ @@ -1043,16 +1043,13 @@ "translate", [-0.3, -0.17, -900], "scale", [3200, 1600, 1], "texture", "BackgroundFar", - "billboard", - { - "fog": false - }, + "billboard", null, + "translate", [0, 0, 300], "texture", "BackgroundNear", "billboard", { - "blend": true, - "fog": false + "blend": true }, /* Trees */ diff --git a/data/sounds/NightFusion.xm b/data/sounds/NightFusion.xm new file mode 100644 index 0000000000000000000000000000000000000000..06120fce8d456c3690e2685dc30ae426e96e4acb GIT binary patch literal 475014 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

Tzf6ap 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

!?JsJmfR^TeWP_0pgMVfe>K)iX{kHV$- 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 E4|42BqyPW_ literal 0 HcmV?d00001 diff --git a/extra/yoink.ebuild b/extra/yoink.ebuild index 75a1808..52e26c7 100644 --- a/extra/yoink.ebuild +++ b/extra/yoink.ebuild @@ -3,23 +3,30 @@ # $Header: $ EAPI=2 + inherit autotools eutils games DESCRIPTION="Alien-smashing action game" HOMEPAGE="http://www.dogcows.com/" -SRC_URI="http://www.dogcows.com/yoink/${P}.tar.bz2" +SRC_URI="http://www.dogcows.com/yoink/${P}.tar.bz2 + http://eng.utah.edu/~mcgarvey/yoink/${P}.tar.bz2" LICENSE="BSD-2" SLOT="0" -KEYWORDS="~amd64 ~ppc ~x86" +KEYWORDS="amd64 ~ppc x86" IUSE="debug profile" RDEPEND="media-libs/libsdl[opengl] media-libs/sdl-image[png] - virtual/opengl" + virtual/opengl + media-libs/sdl-sound[mikmod, vorbis] + media-libs/openal" DEPEND="${RDEPEND} + dev-libs/boost dev-util/pkgconfig" +RESTRICT="mirror" + src_prepare() { sed -i \ -e "s/-Werror//g" \ @@ -34,6 +41,7 @@ src_prepare() { -e "/man/d" \ doc/Makefile.am \ || die "sed failed" + eautoreconf } diff --git a/src/Character.cc b/src/Character.cc index f508682..97a10b2 100644 --- a/src/Character.cc +++ b/src/Character.cc @@ -28,10 +28,25 @@ #include "Character.hh" +#include Character::Character(const std::string& name) : - tilemap(name), - animation(name) {} + tilemap_(name), + animation_(name) +{ + current.mass = 1.0; + current.inverseMass = 1.0 / current.mass; + + current.force = Mf::Vector2(0.0, -120.0); + + current.position = Mf::Vector2(64.0, 64.0); + current.momentum = Mf::Vector2(0.0, 0.0); + current.recalculate(); + + previous = current; + + updateContainers(); +} Character::~Character() { @@ -40,16 +55,115 @@ Character::~Character() } -void Character::draw(Mf::Scalar alpha) const {} +void Character::update(Mf::Scalar t, Mf::Scalar dt) +{ + previous = current; + Mf::integrate(current, t, dt); + + animation_.update(t, dt); + + updateContainers(); +} + +void Character::updateContainers() +{ + aabb_.init(Mf::Vector3(current.position[0]-16.0, current.position[1]-16.0, z), + Mf::Vector3(current.position[0]+16.0, current.position[1]+16.0, z)); + sphere_.point = Mf::Vector3(current.position[0], current.position[1], z); + sphere_.radius = (aabb_.min - sphere_.point).length(); +} + +void Character::handleEvent(const Mf::Event& event) +{ + // really just for heroine... + + Mf::Scalar force = 500.0; + + Mf::Vector2 left = Mf::Vector2(-force, 0.0); + Mf::Vector2 right = Mf::Vector2(force, 0.0); + Mf::Vector2 down = Mf::Vector2(0.0, -force); + Mf::Vector2 up = Mf::Vector2(0.0, force); + + switch (event.type) + { + case SDL_KEYDOWN: + if (event.key.keysym.sym == SDLK_a) + { + current.force += left; + } + else if (event.key.keysym.sym == SDLK_d) + { + current.force += right; + } + else if (event.key.keysym.sym == SDLK_s) + { + current.force += down; + } + else if (event.key.keysym.sym == SDLK_w) + { + current.force += up; + } + break; + + case SDL_KEYUP: + if (event.key.keysym.sym == SDLK_a) + { + current.force -= left; + } + else if (event.key.keysym.sym == SDLK_d) + { + current.force -= right; + } + else if (event.key.keysym.sym == SDLK_s) + { + current.force -= down; + } + else if (event.key.keysym.sym == SDLK_w) + { + current.force -= up; + } + break; + } + + std::cout << "current force: " << current.force << std::endl; +} + + +void Character::draw(Mf::Scalar alpha) const +{ + State state = cml::lerp(previous, current, alpha); + + glColor3f(1.0f, 1.0f, 1.0f); + tilemap_.bind(); + + Mf::Tilemap::Index frame = animation_.getFrame(); + + Mf::Scalar coords[8]; + tilemap_.getTileCoords(frame, coords); + + Mf::Scalar s = 16.0; + + glBegin(GL_QUADS); + glTexCoord2f(coords[0], coords[1]); + glVertex3(state.position[0]-s, state.position[1]-s, z); + glTexCoord2f(coords[2], coords[3]); + glVertex3(state.position[0]+s, state.position[1]-s, z); + glTexCoord2f(coords[4], coords[5]); + glVertex3(state.position[0]+s, state.position[1]+s, z); + glTexCoord2f(coords[6], coords[7]); + glVertex3(state.position[0]-s, state.position[1]+s, z); + glEnd(); +} + Mf::Tilemap& Character::getTilemap() { - return tilemap; + return tilemap_; } Mf::Animation& Character::getAnimation() { - return animation; + return animation_; } diff --git a/src/Character.hh b/src/Character.hh index e39e7ff..a92992c 100644 --- a/src/Character.hh +++ b/src/Character.hh @@ -29,32 +29,143 @@ #ifndef _CHARACTER_HH_ #define _CHARACTER_HH_ +#include + #include -#include -#include +#include +#include +#include +#include +#include #include /** - * Parent class of animate objects with "personalities." + * Parent class of animate objects with "personalities." This basically + * includes the heroine herself and the bad guys. */ -class Character : public Mf::Drawable +class Character : public Mf::Entity { public: + + struct Derivative + { + Mf::Vector2 velocity; + Mf::Vector2 force; + + Derivative operator*(Mf::Scalar dt) const + { + Derivative derivative; + derivative.velocity = dt * velocity; + derivative.force = dt * force; + return derivative; + } + + Derivative operator+(const Derivative& other) const + { + Derivative derivative; + derivative.velocity = velocity + other.velocity; + derivative.force = force + other.force; + return derivative; + } + }; + + struct State + { + // primary + + Mf::Vector2 position; + Mf::Vector2 momentum; + Mf::Vector2 force; + + // secondary + + Mf::Vector2 velocity; + + // constant + + Mf::Scalar mass; + Mf::Scalar inverseMass; + + + void getDerivative(Derivative& derivative, Mf::Scalar t) const + { + //derivative.velocity = Mf::Vector2(0.0, 0.0); + //derivative.force = Mf::Vector2(0.0, 0.0); + derivative.velocity = velocity; + derivative.force = force; + } + + void recalculate() + { + velocity = momentum * inverseMass; + } + + void applyDerivative(const Derivative& derivative, Mf::Scalar dt) + { + position += dt * derivative.velocity; + momentum += dt * derivative.force; + recalculate(); + } + + State operator*(Mf::Scalar scalar) const + { + State state = *this; + state.position *= scalar; + state.momentum *= scalar; + state.recalculate(); + return state; + } + + State operator+(State state) const + { + State newState = *this; + newState.position += state.position; + newState.momentum += state.momentum; + newState.recalculate(); + return newState; + } + }; + + Character(const std::string& name); - ~Character(); + virtual ~Character(); + void update(Mf::Scalar t, Mf::Scalar dt); + void handleEvent(const Mf::Event& event); void draw(Mf::Scalar alpha) const; Mf::Tilemap& getTilemap(); Mf::Animation& getAnimation(); + State previous; + State current; + + stlplus::ntree::iterator treeNode; + private: - Mf::Tilemap tilemap; - Mf::Animation animation; + + void updateContainers(); + + static const Mf::Scalar z = 96.0; + + Mf::Tilemap tilemap_; + Mf::Animation animation_; }; +typedef boost::shared_ptr CharacterPtr; + + +inline Character::State operator*(Mf::Scalar scalar, const Character::State& state) +{ + Character::State newState = state; + newState.position *= scalar; + newState.momentum *= scalar; + newState.recalculate(); + return newState; +} + #endif // _CHARACTER_HH_ diff --git a/src/Hud.cc b/src/Hud.cc new file mode 100644 index 0000000..ea0dfea --- /dev/null +++ b/src/Hud.cc @@ -0,0 +1,176 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#include + +#include "Hud.hh" + +#include + + +ProgressBar::ProgressBar(const Mf::Tilemap& tilemap, Mf::Tilemap::Index index) : + progress_(0.0), + tilemap_(tilemap) +{ + tilemap.getTileCoords(index, texCoords_); + + Mf::Scalar half = (texCoords_[2] - texCoords_[0]) / 2.0 + texCoords_[0]; + midCoords_[0] = half - 0.01; + midCoords_[1] = half + 0.01; +} + +void ProgressBar::resize(const Mf::Rectangle& rect) +{ + Mf::Scalar height = rect.max[1] - rect.min[1]; + Mf::Scalar halfHeight = height / 2.0; + + width_ = rect.max[0] - rect.min[0] - height; + // assert width > 0 + + vertices_[0] = rect.min; + vertices_[1] = Mf::Vector2(rect.min[0] + halfHeight, rect.min[1]); + vertices_[2] = vertices_[1]; + vertices_[3] = Mf::Vector2(rect.min[0] + height, rect.min[1]); + vertices_[4] = Mf::Vector2(rect.min[0] + height, rect.max[1]); + vertices_[5] = Mf::Vector2(rect.min[0] + halfHeight, rect.max[1]); + vertices_[6] = vertices_[5]; + vertices_[7] = Mf::Vector2(rect.min[0], rect.max[1]); + + setProgress(progress_); +} + +void ProgressBar::setProgress(Mf::Scalar progress) +{ + Mf::Scalar halfHeight = (vertices_[7][1] - vertices_[0][1]) / 2.0; + + vertices_[2][0] = vertices_[1][0] + progress * width_; + vertices_[3][0] = vertices_[1][0] + progress * width_ + halfHeight; + vertices_[4][0] = vertices_[1][0] + progress * width_ + halfHeight; + vertices_[5][0] = vertices_[1][0] + progress * width_; + + progress_ = progress; +} + +void ProgressBar::draw(Mf::Scalar alpha) const +{ + if (Mf::isEqual(progress_, 0.0)) + { + // don't draw anything if the progress is 0% + return; + } + + glColor4f(1.0f, 1.0f, 1.0f, 0.85f); + tilemap_.bind(); + + glBegin(GL_QUADS); + glTexCoord2(texCoords_[0], texCoords_[1]); + glVertex2v(vertices_[0].data()); + glTexCoord2(midCoords_[0], texCoords_[3]); + glVertex2v(vertices_[1].data()); + glTexCoord2(midCoords_[0], texCoords_[5]); + glVertex2v(vertices_[6].data()); + glTexCoord2(texCoords_[6], texCoords_[7]); + glVertex2v(vertices_[7].data()); + + glTexCoord2(midCoords_[0], texCoords_[1]); + glVertex2v(vertices_[1].data()); + glTexCoord2(midCoords_[1], texCoords_[3]); + glVertex2v(vertices_[2].data()); + glTexCoord2(midCoords_[1], texCoords_[5]); + glVertex2v(vertices_[5].data()); + glTexCoord2(midCoords_[0], texCoords_[7]); + glVertex2v(vertices_[6].data()); + + glTexCoord2(midCoords_[1], texCoords_[1]); + glVertex2v(vertices_[2].data()); + glTexCoord2(texCoords_[2], texCoords_[3]); + glVertex2v(vertices_[3].data()); + glTexCoord2(texCoords_[4], texCoords_[5]); + glVertex2v(vertices_[4].data()); + glTexCoord2(midCoords_[1], texCoords_[7]); + glVertex2v(vertices_[5].data()); + glEnd(); +} + + +Hud::Hud() : + bar1_(Mf::Tilemap("StatusBars"), 0), + bar2_(Mf::Tilemap("StatusBars"), 2), + font_("Font") +{ + resize(800, 600); +} + + +void Hud::resize(int width, int height) +{ + cml::matrix_orthographic_RH( projection_, + 0.0, + Mf::Scalar(width), 0.0, Mf::Scalar(height), + 1.0, -1.0, cml::z_clip_neg_one); + + // position the two progress bars at the top-left of the screen + bar1_.resize(Mf::Rectangle(20, height - 51, + 0.7 * width, height - 3)); + bar2_.resize(Mf::Rectangle(20, height - 28, + 0.7 * width, height - 70)); + + setBar1Progress(0.05); + setBar2Progress(0.0); +} + + +void Hud::draw(Mf::Scalar alpha) const +{ + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadMatrix(projection_.data()); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + + bar1_.draw(); + bar2_.draw(); + + glDisable(GL_BLEND); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Hud.hh b/src/Hud.hh new file mode 100644 index 0000000..813e67f --- /dev/null +++ b/src/Hud.hh @@ -0,0 +1,107 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _HUD_HH_ +#define _HUD_HH_ + +/** + * @file Hud.hh + * Heads-up Display + */ + +#include +#include +#include +#include + + +class ProgressBar : public Mf::Drawable +{ +public: + + ProgressBar(const Mf::Tilemap& tilemap, Mf::Tilemap::Index index); + + void resize(const Mf::Rectangle& rect); + + void setProgress(Mf::Scalar progress); + + void draw(Mf::Scalar alpha = 0.0) const; + +private: + + Mf::Scalar progress_; + + Mf::Vector2 vertices_[8]; + Mf::Scalar width_; + + Mf::Tilemap tilemap_; + Mf::Scalar texCoords_[8]; + Mf::Scalar midCoords_[2]; +}; + + +class Hud : public Mf::Drawable +{ +public: + + Hud(); + + inline void setBar1Progress(Mf::Scalar progress) + { + // pass through + bar1_.setProgress(progress); + } + + inline void setBar2Progress(Mf::Scalar progress) + { + // pass through + bar2_.setProgress(progress); + } + + void setNumber(unsigned value); + + void resize(int width, int height); + + void draw(Mf::Scalar alpha = 0.0) const; + +private: + + ProgressBar bar1_; + ProgressBar bar2_; + + unsigned number_; + Mf::Tilemap font_; + + Mf::Matrix4 projection_; +}; + + +#endif // _HUD_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Makefile.am b/src/Makefile.am index f4122de..3273bea 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,13 +27,17 @@ libmoof_la_SOURCES = \ Moof/Interpolator.hh \ Moof/Math.hh \ Moof/Mippleton.hh \ + Moof/Octree.cc \ Moof/Octree.hh \ Moof/OpenGL.cc \ Moof/OpenGL.hh \ + Moof/Physics.hh \ Moof/Plane.cc \ Moof/Plane.hh \ Moof/Random.cc \ Moof/Random.hh \ + Moof/Rectangle.cc \ + Moof/Rectangle.hh \ Moof/Resource.cc \ Moof/Resource.hh \ Moof/Scene.cc \ @@ -45,6 +49,8 @@ libmoof_la_SOURCES = \ Moof/Settings.cc \ Moof/Settings.hh \ Moof/Singleton.hh \ + Moof/Sound.cc \ + Moof/Sound.hh \ Moof/Sphere.cc \ Moof/Sphere.hh \ Moof/StringTools.cc \ @@ -71,6 +77,8 @@ bin_PROGRAMS = yoink yoink_SOURCES = \ Character.cc \ Character.hh \ + Hud.cc \ + Hud.hh \ TilemapFont.cc \ TilemapFont.hh \ Typesetter.cc \ diff --git a/src/Moof/Aabb.cc b/src/Moof/Aabb.cc index c844251..1fb382f 100644 --- a/src/Moof/Aabb.cc +++ b/src/Moof/Aabb.cc @@ -26,10 +26,10 @@ *******************************************************************************/ -#include -#include -#include -#include +#include "Aabb.hh" +#include "Camera.hh" +#include "OpenGL.hh" +#include "Texture.hh" namespace Mf { diff --git a/src/Moof/Animation.cc b/src/Moof/Animation.cc index 38ffa6c..30e3fbb 100644 --- a/src/Moof/Animation.cc +++ b/src/Moof/Animation.cc @@ -39,14 +39,14 @@ namespace Mf { /** * The collection of nested animation classes. The animation implementation - * consists of an AnimationImpl classes which is allocated and initialized with - * the interface object. This class contains the specific fields which are - * required to run a single instance of an animation. The sequence data is - * loaded in a difference class which can be shared amongst multiple animation - * implementation instances. + * consists of an Impl class which is allocated and initialized with the + * interface object. This class contains the specific fields which are required + * to run a single instance of an animation. The sequence data is loaded in a + * different class which can be shared amongst multiple animation implementation + * instances. */ -struct Animation::AnimationImpl +struct Animation::Impl { /** @@ -55,7 +55,7 @@ struct Animation::AnimationImpl * which wants to use these loaded sequences. */ - struct AnimationData : public Mippleton + struct GlobalData : public Mippleton { /** * A frame of an animation sequence. A frame is merely an index which @@ -182,7 +182,7 @@ struct Animation::AnimationImpl void loadFromFile() { - std::string filePath = Animation::getPathToResource(getName()); + std::string filePath = Animation::getPath(getName()); Deserializer deserializer(filePath); @@ -210,8 +210,8 @@ struct Animation::AnimationImpl * registers itself as a mippleton and then loads the animation data. */ - explicit AnimationData(const std::string& name) : - Mippleton(name) + explicit GlobalData(const std::string& name) : + Mippleton(name) { loadFromFile(); } @@ -224,8 +224,8 @@ struct Animation::AnimationImpl * Construction is intialization. */ - AnimationImpl(const std::string& name) : - data(AnimationData::retain(name), &AnimationData::release), + Impl(const std::string& name) : + data(GlobalData::retain(name), &GlobalData::release), currentSequence(0), frameCounter(0), frameIndex(0), @@ -241,7 +241,7 @@ struct Animation::AnimationImpl void startSequence(const std::string& name) { - std::map::iterator it; + std::map::iterator it; it = data->sequences.find(name); @@ -299,9 +299,9 @@ struct Animation::AnimationImpl } } - boost::shared_ptr data; ///< Internal data. + boost::shared_ptr data; ///< Internal data. - AnimationData::Sequence* currentSequence; ///< Active sequence. + GlobalData::Sequence* currentSequence; ///< Active sequence. unsigned frameCounter; ///< Current frame. unsigned frameIndex; ///< Index of current frame. Scalar timeAccum; ///< Time accumulation. @@ -311,7 +311,7 @@ struct Animation::AnimationImpl Animation::Animation(const std::string& name) : // pass through - impl_(new Animation::AnimationImpl(name)) {} + impl_(new Animation::Impl(name)) {} void Animation::startSequence(const std::string& name) @@ -343,9 +343,9 @@ unsigned Animation::getFrame() const * "animations" subdirectory of any of the searched directories. */ -std::string Animation::getPathToResource(const std::string& name) +std::string Animation::getPath(const std::string& name) { - return Resource::getPathToResource("animations/" + name + ".json"); + return Resource::getPath("animations/" + name + ".json"); } diff --git a/src/Moof/Animation.hh b/src/Moof/Animation.hh index 57ce6a8..cfda19b 100644 --- a/src/Moof/Animation.hh +++ b/src/Moof/Animation.hh @@ -63,11 +63,11 @@ public: void update(Scalar t, Scalar dt); unsigned getFrame() const; - static std::string getPathToResource(const std::string& name); + static std::string getPath(const std::string& name); private: - class AnimationImpl; - boost::shared_ptr impl_; + class Impl; + boost::shared_ptr impl_; }; diff --git a/src/Moof/Camera.cc b/src/Moof/Camera.cc index cdebc7a..b38dd14 100644 --- a/src/Moof/Camera.cc +++ b/src/Moof/Camera.cc @@ -37,6 +37,7 @@ namespace Mf { void Camera::setPosition(const Vector3& point) { position_ = point; + calculateSecondary(); //Vector3 coeff[2] = {position_, point}; //pInterp_.init(coeff, 0.1); } @@ -79,7 +80,8 @@ void Camera::update(Scalar t, Scalar dt) void Camera::lookAt(const Vector3& point) { - quaternion_rotation_aim_at(rotation_, position_, point); + cml::quaternion_rotation_aim_at(rotation_, position_, point, Vector3(0.0, -1.0, 0.0)); + calculateSecondary(); } void Camera::adjustFromInput(const Event& event) @@ -87,29 +89,25 @@ void Camera::adjustFromInput(const Event& event) switch (event.type) { case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_RIGHT || - event.key.keysym.sym == SDLK_d) + if (event.key.keysym.sym == SDLK_RIGHT) { Vector3 vec = position_; vec[0] -= 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_LEFT || - event.key.keysym.sym == SDLK_a) + else if (event.key.keysym.sym == SDLK_LEFT) { Vector3 vec = position_; vec[0] += 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_UP || - event.key.keysym.sym == SDLK_w) + else if (event.key.keysym.sym == SDLK_UP) { Vector3 vec = position_; vec[1] -= 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_DOWN || - event.key.keysym.sym == SDLK_s) + else if (event.key.keysym.sym == SDLK_DOWN) { Vector3 vec = position_; vec[1] += 50.0; @@ -123,7 +121,6 @@ void Camera::adjustFromInput(const Event& event) } else if (event.key.keysym.sym == SDLK_PAGEDOWN) { - //position_[2] -= 50.0; Vector3 vec = position_; vec[2] -= 50.0; setPosition(vec); @@ -137,9 +134,9 @@ void Camera::adjustFromInput(const Event& event) Quaternion rotation = rotation_; - quaternion_rotate_about_world_x(rotation, yrel); + cml::quaternion_rotate_about_world_x(rotation, yrel); //rotation_.normalize(); - quaternion_rotate_about_world_y(rotation, xrel); + cml::quaternion_rotate_about_world_y(rotation, xrel); rotation.normalize(); setRotation(rotation); @@ -167,13 +164,14 @@ void Camera::adjustFromInput(const Event& event) void Camera::calculateSecondary() { - matrix_rotation_quaternion(modelview_, rotation_); + cml::matrix_rotation_quaternion(modelview_, rotation_); Matrix4 translate; - matrix_translation(translate, position_); + cml::matrix_translation(translate, position_); - //modelview_ = translate * modelview_; + //modelview_.transpose(); modelview_ *= translate; + //modelview_ = translate * modelview_; frustum_.init(modelview_, projection_); } diff --git a/src/Moof/Engine.cc b/src/Moof/Engine.cc index 53fca73..7823368 100644 --- a/src/Moof/Engine.cc +++ b/src/Moof/Engine.cc @@ -32,6 +32,8 @@ #include #include "fastevents.h" +#include +#include #include "Dispatcher.hh" #include "Engine.hh" @@ -44,10 +46,10 @@ namespace Mf { -class Engine::EngineImpl +class Engine::Impl { public: - EngineImpl(int argc, char* argv[], const std::string& configFile, + Impl(int argc, char* argv[], const std::string& configFile, const std::string& name, const std::string& iconFile, Engine* outer) : interface(outer), @@ -61,18 +63,18 @@ public: { throw Exception(FE_GetError()); } + if (Sound_Init() != 0) + { + //throw Exception(Sound_GetError()); + std::cerr << Sound_GetError() << std::endl; + } + alutInit(&argc, argv); settings.loadFromFile(configFile); long randomSeed; - if (settings.get("engine.rngseed", randomSeed)) - { - setSeed(randomSeed); - } - else - { - setSeed(); - } + if (settings.get("engine.rngseed", randomSeed)) setSeed(randomSeed); + else setSeed(); double ts = 0.01; settings.get("engine.timestep", ts); @@ -89,11 +91,13 @@ public: video->makeActive(); } - ~EngineImpl() + ~Impl() { // the video object must be destroyed before we can shutdown SDL video.reset(); + alutExit(); + Sound_Quit(); FE_Quit(); SDL_Quit(); } @@ -232,8 +236,7 @@ public: Engine::Engine(int argc, char* argv[], const std::string& configFile, const std::string& name, const std::string& iconFile) : - impl_(new Engine::EngineImpl(argc, argv, configFile, name, iconFile, this)) -{} + impl_(new Engine::Impl(argc, argv, configFile, name, iconFile, this)) {} Engine::~Engine() {} diff --git a/src/Moof/Engine.hh b/src/Moof/Engine.hh index 76120c4..971d68f 100644 --- a/src/Moof/Engine.hh +++ b/src/Moof/Engine.hh @@ -75,8 +75,8 @@ public: }; private: - class EngineImpl; - boost::shared_ptr impl_; + class Impl; + boost::shared_ptr impl_; }; diff --git a/src/Moof/Math.hh b/src/Moof/Math.hh index 26c4b51..a38af8b 100644 --- a/src/Moof/Math.hh +++ b/src/Moof/Math.hh @@ -68,12 +68,27 @@ inline Vector3& demoteVector(Vector3& left, const Vector4& right) return left; } -inline Vector4& promoteVector(Vector4& left, const Vector3& right) +inline Vector2& demoteVector(Vector2& left, const Vector3& right) +{ + left[0] = right[0]; + left[1] = right[1]; + return left; +} + +inline Vector4& promoteVector(Vector4& left, const Vector3& right, Scalar extra = 1.0) { left[0] = right[0]; left[1] = right[1]; left[2] = right[2]; - left[3] = 1.0; + left[3] = extra; + return left; +} + +inline Vector3& promoteVector(Vector3& left, const Vector2& right, Scalar extra = 1.0) +{ + left[0] = right[0]; + left[1] = right[1]; + left[3] = extra; return left; } diff --git a/src/Moof/Mippleton.hh b/src/Moof/Mippleton.hh index 7058ecc..9ef9602 100644 --- a/src/Moof/Mippleton.hh +++ b/src/Moof/Mippleton.hh @@ -38,9 +38,11 @@ * after the last interested code releases its hold on the object. */ -#include #include +#include + + namespace Mf { diff --git a/src/Moof/Octree.cc b/src/Moof/Octree.cc new file mode 100644 index 0000000..50b38ac --- /dev/null +++ b/src/Moof/Octree.cc @@ -0,0 +1,320 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#include "Camera.hh" +#include "Octree.hh" + + +namespace Mf { + + +void Octree::sort() +{ + stlplus::ntree::prefix_iterator it; + + for (it = tree_.prefix_begin(); it != tree_.prefix_end(); ++it) + { + it->sort(); + } +} + + +stlplus::ntree::iterator Octree::insert(stlplus::ntree::iterator node, + EntityPtr entity) +{ + Plane::Halfspace halfspace; + int octantNum = -1; + + if (!node.valid()) + { + std::cerr << "cannot insert into invalid node" << std::endl; + return stlplus::ntree::iterator(); + } + + Plane xy = node->getAabb().getPlaneXY(); + halfspace = xy.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = xy.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + Plane xz = node->getAabb().getPlaneXZ(); + halfspace = xz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = xz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + Plane yz = node->getAabb().getPlaneYZ(); + halfspace = yz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = yz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + octantNum = 2; + } + else if (halfspace == Plane::NEGATIVE) + { + octantNum = 3; + } + } + else if (halfspace == Plane::NEGATIVE) + { + Plane yz = node->getAabb().getPlaneYZ(); + halfspace = yz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = yz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + octantNum = 1; + } + else if (halfspace == Plane::NEGATIVE) + { + octantNum = 0; + } + } + } + else if (halfspace == Plane::NEGATIVE) + { + Plane xz = node->getAabb().getPlaneXZ(); + halfspace = xz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = xz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + Plane yz = node->getAabb().getPlaneYZ(); + halfspace = yz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = yz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + octantNum = 6; + } + else if (halfspace == Plane::NEGATIVE) + { + octantNum = 7; + } + } + else if (halfspace == Plane::NEGATIVE) + { + Plane yz = node->getAabb().getPlaneYZ(); + halfspace = yz.intersectsSphere(entity->getSphere()); + if (halfspace == Plane::INTERSECT) + { + halfspace = yz.intersectsAabb(entity->getAabb()); + } + + if (halfspace == Plane::POSITIVE) + { + octantNum = 5; + } + else if (halfspace == Plane::NEGATIVE) + { + octantNum = 4; + } + } + } + + if (octantNum == -1) + { + node->objects.push_front(entity); + return node; + } + else + { + if ((int)tree_.children(node) <= octantNum) + { + addChild(node, octantNum); + } + + stlplus::ntree::iterator child = tree_.child(node, octantNum); + + if (child.valid()) + { + return insert(child, entity); + } + else + { + std::cerr << "expected but found no child at index " << octantNum << std::endl; + return stlplus::ntree::iterator(); + } + } +} + +stlplus::ntree::iterator Octree::reinsert(EntityPtr entity, + stlplus::ntree::iterator node) +{ + if (!node.valid()) + { + std::cerr << "cannot move entity from invalid node" << std::endl; + return stlplus::ntree::iterator(); + } + + std::list::iterator it; + it = std::find(node->objects.begin(), node->objects.end(), entity); + + if (it != node->objects.end()) + { + node->objects.erase(it); + } + + return insert(entity); +} + + +void Octree::addChild(stlplus::ntree::iterator node, int index) +{ + Aabb octant; + + if (!node.valid()) + { + std::cerr << "cannot add children to invalid node" << std::endl; + return; + } + + for (int i = tree_.children(node); i <= index; ++i) + { + node->getAabb().getOctant(octant, i); + tree_.append(node, octant); + } +} + + +void Octree::draw(stlplus::ntree::iterator node, Scalar alpha) +{ + if (!node.valid()) + { + std::cerr << "cannot draw null child node :-(" << std::endl; + return; + } + + node->draw(alpha); + + for (unsigned i = 0; i < tree_.children(node); ++i) + { + stlplus::ntree::iterator child = tree_.child(node, i); + + if (child.valid()) + { + draw(child, alpha); + } + else + { + std::cerr << "node is not a leaf, but has an invalid child" << std::endl; + } + + } +} + +void Octree::drawIfVisible(stlplus::ntree::iterator node, + Scalar alpha, const Camera& cam) +{ + //node.drawIfVisible(alpha, cam); + + if (!node.valid()) + { + std::cerr << "invalid child while drawing :-(" << std::endl; + return; + } + + Frustum::Collision collision = + cam.getFrustum().containsSphere(node->getSphere()); + if (collision == Frustum::OUTSIDE) return; + + collision = cam.getFrustum().containsAabb(node->getAabb()); + if (collision == Frustum::OUTSIDE) return; + + + if (collision == Frustum::INSIDE) + { + node->draw(alpha); + } + else // collision == Frustum::INTERSECT + { + node->drawIfVisible(alpha, cam); + } + + if (tree_.children(node) > 0) + { + if (collision == Frustum::INSIDE) + { + for (unsigned i = 0; i < tree_.children(node); ++i) + { + stlplus::ntree::iterator child = tree_.child(node, i); + + if (child.valid()) + { + draw(child, alpha); + } + else + { + std::cerr << "node is not a leaf, but has an invalid child" << std::endl; + } + + } + } + else // collision == Frustum::INTERSECT + { + for (unsigned i = 0; i < tree_.children(node); ++i) + { + stlplus::ntree::iterator child = tree_.child(node, i); + + if (child.valid()) + { + drawIfVisible(child, alpha, cam); + } + else + { + std::cerr << "node is not a leaf, but has an invalid child" << std::endl; + } + } + } + } +} + + +} // namespace Mf + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Octree.hh b/src/Moof/Octree.hh index 1c57ff2..d896844 100644 --- a/src/Moof/Octree.hh +++ b/src/Moof/Octree.hh @@ -29,6 +29,7 @@ #ifndef _MOOF_OCTREE_HH_ #define _MOOF_OCTREE_HH_ +#include #include #include @@ -45,6 +46,9 @@ namespace Mf { +class Camera; + + struct OctreeNode : public Entity { std::list objects; @@ -71,8 +75,9 @@ struct OctreeNode : public Entity { (*it)->draw(alpha); } - if (!objects.empty()) - aabb_.draw(); // temporary + + //if (!objects.empty()) + //aabb_.draw(); // temporary } void drawIfVisible(Scalar alpha, const Camera& cam) const @@ -83,8 +88,9 @@ struct OctreeNode : public Entity { (*it)->drawIfVisible(alpha, cam); } - if (!objects.empty()) - aabb_.draw(); + + //if (!objects.empty()) + //aabb_.draw(); } @@ -97,257 +103,58 @@ struct OctreeNode : public Entity return false; } -}; -class Octree; -typedef boost::shared_ptr OctreePtr; + static bool compareZOrder(EntityPtr a, EntityPtr b) + { + return a->getSphere().point[2] < b->getSphere().point[2]; + } -class Octree -{ + void sort() + { + //std::sort(objects.begin(), objects.end(), compareZOrder); + objects.sort(compareZOrder); + } +}; - stlplus::ntree root_; +class Octree +{ public: explicit Octree(const OctreeNode& rootNode) { - root_.insert(rootNode); + tree_.insert(rootNode); } - void insert(EntityPtr entity) + stlplus::ntree::iterator insert(EntityPtr entity) { - insert(root_.root(), entity); + return insert(tree_.root(), entity); } - void insert(stlplus::ntree::iterator node, EntityPtr entity) - { - Plane::Halfspace halfspace; - int octantNum = -1; + stlplus::ntree::iterator reinsert(EntityPtr entity, + stlplus::ntree::iterator node); - if (!node.valid()) - { - std::cerr << "cannot insert into invalid node" << std::endl; - return; - } - - Plane xy = node->getAabb().getPlaneXY(); - halfspace = xy.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - Plane xz = node->getAabb().getPlaneXZ(); - halfspace = xz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - Plane yz = node->getAabb().getPlaneYZ(); - halfspace = yz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - octantNum = 2; - } - else if (halfspace == Plane::NEGATIVE) - { - octantNum = 3; - } - } - else if (halfspace == Plane::NEGATIVE) - { - Plane yz = node->getAabb().getPlaneYZ(); - halfspace = yz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - octantNum = 1; - } - else if (halfspace == Plane::NEGATIVE) - { - octantNum = 0; - } - } - } - else if (halfspace == Plane::NEGATIVE) - { - Plane xz = node->getAabb().getPlaneXZ(); - halfspace = xz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - Plane yz = node->getAabb().getPlaneYZ(); - halfspace = yz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - octantNum = 6; - } - else if (halfspace == Plane::NEGATIVE) - { - octantNum = 7; - } - } - else if (halfspace == Plane::NEGATIVE) - { - Plane yz = node->getAabb().getPlaneYZ(); - halfspace = yz.intersectsSphere(entity->getSphere()); - - if (halfspace == Plane::POSITIVE) - { - octantNum = 5; - } - else if (halfspace == Plane::NEGATIVE) - { - octantNum = 4; - } - } - } - - if (octantNum == -1) - { - node->objects.push_front(entity); - //return node; - } - else - { - if (root_.children(node) == 0) - { - addChildren(node); - } - - stlplus::ntree::iterator child = root_.child(node, octantNum); - - if (child.valid()) - { - return insert(child, entity); - } - else - { - std::cerr << "expected but found no child at index " << octantNum << std::endl; - //return stlplus::ntree::iterator(); - } - //return WeakPtr(); - } - } - - void addChildren(stlplus::ntree::iterator node) + void drawIfVisible(Scalar alpha, const Camera& cam) { - Aabb octant; - - if (!node.valid()) - { - std::cerr << "cannot add children to invalid node" << std::endl; - return; - } - - for (int i = 0; i < 8; ++i) - { - node->getAabb().getOctant(octant, i); - //OctreeNode octantNode(octant); - - root_.append(node, octant); - } + drawIfVisible(tree_.root(), alpha, cam); } - void draw(stlplus::ntree::iterator node, Scalar alpha) - { - if (!node.valid()) - { - std::cerr << "cannot draw null child node :-(" << std::endl; - return; - } + void sort(); - node->draw(alpha); - - for (unsigned i = 0; i < root_.children(node); ++i) - { - stlplus::ntree::iterator child = root_.child(node, i); - - if (child.valid()) - { - draw(child, alpha); - } - else - { - std::cerr << "node is not a leaf, but has an invalid child" << std::endl; - } - - } - } +private: + stlplus::ntree::iterator insert(stlplus::ntree::iterator node, EntityPtr entity); + + void addChild(stlplus::ntree::iterator node, int index); + void draw(stlplus::ntree::iterator node, Scalar alpha); void drawIfVisible(stlplus::ntree::iterator node, - Scalar alpha, const Camera& cam) - { - //node.drawIfVisible(alpha, cam); - - if (!node.valid()) - { - std::cerr << "invalid child while drawing :-(" << std::endl; - return; - } - - Frustum::Collision collision = - cam.getFrustum().containsSphere(node->getSphere()); - if (collision == Frustum::OUTSIDE) return; - - collision = cam.getFrustum().containsAabb(node->getAabb()); - if (collision == Frustum::OUTSIDE) return; - - - if (collision == Frustum::INSIDE) - { - node->draw(alpha); - } - else // collision == Frustum::INTERSECT - { - node->drawIfVisible(alpha, cam); - } - - if (root_.children(node) > 0) - { - if (collision == Frustum::INSIDE) - { - for (unsigned i = 0; i < root_.children(node); ++i) - { - stlplus::ntree::iterator child = root_.child(node, i); - - if (child.valid()) - { - draw(child, alpha); - } - else - { - std::cerr << "node is not a leaf, but has an invalid child" << std::endl; - } - - } - } - else // collision == Frustum::INTERSECT - { - for (unsigned i = 0; i < root_.children(node); ++i) - { - stlplus::ntree::iterator child = root_.child(node, i); - - if (child.valid()) - { - drawIfVisible(child, alpha, cam); - } - else - { - std::cerr << "node is not a leaf, but has an invalid child" << std::endl; - } - } - } - } - } - - void drawIfVisible(Scalar alpha, const Camera& cam) - { - drawIfVisible(root_.root(), alpha, cam); - } + Scalar alpha, const Camera& cam); + stlplus::ntree tree_; }; +typedef boost::shared_ptr OctreePtr; } // namespace Mf diff --git a/src/Moof/OpenGL.cc b/src/Moof/OpenGL.cc index e3e742b..b286b35 100644 --- a/src/Moof/OpenGL.cc +++ b/src/Moof/OpenGL.cc @@ -52,6 +52,13 @@ void (*glVertex2v)(const GLscalar*)(glVertex2dv); void (*glVertex3v)(const GLscalar*)(glVertex3dv); void (*glVertex4v)(const GLscalar*)(glVertex4dv); +void (*glTexCoord2)(GLscalar, GLscalar)(glTexCoord2d); +void (*glTexCoord3)(GLscalar, GLscalar, GLscalar)(glTexCoord3d); +void (*glTexCoord4)(GLscalar, GLscalar, GLscalar, GLscalar)(glTexCoord4d); +void (*glTexCoord2v)(const GLscalar*)(glTexCoord2dv); +void (*glTexCoord3v)(const GLscalar*)(glTexCoord3dv); +void (*glTexCoord4v)(const GLscalar*)(glTexCoord4dv); + #else void (*glGetScalarv(GLenum, GLscalar*)(glGetFloatv); @@ -63,6 +70,11 @@ void (*glScale)(GLscalar, GLscalar, GLscalar)(glScalef); void (*glRotate)(GLscalar, GLscalar, GLscalar, GLscalar)(glRotatef); void (*glTranslate)(GLscalar, GLscalar, GLscalar)(glTranslatef); +void (*glColor3)(GLscalar, GLscalar, GLscalar)(glColor3f); +void (*glColor4)(GLscalar, GLscalar, GLscalar, GLscalar)(glColor4f); +void (*glColor3v)(const GLscalar*)(glColor3fv); +void (*glColor4v)(const GLscalar*)(glColor4fv); + void (*glVertex2)(GLscalar, GLscalar)(glVertex2f); void (*glVertex3)(GLscalar, GLscalar, GLscalar)(glVertex3f); void (*glVertex4)(GLscalar, GLscalar, GLscalar, GLscalar)(glVertex4f); @@ -70,10 +82,12 @@ void (*glVertex2v)(const GLscalar*)(glVertex2fv); void (*glVertex3v)(const GLscalar*)(glVertex3fv); void (*glVertex4v)(const GLscalar*)(glVertex4fv); -void (*glColor3)(GLscalar, GLscalar, GLscalar)(glColor3f); -void (*glColor4)(GLscalar, GLscalar, GLscalar, GLscalar)(glColor4f); -void (*glColor3v)(const GLscalar*)(glColor3fv); -void (*glColor4v)(const GLscalar*)(glColor4fv); +void (*glTexCoord2)(GLscalar, GLscalar)(glTexCoord2f); +void (*glTexCoord3)(GLscalar, GLscalar, GLscalar)(glTexCoord3f); +void (*glTexCoord4)(GLscalar, GLscalar, GLscalar, GLscalar)(glTexCoord4f); +void (*glTexCoord2v)(const GLscalar*)(glTexCoord2df); +void (*glTexCoord3v)(const GLscalar*)(glTexCoord3df); +void (*glTexCoord4v)(const GLscalar*)(glTexCoord4df); #endif diff --git a/src/Moof/OpenGL.hh b/src/Moof/OpenGL.hh index 657f05f..51c3e5f 100644 --- a/src/Moof/OpenGL.hh +++ b/src/Moof/OpenGL.hh @@ -70,6 +70,14 @@ extern void (*glVertex2v)(const GLscalar*); extern void (*glVertex3v)(const GLscalar*); extern void (*glVertex4v)(const GLscalar*); +extern void (*glTexCoord2)(GLscalar, GLscalar); +extern void (*glTexCoord3)(GLscalar, GLscalar, GLscalar); +extern void (*glTexCoord4)(GLscalar, GLscalar, GLscalar, GLscalar); +extern void (*glTexCoord2v)(const GLscalar*); +extern void (*glTexCoord3v)(const GLscalar*); +extern void (*glTexCoord4v)(const GLscalar*); + + #endif // _MOOF_OPENGL_HH_ diff --git a/src/Moof/Physics.hh b/src/Moof/Physics.hh new file mode 100644 index 0000000..a79a5c3 --- /dev/null +++ b/src/Moof/Physics.hh @@ -0,0 +1,75 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_PHYSICS_HH_ +#define _MOOF_PHYSICS_HH_ + +#include + + +namespace Mf { + +// Generic implementation of the RK4 integrator. To use, you need one type +// representing the state and another containing the derivatives of the state. + +template +inline D evaluate(const S& state, Scalar t) +{ + D derivative; + state.getDerivative(derivative, t); + return derivative; +} + +template +inline D evaluate(const S& state, Scalar t, Scalar dt, const D& derivative) +{ + S temp = state; + temp.applyDerivative(derivative, dt); + return evaluate(temp, t + dt); +} + + +template +inline void integrate(S& state, Scalar t, Scalar dt) +{ + D a = evaluate(state, t); + D b = evaluate(state, t, dt * 0.5, a); + D c = evaluate(state, t, dt * 0.5, b); + D d = evaluate(state, t, dt, c); + + //state += (a + (b + c) * 2.0 + d) * (1.0/6.0) * dt; + state.applyDerivative((a + (b + c) * 2.0 + d) * (1.0/6.0), dt); +} + + +} // namespace Mf + +#endif // _MOOF_PHYSICS_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Rectangle.cc b/src/Moof/Rectangle.cc new file mode 100644 index 0000000..fef6ac4 --- /dev/null +++ b/src/Moof/Rectangle.cc @@ -0,0 +1,51 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#include "Rectangle.hh" + + +namespace Mf { + + +void Rectangle::getCorners(Vector2 corners[4]) const +{ + corners[0][0] = min[0]; corners[0][1] = min[1]; + corners[1][0] = max[0]; corners[1][1] = min[1]; + corners[2][0] = max[0]; corners[2][1] = max[1]; + corners[3][0] = min[0]; corners[3][1] = max[1]; + corners[4][0] = min[0]; corners[4][1] = min[1]; + corners[5][0] = max[0]; corners[5][1] = min[1]; + corners[6][0] = max[0]; corners[6][1] = max[1]; + corners[7][0] = min[0]; corners[7][1] = max[1]; +} + + +} // namespace Mf + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Rectangle.hh b/src/Moof/Rectangle.hh new file mode 100644 index 0000000..97bb44a --- /dev/null +++ b/src/Moof/Rectangle.hh @@ -0,0 +1,102 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_RECTANGLE_HH_ +#define _MOOF_RECTANGLE_HH_ + +#include + + +namespace Mf { + + +/** + * Axis-aligned Bounding Box + */ + +struct Rectangle +{ + Vector2 min; + Vector2 max; + + + Rectangle() {} + + Rectangle(const Vector2& a, const Vector2& b) + { + init(a, b); + } + + Rectangle(Scalar ax, Scalar ay, Scalar bx, Scalar by) + { + Vector2 a(ax, ay); + Vector2 b(bx, by); + + init(a, b); + } + + inline void init(const Vector2& a, const Vector2& b) + { + if (a[0] < b[0]) + { + min[0] = a[0]; + max[0] = b[0]; + } + else + { + min[0] = b[0]; + max[0] = a[0]; + } + if (a[1] < b[1]) + { + min[1] = a[1]; + max[1] = b[1]; + } + else + { + min[1] = b[1]; + max[1] = a[1]; + } + } + + inline Vector2 getCenter() const + { + return Vector2((min[0] + max[0]) / 2.0, + (min[1] + max[1]) / 2.0); + } + + void getCorners(Vector2 corners[4]) const; +}; + + +} // namespace Mf + +#endif // _MOOF_RECTANGLE_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Resource.cc b/src/Moof/Resource.cc index e21c834..d958c3a 100644 --- a/src/Moof/Resource.cc +++ b/src/Moof/Resource.cc @@ -54,7 +54,7 @@ void Resource::addSearchPath(const std::string& directory) } } -std::string Resource::getPathToResource(const std::string& name) +std::string Resource::getPath(const std::string& name) { std::vector::iterator it; diff --git a/src/Moof/Resource.hh b/src/Moof/Resource.hh index 716e906..f7d1782 100644 --- a/src/Moof/Resource.hh +++ b/src/Moof/Resource.hh @@ -72,7 +72,7 @@ public: * @return The first path found which resolves to a file. */ - static std::string getPathToResource(const std::string& name); + static std::string getPath(const std::string& name); private: static std::vector searchPaths_; diff --git a/src/Moof/RigidBody.hh b/src/Moof/RigidBody.hh new file mode 100644 index 0000000..11c6354 --- /dev/null +++ b/src/Moof/RigidBody.hh @@ -0,0 +1,72 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_RIGIDBODY_HH_ +#define _MOOF_RIGIDBODY_HH_ + +#include +#include + + +namespace Mf { + + +/** + * Interface for physical things with mass, momentum, yada yada yada. + */ + +template +class RigidBody +{ +public: + inline virtual ~RigidBody() {} + + virtual void update(Scalar t, Scalar dt) + { + prevState_ = currentState_; + currentState_.integrate(t, dt); + } + + inline T getInterpolatedState(Scalar alpha) const + { + return currentState_.interpolate(alpha, prevState_); + } + +protected: + T prevState_; + T currentState_; +}; + + +} // namespace Mf + +#endif // _MOOF_RIGIDBODY_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + + diff --git a/src/Moof/Scene.cc b/src/Moof/Scene.cc index 6c2b427..5e44221 100644 --- a/src/Moof/Scene.cc +++ b/src/Moof/Scene.cc @@ -36,7 +36,6 @@ #include "Entity.hh" #include "Math.hh" #include "Mippleton.hh" -#include "Octree.hh" #include "OpenGL.hh" #include "Scene.hh" #include "Serializable.hh" @@ -46,7 +45,7 @@ namespace Mf { -class Scene::SceneImpl : public Mippleton +class Scene::Impl : public Mippleton { class Quad : public Entity { @@ -99,6 +98,12 @@ class Scene::SceneImpl : public Mippleton glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } + if (fog_) + { + glEnable(GL_FOG); + glFogi(GL_FOG_MODE, GL_LINEAR); + } + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); tilemap_.bind(); @@ -108,6 +113,7 @@ class Scene::SceneImpl : public Mippleton glDrawArrays(GL_TRIANGLE_FAN, 0, 4); glDisable(GL_BLEND); + glDisable(GL_FOG); } bool isVisible(const Camera& cam) const @@ -145,8 +151,8 @@ class Scene::SceneImpl : public Mippleton } public: - SceneImpl(const std::string& name) : - Mippleton(name) + Impl(const std::string& name) : + Mippleton(name) { loadFromFile(); } @@ -380,7 +386,6 @@ public: Quad* quad = new Quad(quadVertices, texture, indices[h][w]); boost::shared_ptr quadPtr(quad); - //objects.push_back(quadPtr); octree->insert(quadPtr); } } @@ -392,39 +397,36 @@ public: std::map rootObj; std::map::iterator it; - if (!root->get(rootObj)) - { - std::cerr << "error loading scene billboard object" << std::endl; - return; - } - Tilemap::Index index = 0; long width = 1; bool blending = false; bool fog = false; - if ((it = rootObj.find("tile")) != rootObj.end()) + if (root->get(rootObj)) { - long value; - if ((*it).second->get(value)) + if ((it = rootObj.find("tile")) != rootObj.end()) { - index = Tilemap::Index(value); + long value; + if ((*it).second->get(value)) + { + index = Tilemap::Index(value); + } } - } - if ((it = rootObj.find("u_scale")) != rootObj.end()) - { - (*it).second->get(width); - } + if ((it = rootObj.find("u_scale")) != rootObj.end()) + { + (*it).second->get(width); + } - if ((it = rootObj.find("blend")) != rootObj.end()) - { - (*it).second->get(blending); - } + if ((it = rootObj.find("blend")) != rootObj.end()) + { + (*it).second->get(blending); + } - if ((it = rootObj.find("fog")) != rootObj.end()) - { - (*it).second->get(fog); + if ((it = rootObj.find("fog")) != rootObj.end()) + { + (*it).second->get(fog); + } } @@ -461,7 +463,6 @@ public: boost::shared_ptr quadPtr(quad); - //objects.push_back(quad_Ptr); octree->insert(quadPtr); } } @@ -469,7 +470,7 @@ public: void loadFromFile() { - std::string filePath = Scene::getPathToResource(getName()); + std::string filePath = Scene::getPath(getName()); Deserializer deserializer(filePath, true); SerializablePtr root = deserializer.deserialize(); @@ -497,67 +498,50 @@ public: return; } - //OctreeNode rootNode(maximumBounds); + // create the tree to store the quads octree = OctreePtr(new Octree(maximumBounds)); if ((it = rootObj.find("instructions")) != rootObj.end()) { loadInstructions((*it).second); } + + octree->sort(); } void draw(Scalar alpha, const Camera& cam) const { - //QuadVector::const_iterator it; - glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); octree->drawIfVisible(alpha, cam); - //int objectsDrawn = 0; + //glDisableClientState(GL_VERTEX_ARRAY); + //glDisableClientState(GL_TEXTURE_COORD_ARRAY); - //for (it = objects.begin(); it != objects.end(); ++it) - //{ - //if ((*it)->isVisible(cam)) - //{ - ////std::cout << "draw object"; - //(*it)->draw(); + //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - //objectsDrawn++; - //} - //} + //Texture::resetBind(); + //glColor3f(0.0f, 1.0f, 0.0f); + //playfieldBounds.draw(); + //glColor3f(0.0f, 0.0f, 1.0f); + //maximumBounds.draw(); - //std::cout << objectsDrawn << std::endl; - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - - Texture::resetBind(); - glColor3f(0.0f, 1.0f, 0.0f); - playfieldBounds.draw(); - glColor3f(0.0f, 0.0f, 1.0f); - maximumBounds.draw(); - - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); } Aabb playfieldBounds; Aabb maximumBounds; - //typedef std::vector< boost::shared_ptr > QuadVector; - //QuadVector objects; OctreePtr octree; }; Scene::Scene(const std::string& name) : // pass through - impl_(Scene::SceneImpl::retain(name), &Scene::SceneImpl::release) {} + impl_(Scene::Impl::retain(name), &Scene::Impl::release) {} void Scene::draw(Scalar alpha, const Camera& cam) const @@ -573,14 +557,20 @@ void Scene::refresh() } +OctreePtr Scene::getOctree() const +{ + // pass through + return impl_->octree; +} + /** * Specialized search location for scene files. They can be found in the * "scenes" subdirectory of any of the searched directories. */ -std::string Scene::getPathToResource(const std::string& name) +std::string Scene::getPath(const std::string& name) { - return Resource::getPathToResource("scenes/" + name + ".json"); + return Resource::getPath("scenes/" + name + ".json"); } diff --git a/src/Moof/Scene.hh b/src/Moof/Scene.hh index 08ab6cc..4c4f297 100644 --- a/src/Moof/Scene.hh +++ b/src/Moof/Scene.hh @@ -34,6 +34,7 @@ #include #include +#include #include @@ -50,11 +51,13 @@ public: void draw(Scalar alpha, const Camera& cam) const; void refresh(); - static std::string getPathToResource(const std::string& name); + OctreePtr getOctree() const; + + static std::string getPath(const std::string& name); private: - class SceneImpl; - boost::shared_ptr impl_; + class Impl; + boost::shared_ptr impl_; }; diff --git a/src/Moof/Sound.cc b/src/Moof/Sound.cc new file mode 100644 index 0000000..9a632eb --- /dev/null +++ b/src/Moof/Sound.cc @@ -0,0 +1,194 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#include +#include + +#include +#include +#include + +#include "Mippleton.hh" +#include "Sound.hh" + + +namespace Mf { + + +struct Sound::Impl +{ + + static ALenum getAudioFormat(const Sound_AudioInfo& audioInfo) + { + if (audioInfo.format == AUDIO_U8 || audioInfo.format == AUDIO_S8) + { + if (audioInfo.channels == 1) return AL_FORMAT_MONO8; + else return AL_FORMAT_STEREO8; + } + else + { + if (audioInfo.channels == 1) return AL_FORMAT_MONO16; + else return AL_FORMAT_STEREO16; + } + } + + struct Buffer : public Mippleton + { + Buffer(const std::string& name) : + Mippleton(name), + object(0) + {} + + ~Buffer() + { + alDeleteBuffers(1, &object); + } + void loadFromFile(const std::string& filePath, bool stream) + { + if (object != 0) return; + + Sound_Sample* sound = Sound_NewSampleFromFile(filePath.c_str(), + NULL, 8096); + + if (!sound) + { + std::cerr << "could not load sound from file" << std::endl; + exit(1); + } + + unsigned decoded = Sound_DecodeAll(sound); + if (decoded == 0) + { + std::cout << "decoded no bytes" << std::endl; + exit(1); + } + std::cerr << "buffer size: " << sound->buffer_size << std::endl; + std::cerr << "channels: " << (int)sound->actual.channels << std::endl; + std::cerr << "format: " << sound->actual.format << std::endl; + std::cerr << "frequency: " << sound->actual.rate << std::endl; + + alGenBuffers(1, &object); + alBufferData(object, getAudioFormat(sound->actual), sound->buffer, + sound->buffer_size, sound->actual.rate); + + Sound_FreeSample(sound); + } + + ALuint object; + + //ALfloat location[] = {0.0f, 0.0f, 0.0f}; + //ALfloat location2[] = {0.0f, 0.0f, 0.0f}; + //ALfloat orient[] = {0.0f, 0.0f, -1.0f, 0.0, 1.0, 0.0}; + + + //alListenerfv(AL_POSITION, location); + //alListenerfv(AL_VELOCITY, location); + //alListenerfv(AL_VELOCITY, orient); + }; + + Impl(const std::string& name, bool stream = false) : + buffer_(Buffer::retain(name), Buffer::release) + { + if (!stream) buffer_->loadFromFile(Sound::getPath(name), stream); + else buffer_->loadFromFile(SoundStream::getPath(name), stream); + + ALfloat location[] = {0.0f, 0.0f, 0.0f}; + + alGenSources(1, &source_); + alSourcei(source_, AL_BUFFER, buffer_->object); + alSourcef(source_, AL_PITCH, 1.0f); + alSourcef(source_, AL_GAIN, 1.0f); + alSourcefv(source_, AL_POSITION, location); + alSourcefv(source_, AL_VELOCITY, location); + alSourcei(source_, AL_LOOPING, AL_FALSE); + } + + ~Impl() + { + alDeleteSources(1, &source_); + } + + + void update() + { + } + + + boost::shared_ptr buffer_; + ALuint source_; +}; + + +Sound::Sound(const std::string& name) : + // pass through + impl_(new Sound::Impl(name)) {} + + +void Sound::play() +{ + alSourceRewind(impl_->source_); + alSourcePlay(impl_->source_); +} + + +std::string Sound::getPath(const std::string& name) +{ + std::string path = Resource::getPath("sounds/" + name + ".ogg"); + return path; +} + + +//############################################################################## + + +SoundStream::SoundStream(const std::string& name) + // pass through + //impl_(name, true) {} +{ + impl_ = boost::shared_ptr(new Sound::Impl(name, true)); +} + + +void SoundStream::update(Scalar t, Scalar dt) +{ + // pass through + impl_->update(); +} + + +std::string SoundStream::getPath(const std::string& name) +{ + std::string path = Resource::getPath("sounds/" + name + ".xm"); + return path; +} + + +} // namespace Mf + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh new file mode 100644 index 0000000..cca7dc7 --- /dev/null +++ b/src/Moof/Sound.hh @@ -0,0 +1,86 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_SOUND_HH_ +#define _MOOF_SOUND_HH_ + +/** + * @file Sound.hh + * Image-loading and OpenGL texture loading. + */ + +#include + +#include + +#include +#include + + +namespace Mf { + + +class Sound : public Resource +{ +public: + Sound(const std::string& name); + + void play(); + + static std::string getPath(const std::string& name); + + struct Exception : std::runtime_error + { + explicit Exception(const std::string& what_arg) : + std::runtime_error(what_arg) {} + }; + +protected: + Sound() {} + class Impl; + boost::shared_ptr impl_; +}; + + +class SoundStream : public Sound +{ +public: + SoundStream(const std::string& name); + + void update(Scalar t, Scalar dt); + + static std::string getPath(const std::string& name); +}; + + +} // namespace Mf + +#endif // _MOOF_SOUND_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/State.hh b/src/Moof/State.hh new file mode 100644 index 0000000..8280edf --- /dev/null +++ b/src/Moof/State.hh @@ -0,0 +1,100 @@ + +/******************************************************************************* + + Copyright (c) 2009, Charles McGarvey + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*******************************************************************************/ + +#ifndef _MOOF_STATE_HH_ +#define _MOOF_STATE_HH_ + +#include + + +namespace Mf { + + +template +struct Derivative +{ + inline virtual ~Derivative() {} + + virtual T operator*(Scalar dt) const = 0; + virtual T operator+(const T& other) const = 0; +}; + + +/** + * Structure containing any information needed to place and orient an animate + * object in 3-space as well as predict future locations and orientations. + */ + +template +struct State +{ + inline virtual ~State() {} + + inline D evaluate(Scalar t) + { + D derivative; + calculateDerivatives(derivative, t); + return derivative; + } + + inline D evaluate(Scalar t, Scalar dt, const D& derivative) + { + T state = *this; + state += derivative * dt; + state.recalculate(); + + D newDerivative; + calculateDerivatives(newDerivative, t); + return newDerivative; + } + + inline void integrate(Scalar t, Scalar dt) + { + D a = evaluate(t); + D b = evaluate(t, dt * 0.5, a); + D c = evaluate(t, dt * 0.5, b); + D d = evaluate(t, dt, c); + + *this += (a + (b + c) * 2.0 + d) * (1.0/6.0) * dt; + } + + virtual void recalculate() {} + + virtual void calculateDerivatives(D& derivative, Scalar t) = 0; + virtual T interpolate(Scalar alpha, const T& prevState) const = 0; + + virtual T& operator+=(const D& derivative) = 0; +}; + + +} // namespace Mf + +#endif // _MOOF_STATE_HH_ + +/** vim: set ts=4 sw=4 tw=80: *************************************************/ + diff --git a/src/Moof/Texture.cc b/src/Moof/Texture.cc index dc9407a..e8f5d86 100644 --- a/src/Moof/Texture.cc +++ b/src/Moof/Texture.cc @@ -51,7 +51,7 @@ namespace Mf { * objects and avoid having duplicate textures loaded to GL. */ -class Texture::TextureImpl : public Mippleton +class Texture::Impl : public Mippleton { /** @@ -129,8 +129,8 @@ public: * Construction is initialization. */ - explicit TextureImpl(const std::string& name) : - Mippleton(name), + explicit Impl(const std::string& name) : + Mippleton(name), surface_(0), width_(0), height_(0), @@ -145,10 +145,10 @@ public: // we want to know when the GL context is recreated Dispatcher::instance().addHandler("video.context_recreated", - boost::bind(&TextureImpl::contextRecreated, this, _1), this); + boost::bind(&Impl::contextRecreated, this, _1), this); } - ~TextureImpl() + ~Impl() { if (surface_) { @@ -239,7 +239,7 @@ public: { SDL_Surface* surface; - surface = IMG_Load(Texture::getPathToResource(getName()).c_str()); + surface = IMG_Load(Texture::getPath(getName()).c_str()); if (!surface) { @@ -383,13 +383,12 @@ public: static GLuint globalObject_; ///< Global GL texture handle. }; -GLuint Texture::TextureImpl::globalObject_ = 0; +GLuint Texture::Impl::globalObject_ = 0; Texture::Texture(const std::string& name) : // pass through - impl_(Texture::TextureImpl::retain(name), &Texture::TextureImpl::release) -{} + impl_(Texture::Impl::retain(name), &Texture::Impl::release) {} /** @@ -417,7 +416,7 @@ GLuint Texture::getObject() const void Texture::resetBind() { glBindTexture(GL_TEXTURE_2D, 0); - TextureImpl::globalObject_ = 0; + Impl::globalObject_ = 0; } @@ -459,10 +458,10 @@ void Texture::setWrapT(GLuint wrap) } -std::string Texture::getPathToResource(const std::string& name) +std::string Texture::getPath(const std::string& name) { - // TODO named texture resources must be png for now - return Resource::getPathToResource("textures/" + name + ".png"); + std::string path = Resource::getPath("textures/" + name + ".png"); + return path; } diff --git a/src/Moof/Texture.hh b/src/Moof/Texture.hh index 9d17eb8..cdb6059 100644 --- a/src/Moof/Texture.hh +++ b/src/Moof/Texture.hh @@ -63,7 +63,7 @@ public: void setWrapS(GLuint wrap); void setWrapT(GLuint wrap); - static std::string getPathToResource(const std::string& name); + static std::string getPath(const std::string& name); struct Exception : std::runtime_error { @@ -72,8 +72,8 @@ public: }; private: - class TextureImpl; - boost::shared_ptr impl_; + class Impl; + boost::shared_ptr impl_; }; diff --git a/src/Moof/Tilemap.cc b/src/Moof/Tilemap.cc index 9f24b1b..17642c7 100644 --- a/src/Moof/Tilemap.cc +++ b/src/Moof/Tilemap.cc @@ -36,7 +36,7 @@ namespace Mf { -class Tilemap::TilemapImpl : public Mippleton +class Tilemap::Impl : public Mippleton { static GLint filterFromString(const std::string& filter) { @@ -75,8 +75,8 @@ class Tilemap::TilemapImpl : public Mippleton } public: - TilemapImpl(const std::string& name) : - Mippleton(name), + Impl(const std::string& name) : + Mippleton(name), magFilter_(GL_NEAREST), minFilter_(GL_NEAREST), nTilesS_(1), @@ -89,7 +89,7 @@ public: void loadFromFile() { - Deserializer deserializer(Tilemap::getPathToResource(getName())); + Deserializer deserializer(Tilemap::getPath(getName())); SerializablePtr root = deserializer.deserialize(); @@ -164,10 +164,8 @@ public: Tilemap::Tilemap(const std::string& name) : Texture(name), - impl_(Tilemap::TilemapImpl::retain(name), &Tilemap::TilemapImpl::release) + impl_(Tilemap::Impl::retain(name), &Tilemap::Impl::release) { - bind(); - setMinFilter(impl_->minFilter_); setMagFilter(impl_->magFilter_); setWrapS(impl_->wrapS_); @@ -225,9 +223,9 @@ bool Tilemap::getTileCoords(unsigned index, Scalar coords[8], } -std::string Tilemap::getPathToResource(const std::string& name) +std::string Tilemap::getPath(const std::string& name) { - return Resource::getPathToResource("tilemaps/" + name + ".json"); + return Resource::getPath("tilemaps/" + name + ".json"); } diff --git a/src/Moof/Tilemap.hh b/src/Moof/Tilemap.hh index 80bede9..942a5e9 100644 --- a/src/Moof/Tilemap.hh +++ b/src/Moof/Tilemap.hh @@ -97,11 +97,11 @@ public: bool getTileCoords(Index index, Scalar coords[8], Orientation what) const; - static std::string getPathToResource(const std::string& name); + static std::string getPath(const std::string& name); private: - class TilemapImpl; - boost::shared_ptr impl_; + class Impl; + boost::shared_ptr impl_; }; diff --git a/src/YoinkApp.cc b/src/YoinkApp.cc index 493e615..a1c2dbb 100644 --- a/src/YoinkApp.cc +++ b/src/YoinkApp.cc @@ -40,6 +40,10 @@ #include "YoinkApp.hh" +#include +#include +#include + #if HAVE_CONFIG_H #include "config.h" #endif @@ -94,42 +98,45 @@ static std::string iconFile() // then look in the configured data directory Mf::Resource::addSearchPath(YOINK_DATADIR); - return Mf::Resource::getPathToResource("yoink.png"); + return Mf::Resource::getPath("yoink.png"); } YoinkApp::YoinkApp(int argc, char* argv[]) : - Mf::Engine(argc, argv, configFiles(), PACKAGE_STRING, iconFile()) + Mf::Engine(argc, argv, configFiles(), PACKAGE_STRING, iconFile()), + music("NightFusion"), + punchSound("RobotPunch") { Mf::Dispatcher::instance().addHandler("video.context_recreated", boost::bind(&YoinkApp::contextRecreated, this, _1), this); setupGL(); + music.play(); + state = 0.0; - someChar = new Character("RobotTrooper"); - someChar->getAnimation().startSequence("Run"); + heroine = CharacterPtr(new Character("RobotTrooper")); + heroine->getAnimation().startSequence("Run"); font = new TilemapFont; - Mf::Vector2 coeffs[4]; - coeffs[0] = Mf::Vector2(0.0, 0.0); - coeffs[1] = Mf::Vector2(0.5, 0.0); - coeffs[2] = Mf::Vector2(0.5, 0.0); - coeffs[3] = Mf::Vector2(1.0, 0.0); + Mf::Scalar coeffs[4]; + coeffs[0] = 0.0; + coeffs[1] = 1.5; + coeffs[2] = -0.5; + coeffs[3] = 1.0; interp.init(coeffs, 1.0, Mf::Interpolator::OSCILLATE); Mf::Scalar coeff[2] = {1.0, 0.0}; - fadeIn.init(coeff, 0.5f); + fadeIn.init(coeff, 0.1); testScene = new Mf::Scene("Test"); - - x = y = z = 0.0; + heroine->treeNode = testScene->getOctree()->insert(heroine); } YoinkApp::~YoinkApp() { - delete someChar; + //delete heroine; delete font; delete testScene; @@ -185,8 +192,15 @@ void YoinkApp::update(Mf::Scalar t, Mf::Scalar dt) camera.update(t, dt); - someChar->getAnimation().update(t, dt); + heroine->update(t, dt); + heroine->treeNode = testScene->getOctree()->reinsert(heroine, heroine->treeNode); + + //camera.lookAt(heroine->getSphere().point); + camera.setPosition(Mf::Vector3(-heroine->current.position[0], -heroine->current.position[1], -256)); + interp.update(dt); + hud.setBar1Progress(interp.getValue()); + hud.setBar2Progress(1.0 - interp.getValue()); prevstate = state; state += dt; @@ -206,19 +220,50 @@ void YoinkApp::draw(Mf::Scalar alpha) //Mf::Scalar cosstate = std::cos(drawstate); - glMatrixMode(GL_MODELVIEW); //glLoadIdentity(); - glBindTexture(GL_TEXTURE_2D, 0); //glRotatef(drawstate*15.0f, 0.0, 1.0, 0.0); //glTranslatef(x, y, z); glLoadMatrix(camera.getModelviewMatrix().data()); // DRAW THE SCENE + Mf::Texture::resetBind(); testScene->draw(alpha, camera); + + //heroine->draw(alpha); + + + hud.draw(); + + + glEnable(GL_BLEND); + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + glColor4f(0.0f, 0.0f, 0.0f, fadeIn.getState(alpha)); + Mf::Texture::resetBind(); + + //glRectf(-1.0f, -1.0f, 1.0f, 1.0f); + glBegin(GL_QUADS); + glVertex3f(-1.0, -1.0, -0.1); + glVertex3f(1.0, -1.0, -0.1); + glVertex3f(1.0, 1.0, -0.1); + glVertex3f(-1.0, 1.0, -0.1); + glEnd(); + + glDisable(GL_BLEND); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + /* glLoadIdentity(); @@ -350,9 +395,10 @@ void YoinkApp::handleEvent(const Mf::Event& event) { getVideo().toggleFull(); } - else if (event.key.keysym.sym == SDLK_a) + else if (event.key.keysym.sym == SDLK_SPACE) { - someChar->getAnimation().startSequence("Punch"); + heroine->getAnimation().startSequence("Punch"); + punchSound.play(); } else if (event.key.keysym.sym == SDLK_r) { @@ -363,30 +409,9 @@ void YoinkApp::handleEvent(const Mf::Event& event) getVideo().toggleCursorGrab(); getVideo().toggleCursorVisible(); } - //else if (event.key.keysym.sym == SDLK_RIGHT) - //{ - //x -= 50.0; - //} - //else if (event.key.keysym.sym == SDLK_LEFT) - //{ - //x += 50.0; - //} - //else if (event.key.keysym.sym == SDLK_UP) - //{ - //y -= 50.0; - //} - //else if (event.key.keysym.sym == SDLK_DOWN) - //{ - //y += 50.0; - //} - //else if (event.key.keysym.sym == SDLK_PAGEUP) - //{ - //z += 50.0; - //} - //else if (event.key.keysym.sym == SDLK_PAGEDOWN) - //{ - //z -= 50.0; - //} + + case SDL_KEYUP: + heroine->handleEvent(event); case SDL_MOUSEMOTION: case SDL_MOUSEBUTTONDOWN: @@ -399,6 +424,7 @@ void YoinkApp::handleEvent(const Mf::Event& event) case SDL_VIDEORESIZE: glViewport(0, 0, event.resize.w, event.resize.h); + hud.resize(event.resize.w, event.resize.h); camera.setProjection(cml::rad(60.0), double(event.resize.w / event.resize.h), 32.0, 2500.0); camera.uploadProjectionToGL(); break; @@ -411,7 +437,7 @@ int main(int argc, char* argv[]) { std::cout << PACKAGE_STRING << std::endl << "Compiled " << __TIME__ " " __DATE__ << std::endl - << "Send requests, patches, and bug reports to <" + << "Send patches and bug reports to <" PACKAGE_BUGREPORT << ">." << std::endl << std::endl; int status = 0; diff --git a/src/YoinkApp.hh b/src/YoinkApp.hh index 66406d2..1613707 100644 --- a/src/YoinkApp.hh +++ b/src/YoinkApp.hh @@ -47,6 +47,10 @@ #include "Character.hh" #include "TilemapFont.hh" +#include + +#include "Hud.hh" + class YoinkApp : public Mf::Engine { @@ -65,19 +69,22 @@ private: void setupGL(); void contextRecreated(const Mf::Notification& note); - Character* someChar; + Mf::SoundStream music; + + CharacterPtr heroine; + Mf::Sound punchSound; TilemapFont *font; - Mf::Cerpv2 interp; + Mf::Cerps interp; Mf::Lerps fadeIn; Mf::Camera camera; Mf::Scene* testScene; - Mf::Scalar x, y, z; - Mf::Scalar state; Mf::Scalar prevstate; + + Hud hud; }; -- 2.43.0