From eadfea9d631f6596c503e15082b33d587ce1758b Mon Sep 17 00:00:00 2001 From: Aaldert Date: Tue, 21 Jun 2016 14:45:41 +0200 Subject: [PATCH 1/3] Sound pointers worden gedelete --- Enemy.cpp | 2 +- Portal.cpp | 3 +-- SoundSystem.cpp | 8 ++++++++ SoundSystem.h | 1 + World.cpp | 9 ++++----- World.h | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Enemy.cpp b/Enemy.cpp index 664dc3c..df5107a 100644 --- a/Enemy.cpp +++ b/Enemy.cpp @@ -30,7 +30,7 @@ Enemy::~Enemy() if (model) Model::unload(model); - delete music; + CrystalPoint::GetSoundSystem().UnloadSound(hit_sound_id); } void Enemy::draw() diff --git a/Portal.cpp b/Portal.cpp index fcd2f07..a5015d4 100644 --- a/Portal.cpp +++ b/Portal.cpp @@ -30,7 +30,7 @@ Portal::Portal(const std::string &fileName, Portal::~Portal() { // Model::unload(model); -// delete music; + CrystalPoint::GetSoundSystem().UnloadSound(sound_id); } void Portal::collide() @@ -46,7 +46,6 @@ bool Portal::enter(float deltaTime) { if (delay > 3 && started) { - delete music; delay = 0; return true; } diff --git a/SoundSystem.cpp b/SoundSystem.cpp index f57a526..df8ab36 100644 --- a/SoundSystem.cpp +++ b/SoundSystem.cpp @@ -48,3 +48,11 @@ Sound* SoundSystem::GetSound(unsigned int inID) return nullptr; return sounds[inID]; } + +void SoundSystem::UnloadSound(unsigned int inID) +{ + if (inID > sounds.size()) + return; + delete sounds[inID]; +// sounds.erase[inID]; +} diff --git a/SoundSystem.h b/SoundSystem.h index b9e289b..1d29dcd 100644 --- a/SoundSystem.h +++ b/SoundSystem.h @@ -24,6 +24,7 @@ public: unsigned int LoadSound(const char* inWavPath, bool inLooping); Sound* GetSound(unsigned int inID); + void UnloadSound(unsigned int inID); private: ALCdevice* device; diff --git a/World.cpp b/World.cpp index 550f400..79e0d46 100644 --- a/World.cpp +++ b/World.cpp @@ -8,8 +8,7 @@ #include #include "WorldHandler.h" -World::World(const std::string &fileName): - music_id(-1) +World::World(const std::string &fileName) { nextworld = false; @@ -183,8 +182,8 @@ World::World(const std::string &fileName): if (!v["world"]["music"].isNull()) { - music_id = CrystalPoint::GetSoundSystem().LoadSound(v["world"]["music"].asString().c_str(), true); - music = CrystalPoint::GetSoundSystem().GetSound(music_id); + sound_id = CrystalPoint::GetSoundSystem().LoadSound(v["world"]["music"].asString().c_str(), true); + music = CrystalPoint::GetSoundSystem().GetSound(sound_id); } if (!v["portal"].isNull()) @@ -218,7 +217,7 @@ World::~World() { delete heightmap; music->Stop(); - delete music; + CrystalPoint::GetSoundSystem().UnloadSound(sound_id); delete skybox; delete portal; } diff --git a/World.h b/World.h index 523c5c1..9dbebcf 100644 --- a/World.h +++ b/World.h @@ -27,7 +27,7 @@ private: bool nextworld; - int music_id,maxCrystals,maxEnemies; + int sound_id,maxCrystals,maxEnemies; std::vector entities; std::vector enemies; From eaeff6ed7dc02f9dc5b4f053d91e56711b452982 Mon Sep 17 00:00:00 2001 From: Jannick van Ballegooijen Date: Tue, 21 Jun 2016 15:28:15 +0200 Subject: [PATCH 2/3] normal smoothing --- HeightMap.cpp | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/HeightMap.cpp b/HeightMap.cpp index 61aef40..cadef01 100644 --- a/HeightMap.cpp +++ b/HeightMap.cpp @@ -29,28 +29,51 @@ HeightMap::HeightMap(const std::string &file, World* world) return imgData[(x + y * width) * 4 + offset]; }; + std::vector> faceNormals(width-1, std::vector(height-1, Vec3f(0,1,0))); + for (int y = 0; y < height - 1; y++) + { + for (int x = 0; x < width - 1; x++) + { + int offsets[4][2] = { { 0, 0 },{ 1, 0 },{ 1, 1 },{ 0, 1 } }; + Vec3f ca(0, heightAt(x, y + 1) - heightAt(x, y), 1); + Vec3f ba(1, heightAt(x + 1, y) - heightAt(x, y), 0); + Vec3f normal = ca.cross(ba); + normal.Normalize(); + faceNormals[x][y] = normal; + } + } + for (int y = 0; y < height-1; y++) { for (int x = 0; x < width-1; x++) { int offsets[4][2] = { { 0, 0 },{ 1, 0 },{ 1, 1 },{ 0, 1 } }; - Vec3f ca(0, heightAt(x, y + 1) - heightAt(x, y), 1); - Vec3f ba(1, heightAt(x + 1, y) - heightAt(x, y), 0); if (valueAt(x, y, GREEN) > 0) { world->addLevelObject(new LevelObject(world->getObjectFromValue(valueAt(x, y, GREEN)).first, Vec3f(x, heightAt(x, y), y), Vec3f(0, 0, 0), 1, world->getObjectFromValue(valueAt(x, y, GREEN)).second)); } - Vec3f normal = ca.cross(ba); - normal.Normalize(); - for (int i = 0; i < 4; i++) { - float h = heightAt(x + offsets[i][0], y + offsets[i][1]); - vertices.push_back(Vertex{ (float)(x + offsets[i][0]), h, (float)(y + offsets[i][1]), + int xx = x + offsets[i][0]; + int yy = y + offsets[i][1]; + + Vec3f normal(0, 0, 0); + if(xx < width-1 && yy < height-1) + normal = normal + faceNormals[xx][yy]; + if(xx > 0 && yy < height-1) + normal = normal + faceNormals[xx-1][yy]; + if (xx > 0 && yy > 0) + normal = normal + faceNormals[xx-1][yy-1]; + if (yy > 0 && xx < width-1) + normal = normal + faceNormals[xx][yy-1]; + normal.Normalize(); + + float h = heightAt(xx, yy); + vertices.push_back(Vertex{ (float)(xx), h, (float)(yy), normal.x, normal.y, normal.z, - (x + offsets[i][0]) / (float)height, (y + offsets[i][1]) / (float)width } ); + (xx) / (float)height, (yy) / (float)width } ); } } } From c91bb5c656a932c33d21ae673e1ac18ac122a294 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 21 Jun 2016 15:41:42 +0200 Subject: [PATCH 3/3] attempt fix --- SoundSystem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoundSystem.cpp b/SoundSystem.cpp index df8ab36..84bdb6a 100644 --- a/SoundSystem.cpp +++ b/SoundSystem.cpp @@ -54,5 +54,5 @@ void SoundSystem::UnloadSound(unsigned int inID) if (inID > sounds.size()) return; delete sounds[inID]; -// sounds.erase[inID]; + //sounds.erase(sounds.begin() + inID); }