From 16ba763ddc372977a53b9b0a4854c0ae42e988d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steffen=20F=C3=BCndgens?= Date: Wed, 4 Mar 2015 15:22:07 +0100 Subject: [PATCH 1/2] Added flameHeight and flameWidth with loading from xml. --- data/levels/Compositions.xml | 2 ++ light.cc | 4 +++- light.hh | 4 +++- loader.cc | 4 +++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/data/levels/Compositions.xml b/data/levels/Compositions.xml index 744df8e..4e66431 100644 --- a/data/levels/Compositions.xml +++ b/data/levels/Compositions.xml @@ -76,6 +76,8 @@ 0.3 4.0 -1.5 + 3.0 + 0.8 diff --git a/light.cc b/light.cc index fa8dfde..e523ba5 100644 --- a/light.cc +++ b/light.cc @@ -1,10 +1,12 @@ #include "light.hh" -Light::Light(glm::vec3 position, glm::vec3 colour, float intensity, float flameYOffset) +Light::Light(glm::vec3 position, glm::vec3 colour, float intensity, float flameYOffset, float flameHeight, float flameWidth) : Entity(position, glm::vec3(0.0f, 0.0f, 0.0f)) { this->colour = colour; this->intensity = intensity; this->flameYOffset = flameYOffset; + this->flameHeight = flameHeight; + this->flameWidth = flameWidth; } Light::Light() { diff --git a/light.hh b/light.hh index 2112487..0ad997c 100644 --- a/light.hh +++ b/light.hh @@ -6,7 +6,7 @@ class Light : public Entity { public: - Light(glm::vec3 position, glm::vec3 colour, float intensity, float flameYOffset = 0.0f); + Light(glm::vec3 position, glm::vec3 colour, float intensity, float flameYOffset = 0.0f, float flameHeight = 0.0f, float flameWidth = 0.0f); Light(); glm::vec3 getColour(); float getIntensity(); @@ -14,6 +14,8 @@ class Light : public Entity { ~Light(); private: float flameYOffset; + float flameHeight; + float flameWidth; float intensity; glm::vec3 colour; }; diff --git a/loader.cc b/loader.cc index 5c93b29..d70b40f 100644 --- a/loader.cc +++ b/loader.cc @@ -299,7 +299,9 @@ void Loader::load(std::string filePath, Level* level, std::string compositionsPa if (flameOffset != NULL){ float offset = 0; errorCheck(flameOffset->QueryFloatText(&offset)); - Light light = Light(lightPosition, lightColour, lightIntensity, offset); + float flameHeight = queryBool(xmlLight, "flameHeight"); + float flameWidth = queryBool(xmlLight, "flameWidth"); + Light light = Light(lightPosition, lightColour, lightIntensity, offset, flameHeight, flameWidth); level->addLight(light); } else { From d827bb819767d64da38dbe502726fbf365dc629b Mon Sep 17 00:00:00 2001 From: Jasper Date: Wed, 4 Mar 2015 15:33:31 +0100 Subject: [PATCH 2/2] fix --- level.cc | 23 ++++++++++++++--------- physics.cc | 4 ++-- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/level.cc b/level.cc index 394922b..f02597b 100644 --- a/level.cc +++ b/level.cc @@ -61,23 +61,28 @@ void Level::update(float runTimeSinceLastUpdate, float runTime, glm::vec2 mouseD // Ignore first two mouse updates, because they are incorrect // DON'T try to move this functionallity elsewhere static int i = 0; - if (i <2) { + if (i <20) { i++; + mouseDelta.x=mouseDelta.y=0; } int runs = 2; + + if(i>=20) + { + mouseDelta.x = -mouseDelta.x; + } + for(int j = runs; j > 0; j--) { physics.takeUpdateStep(runTimeSinceLastUpdate/runs); - if(i>=2) - { - mouseDelta.x = -mouseDelta.x; - camera.updateRotation(mouseDelta/100.0f/(float)runs); - physics.updateCameraPos(mouseDelta, 50/runs, camera.getDistance()); + + camera.updateRotation(mouseDelta/100.0f/(float)runs); + physics.updateCameraPos(mouseDelta, 50/runs, camera.getDistance()); - camera.setPosition(physics.getCameraPosition()); - camera.setDirection(physics.getCameraToPlayer()); - } + camera.setPosition(physics.getCameraPosition()); + camera.setDirection(physics.getCameraToPlayer()); + if(wPressed){ physics.rollForward(camera.getVector(),strength/runs); } diff --git a/physics.cc b/physics.cc index 94653fe..24f681f 100644 --- a/physics.cc +++ b/physics.cc @@ -416,7 +416,7 @@ void Physics::addSphere(float rad, Entity entity, float mass, float dampningL, f void Physics::addCamera() //Camera Creator automatically called when player is created { - btSphereShape* sphere = new btSphereShape(0.5f); //we use this to make a more interesting camera, that does not interpenetrate with the terrain/objects + btSphereShape* sphere = new btSphereShape(0.2f); //we use this to make a more interesting camera, that does not interpenetrate with the terrain/objects btVector3 inertia(0,0,0); //rotation handled elsewhere (as it always has to look at the player) @@ -481,7 +481,7 @@ void Physics::updateCameraPos(glm::vec2 mouseMovement, float strength, float dis this->cameraDistance = distance; //note: in mouseMovement x and y are flipped in contrast to bullet btVector3 dodo = btVector3(0,1,0).cross(btVector3(currentDirection.x(),0,currentDirection.z())); - currentDirection = currentDirection.rotate(dodo,-mouseMovement.x / 100);//mathhelper 3.14159265359 + currentDirection = currentDirection.rotate(dodo,-mouseMovement.x / 50);//mathhelper 3.14159265359 btVector3 compare = currentDirection; compare.setY(0);