From b3bf7b3e010a7cad197ddd443f2b17263a582350 Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Wed, 22 Feb 2017 20:41:05 -0800 Subject: [PATCH] Using custom property and fixing issue with blend mode. --- Assets/Archer.nima | Bin 35636 -> 35892 bytes Nima-Cpp | 2 +- Source/ArcherController.cpp | 18 +++++++++++++++++- Source/ArcherController.hpp | 1 + Source/Graphics/OpenGL/GLRenderer2D.cpp | 5 ++++- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Assets/Archer.nima b/Assets/Archer.nima index 3f34c932f8a6199415f280fd14801204c368459a..1a32bbdb1b8bba1260d37c714cb4311a9c9ffcfa 100755 GIT binary patch delta 596 zcmYjN%_~Gv6hFrdjTuJyny{HHtdx+2QZHXIiDEupUP|(w$rwYEF|ojq2@9KBLiq<+ zO?NiJVqzl;7K+G6p^&n&vvBUagqaGcQ-;UPZdNf;Ze3lmDXekif#hYuTh#bha1e?3N7F>?A(Mp0 zGDNDwVJ!0k0v6Dn2yqiv3Vyb}AFC`iP7ca$mW=EaMzR4cBz!z(T?+d zWXumy!A2oLYXNL;3G6FG7L>ySfip?kOk4^Au(vC4BZ>F{@F->VCY~g@zY}6@hCx)9-!aAUAye?|GF(Rz9Rh!DW1_s8uR0f9VjeJLvC%;LyXAGLGlcFyg%)o63l;Z?qPj7{g z#G>@nlAy^2DMgH7lOLxT0ZFmcD8|Uig{elYkqjJ5R41=URRZcgo$3iD6(*aeNwF|6 zEO3|{oOU0m+&KL +#include #include ArcherController::ArcherController() : @@ -8,6 +9,7 @@ ArcherController::ArcherController() : m_Walk(nullptr), m_Run(nullptr), m_WalkToIdle(nullptr), + m_GroundSpeedProperty(nullptr), m_AimAnimationTime(0.0f), m_IdleTime(0.0f), m_WalkToIdleTime(0.0f), @@ -40,9 +42,17 @@ void ArcherController::onAdded(nima::GameActorInstance* actorInstance) m_Run = actorInstance->animation("Run"); m_WalkToIdle = actorInstance->animation("WalkToIdle"); + nima::ActorNode* characterNode = actorInstance->component("Character"); + if(characterNode != nullptr) + { + m_GroundSpeedProperty = characterNode->getCustomFloatProperty("GroundSpeed"); + } + if(m_Aim != nullptr) { nima::ActorNode* muzzle = actorInstance->component("Muzzle"); + + // if(muzzle != nullptr) { for(int i = 0; i < AimSliceCount; i++) @@ -170,7 +180,13 @@ void ArcherController::advance(nima::GameActorInstance* actorInstance, float ela } float moveSpeed = m_IsRunning ? 1100.0f : 600.0f; - root->x(root->x() + m_HorizontalSpeed * elapsedSeconds * moveSpeed); + float speedModifier = 1.0f; + if(m_GroundSpeedProperty != nullptr) + { + speedModifier = (m_IsRunning ? 1.0f - m_GroundSpeedProperty->value() : m_GroundSpeedProperty->value())*0.5f+0.5f; + } + + root->x(root->x() + m_HorizontalSpeed * elapsedSeconds * moveSpeed * speedModifier); if(m_Walk != nullptr && m_Run != nullptr) { if(m_HorizontalSpeed == 0.0f && m_WalkMix == 0.0f && m_RunMix == 0.0f) diff --git a/Source/ArcherController.hpp b/Source/ArcherController.hpp index 7365e09..4d3b2b6 100644 --- a/Source/ArcherController.hpp +++ b/Source/ArcherController.hpp @@ -13,6 +13,7 @@ class ArcherController : public nima::GameActorController nima::ActorAnimationInstance* m_Walk; nima::ActorAnimation* m_Run; nima::ActorAnimation* m_WalkToIdle; + nima::CustomFloatProperty* m_GroundSpeedProperty; float m_AimAnimationTime; float m_IdleTime; float m_WalkToIdleTime; diff --git a/Source/Graphics/OpenGL/GLRenderer2D.cpp b/Source/Graphics/OpenGL/GLRenderer2D.cpp index 54d103d..4b939ac 100644 --- a/Source/Graphics/OpenGL/GLRenderer2D.cpp +++ b/Source/Graphics/OpenGL/GLRenderer2D.cpp @@ -98,8 +98,11 @@ BlendMode GLRenderer2D::blendMode() const void GLRenderer2D::setBlendMode(BlendMode mode) { + if(m_BlendMode == mode) + { + return; + } m_BlendMode = mode; - m_BlendMode = BlendMode::Normal; switch (m_BlendMode) { case BlendMode::Off: