From 6f4542393b0047ba510a9207e418fd6e5605dcb9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 7 Sep 2016 13:04:58 +0200 Subject: [PATCH 1/6] Graphics/Sprite: Allows to set sprite corner color Former-commit-id: b9b49224a89e38b233b590d78fd58e702741190f [formerly a575b0a6a20f1e395c0d3722d0c718cf29ee3d10] [formerly 39ad76edf53946c635a2acdaf97e5112c4ecbce2 [formerly 3353bce80b26d16e82f580d7a7c86399f3cac387]] Former-commit-id: aa828d49caa667f82916c37f36cc44493c2b4b35 [formerly a0f30d565da18350446bc028f54dbcbe9d26bfb9] Former-commit-id: 56145df1ee427d56fd7a951278b99484e56400a8 --- include/Nazara/Graphics/Sprite.hpp | 3 ++ include/Nazara/Graphics/Sprite.inl | 59 +++++++++++++++++++++++++++--- src/Nazara/Graphics/Sprite.cpp | 9 ++--- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/include/Nazara/Graphics/Sprite.hpp b/include/Nazara/Graphics/Sprite.hpp index 3aa261d89..13bcc289b 100644 --- a/include/Nazara/Graphics/Sprite.hpp +++ b/include/Nazara/Graphics/Sprite.hpp @@ -37,12 +37,14 @@ namespace Nz void AddToRenderQueue(AbstractRenderQueue* renderQueue, const InstanceData& instanceData) const override; inline const Color& GetColor() const; + inline const Color& GetCornerColor(RectCorner corner) const; inline const MaterialRef& GetMaterial() const; inline const Vector3f& GetOrigin() const; inline const Vector2f& GetSize() const; inline const Rectf& GetTextureCoords() const; inline void SetColor(const Color& color); + inline void SetCornerColor(RectCorner corner, const Color& color); inline void SetDefaultMaterial(); inline void SetMaterial(MaterialRef material, bool resizeSprite = true); inline void SetOrigin(const Vector3f& origin); @@ -65,6 +67,7 @@ namespace Nz static bool Initialize(); static void Uninitialize(); + std::array m_cornerColor; Color m_color; MaterialRef m_material; Rectf m_textureCoords; diff --git a/include/Nazara/Graphics/Sprite.inl b/include/Nazara/Graphics/Sprite.inl index 410b42478..bc27bf67c 100644 --- a/include/Nazara/Graphics/Sprite.inl +++ b/include/Nazara/Graphics/Sprite.inl @@ -18,6 +18,9 @@ namespace Nz m_size(64.f, 64.f), m_origin(Nz::Vector3f::Zero()) { + for (Color& color : m_cornerColor) + color = Color::White; + SetDefaultMaterial(); } @@ -62,14 +65,35 @@ namespace Nz /*! * \brief Gets the color of the sprite + * + * This is the global color of the sprite, independent from corner colors + * * \return Current color + * + * \see GetCornerColor + * \see SetColor */ - inline const Color& Sprite::GetColor() const { return m_color; } + /*! + * \brief Gets the color setup on a corner of the sprite + * + * \return Current color + * + * \param corner Corner of the sprite to query + * + * \see SetCornerColor + */ + inline const Color& Sprite::GetCornerColor(RectCorner corner) const + { + NazaraAssert(corner < m_cornerColor.size(), "Invalid corner"); + + return m_cornerColor[corner]; + } + /*! * \brief Gets the material of the sprite * \return Current material @@ -86,7 +110,7 @@ namespace Nz * * \see SetOrigin */ - inline const Vector3f & Sprite::GetOrigin() const + inline const Vector3f& Sprite::GetOrigin() const { return m_origin; } @@ -105,18 +129,21 @@ namespace Nz * \brief Gets the texture coordinates of the sprite * \return Current texture coordinates */ - inline const Rectf& Sprite::GetTextureCoords() const { return m_textureCoords; } /*! - * \brief Sets the color of the billboard + * \brief Sets the global color of the sprite * - * \param color Color for the billboard + * This is independent from the corner color of the sprite + * + * \param color Color for the sprite + * + * \see GetColor + * \see SetCornerColor */ - inline void Sprite::SetColor(const Color& color) { m_color = color; @@ -124,6 +151,26 @@ namespace Nz InvalidateVertices(); } + /*! + * \brief Sets a color for a corner of the sprite + * + * This is independent from the sprite global color, which gets multiplied by the corner color when rendering the sprite. + * + * \param corner Corner of the sprite to set + * \param color Color for the sprite + * + * \see GetCornerColor + * \see SetColor + */ + inline void Sprite::SetCornerColor(RectCorner corner, const Color& color) + { + NazaraAssert(corner < m_cornerColor.size(), "Invalid corner"); + + m_cornerColor[corner] = color; + + InvalidateVertices(); + } + /*! * \brief Sets the default material of the sprite (just default material) */ diff --git a/src/Nazara/Graphics/Sprite.cpp b/src/Nazara/Graphics/Sprite.cpp index 8b950bf2a..1b14ab6de 100644 --- a/src/Nazara/Graphics/Sprite.cpp +++ b/src/Nazara/Graphics/Sprite.cpp @@ -49,7 +49,6 @@ namespace Nz * * \param instanceData Data of the instance */ - void Sprite::UpdateData(InstanceData* instanceData) const { instanceData->data.resize(4 * sizeof(VertexStruct_XYZ_Color_UV)); @@ -61,19 +60,19 @@ namespace Nz Vector3f origin(m_origin.x, -m_origin.y, m_origin.z); - *colorPtr++ = m_color; + *colorPtr++ = m_color * m_cornerColor[RectCorner_LeftTop]; *posPtr++ = instanceData->transformMatrix.Transform(Vector3f(-origin)); *texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_LeftTop); - *colorPtr++ = m_color; + *colorPtr++ = m_color * m_cornerColor[RectCorner_RightTop]; *posPtr++ = instanceData->transformMatrix.Transform(m_size.x*Vector3f::Right() - origin); *texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_RightTop); - *colorPtr++ = m_color; + *colorPtr++ = m_color * m_cornerColor[RectCorner_LeftBottom]; *posPtr++ = instanceData->transformMatrix.Transform(m_size.y*Vector3f::Down() - origin); *texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_LeftBottom); - *colorPtr++ = m_color; + *colorPtr++ = m_color * m_cornerColor[RectCorner_RightBottom]; *posPtr++ = instanceData->transformMatrix.Transform(m_size.x*Vector3f::Right() + m_size.y*Vector3f::Down() - origin); *texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_RightBottom); } From 5eca42c9ad317dec7184e25784fab0db8c17b1cb Mon Sep 17 00:00:00 2001 From: Lynix Date: Fri, 9 Sep 2016 23:17:36 +0200 Subject: [PATCH 2/6] Sdk/Entity: Fix component cleaning on destruction Former-commit-id: 052b0f181ed8590dec1a170f36d8e093d38a3e7e [formerly fa87f920de906200ad0475eec529f3e9adced46b] [formerly 76bab3bcfa54b29fa48a3d0092d52391120506fc [formerly 59f0bc8a11fdcd05625b8eff3b5618b1e40e6ccc]] Former-commit-id: 267047b5fa8bc5378d18883b97419bc1daa7d3ee [formerly 7f780ca86bedb16d30445f92dfd5d5152b1bca35] Former-commit-id: 255be652ba4f7efd2b7733235710d9bfa91eac80 --- SDK/src/NDK/Entity.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SDK/src/NDK/Entity.cpp b/SDK/src/NDK/Entity.cpp index 815d0dc1b..a49a8f6aa 100644 --- a/SDK/src/NDK/Entity.cpp +++ b/SDK/src/NDK/Entity.cpp @@ -158,6 +158,9 @@ namespace Ndk UnregisterAllHandles(); + m_components.clear(); + m_componentBits.Reset(); + m_valid = false; } From 2be409a31373311b5648f0faa17366b1e407f49b Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 12 Sep 2016 14:29:12 +0200 Subject: [PATCH 3/6] Test AppVeyor Former-commit-id: 3972342541ebe8df2b4743328da6a834c8897d89 [formerly 771e5645a6942b6f87277b4f111e32793ee9795c] [formerly fcf83c00557bd357cec57c648d7fbf7edc2682ee [formerly 3d932408744346f48df27beaf1505d810a6a261c]] Former-commit-id: 2a84b2c89c449a7a081e507c1ff0c568168e4c0a [formerly 2ba28757917ab6eff3ffb14902aacd8e544d6022] Former-commit-id: d1f91e7336592e38d38c6a4c6732a810c19b2cb7 --- appveyor.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..756c1e14b --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,23 @@ +shallow_clone: true + +os: + - Visual Studio 2015 + +environment: + matrix: + - TOOLSET: vs2010 + - TOOLSET: vs2013 + - TOOLSET: vs2015 + +install: + - cd build && "./premake5.exe" %TOOLSET% && cd .. + +configuration: + - Debug + - Release + +build: + project: NazaraEngine/build/$(TOOLSET)/NazaraEngine.sln + +after_test: + - NazaraEngine\tests\Tests.exe From 4565585df30c04cbcc77b01302f382852d399e97 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 12 Sep 2016 14:30:45 +0200 Subject: [PATCH 4/6] Try to fix build Former-commit-id: a7f8fcdbae1ba699a545e72c5cfcfed82a3e0e00 [formerly 90aa5772532dbb6b3c1dacdcab518193494b2719] [formerly 47a85e8bb012265923cfaca1004d26a64a03183a [formerly 7b1be8e6ca79d6b3e61e539e9d38c92d53319421]] Former-commit-id: 290e351fce56ff4400f4e27dc5c5ba2cf5284613 [formerly 1986aaff406c3338aa2ef50a79109a8dcebac580] Former-commit-id: 775070b6173675e8f9b9a20240103105df91e349 --- appveyor.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 756c1e14b..498270c14 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,8 +5,6 @@ os: environment: matrix: - - TOOLSET: vs2010 - - TOOLSET: vs2013 - TOOLSET: vs2015 install: @@ -17,7 +15,4 @@ configuration: - Release build: - project: NazaraEngine/build/$(TOOLSET)/NazaraEngine.sln - -after_test: - - NazaraEngine\tests\Tests.exe + project: build/$(TOOLSET)/NazaraEngine.sln \ No newline at end of file From ba14c5671c6c3e47faa19b2b403329e8aa3b4b3a Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 12 Sep 2016 14:35:58 +0200 Subject: [PATCH 5/6] Damnit Former-commit-id: 9f2e06199df0b887077d6ec9248ddff3364fcfd1 [formerly 255e4ee529adfd24437e5984b8ca4c897be44d7d] [formerly 640671f0434a35d00bfa1ecd40e9833b7cec8766 [formerly 9c982fe60d62f2dc24f0a516983a896ca2824ab3]] Former-commit-id: d395599476b37472fc6081e8b9e1db2a238a3164 [formerly 16e438d010a60b69404a5b5f6b4ef71d53da6fd1] Former-commit-id: edbe9b5ac8fb5e66d7f13d395b0cb3008593adda --- appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/appveyor.yml b/appveyor.yml index 498270c14..a705a4c8c 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,3 +1,5 @@ +version: '{branch}-rev{build}' +configuration: DebugDynamic, ReleaseDynamic shallow_clone: true os: From f0081c88174f6ed45afc1105aab1c8d718798795 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 12 Sep 2016 14:36:34 +0200 Subject: [PATCH 6/6] I'm a moron Former-commit-id: c657fb51f06383769d53b11dd29ebe5d3b08d34b [formerly 5482d05d0e31b9ede0b135d4b5b884c75b125bcf] [formerly 7718539d36139bdec2e22cdc6b3ed68a6440de37 [formerly 8b343f4e3dc51bdf480b9d6be8e49132b29bf161]] Former-commit-id: 3cbad989c037da16dd4be92a64156f4b5dde892b [formerly c2f2a41e12c8022100478900725f083f95a680e2] Former-commit-id: 86c5f71ab9d0147d10f677bd31ad8272e6121fe6 --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a705a4c8c..39ff8f7a8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,5 @@ version: '{branch}-rev{build}' -configuration: DebugDynamic, ReleaseDynamic + shallow_clone: true os: @@ -13,8 +13,8 @@ install: - cd build && "./premake5.exe" %TOOLSET% && cd .. configuration: - - Debug - - Release + - DebugDynamic + - ReleaseDynamic build: project: build/$(TOOLSET)/NazaraEngine.sln \ No newline at end of file