diff --git a/Engine.cpp b/Engine.cpp index cadd991..fcc6a1d 100644 --- a/Engine.cpp +++ b/Engine.cpp @@ -128,7 +128,6 @@ void Engine::Initiate() // ------------------------------------------------------------------------ Font* arial = new Font("assets/ft/arial.ttf"); Texture* blanktex = new Texture("assets/blanktexture.png"); - Texture* blacktex = new Texture("assets/blacktexture.png"); Texture* magic = new Texture("assets/itsmagicbitch.jpg"); Texture* snowflake = new Texture("assets/snowflake.png"); Texture* shockwavetex = new Texture("assets/shockwave.png"); @@ -472,7 +471,8 @@ void Engine::Initiate() glm::vec3 grappleLineEnd(0.0f); Mesh* grappleLine = CreateCubeMesh(); grappleLine->name = "grappleline"; - grappleLine->meshTexture = blacktex; + grappleLine->meshTexture = blanktex; + grappleLine->colorOverride = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f); // black grappleLine->t.TranslateTo({ 0.0f, -1000.0f, 0.0f }); // hidden until a grapple latches grappleLine->BindToRenderSystem(); mainf->AddChild(grappleLine); @@ -1034,7 +1034,8 @@ void Engine::Initiate() if (len > 0.01f) { grappleLine->t.TranslateTo(handPos + delta * 0.5f); grappleLine->t.ScaleTo({ 0.05f, 0.05f, len }); - grappleLine->t.RotateToQuaternion(LookAt(delta)); + // Plain shortest-arc rotation of the box's long (z) axis onto the rope; LookAt breaks on straight up/down + grappleLine->t.RotateToQuaternion(RotationBetweenVectors(glm::vec3(0.0f, 0.0f, 1.0f), delta)); } } else grappleLine->t.TranslateTo(hiddenPos); diff --git a/Mesh.h b/Mesh.h index 21adfd9..3acf753 100644 --- a/Mesh.h +++ b/Mesh.h @@ -37,6 +37,7 @@ class Mesh : public Object , public Renderable, public t_package , public MeshDa protected: public: Texture* meshTexture = nullptr; + glm::vec4 colorOverride = glm::vec4(0.0f); // rgb + strength; 0 = use the texture's own colour VAO vao; VBO vbo; @@ -469,6 +470,7 @@ public: else glBindTexture(GL_TEXTURE_2D, 0); ShaderProgram.SetMat4("modl", topass); + ShaderProgram.Set4F("colorOverride", colorOverride); vao.Bind(); glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0); vao.Unbind(); diff --git a/assets/blacktexture.png b/assets/blacktexture.png deleted file mode 100644 index 8ef45ce..0000000 Binary files a/assets/blacktexture.png and /dev/null differ diff --git a/assets/shockwave.png b/assets/shockwave.png index 03534e9..ed6a1e4 100644 Binary files a/assets/shockwave.png and b/assets/shockwave.png differ