diff --git a/doomsday/apps/client/include/render/playerweaponanimator.h b/doomsday/apps/client/include/render/playerweaponanimator.h index e0f4b8f41b..d57fab69b6 100644 --- a/doomsday/apps/client/include/render/playerweaponanimator.h +++ b/doomsday/apps/client/include/render/playerweaponanimator.h @@ -20,7 +20,7 @@ #define CLIENT_RENDER_PLAYERWEAPONANIMATOR_H #include -#include "mobjanimator.h" +#include "stateanimator.h" class ClientPlayer; struct state_s; @@ -46,7 +46,7 @@ class PlayerWeaponAnimator de::ModelDrawable const *model() const; - MobjAnimator &animator(); + StateAnimator &animator(); void setupVisPSprite(vispsprite_t &spr) const; diff --git a/doomsday/apps/client/include/render/rend_model.h b/doomsday/apps/client/include/render/rend_model.h index 3d2fa81544..3351f2b06b 100644 --- a/doomsday/apps/client/include/render/rend_model.h +++ b/doomsday/apps/client/include/render/rend_model.h @@ -29,7 +29,7 @@ #include class TextureVariantSpec; -class MobjAnimator; +class StateAnimator; struct vissprite_t; /// Absolute maximum number of vertices per submodel supported by this module. @@ -66,7 +66,7 @@ struct drawmodel2params_t struct mobj_s const *object; de::ModelDrawable const *model; ModelRenderer::AuxiliaryData const *auxData; - MobjAnimator const *animator; + StateAnimator const *animator; }; DENG_EXTERN_C de::dbyte useModels; diff --git a/doomsday/apps/client/include/render/mobjanimator.h b/doomsday/apps/client/include/render/stateanimator.h similarity index 81% rename from doomsday/apps/client/include/render/mobjanimator.h rename to doomsday/apps/client/include/render/stateanimator.h index 465ff66735..83c57fd571 100644 --- a/doomsday/apps/client/include/render/mobjanimator.h +++ b/doomsday/apps/client/include/render/stateanimator.h @@ -1,4 +1,4 @@ -/** @file mobjanimator.h +/** @file stateanimator.h * * @authors Copyright (c) 2014 Jaakko Keränen * @@ -16,26 +16,26 @@ * http://www.gnu.org/licenses */ -#ifndef DENG_CLIENT_RENDER_MOBJANIMATOR_H -#define DENG_CLIENT_RENDER_MOBJANIMATOR_H +#ifndef DENG_CLIENT_RENDER_STATEANIMATOR_H +#define DENG_CLIENT_RENDER_STATEANIMATOR_H #include "render/modelrenderer.h" #include #include /** - * Mobj-specific model animator. + * State-based object animator for `ModelDrawable`s. * - * The state and movement of the mobj determine which animation sequences are started. - * Also used for psprites, since they are pretty much light-weight mobjs. + * Used for both mobjs and psprites. The state and movement of the object + * determine which animation sequences are started. */ -class MobjAnimator : public de::ModelDrawable::Animator +class StateAnimator : public de::ModelDrawable::Animator { public: DENG2_ERROR(DefinitionError); public: - MobjAnimator(de::DotPath const &id, de::ModelDrawable const &model); + StateAnimator(de::DotPath const &id, de::ModelDrawable const &model); /** * Sets the namespace of the animator's owner. Available as "self" in animation @@ -76,4 +76,4 @@ class MobjAnimator : public de::ModelDrawable::Animator DENG2_PRIVATE(d) }; -#endif // DENG_CLIENT_RENDER_MOBJANIMATOR_H +#endif // DENG_CLIENT_RENDER_STATEANIMATOR_H diff --git a/doomsday/apps/client/include/render/vissprite.h b/doomsday/apps/client/include/render/vissprite.h index 69b04ea595..9948a940e1 100644 --- a/doomsday/apps/client/include/render/vissprite.h +++ b/doomsday/apps/client/include/render/vissprite.h @@ -194,7 +194,7 @@ struct vispsprite_t struct vispsprite_model2_s { de::ModelDrawable const *model; ModelAuxiliaryData const *auxData; - MobjAnimator const *animator; + StateAnimator const *animator; } model2; } data; }; diff --git a/doomsday/apps/client/include/world/clientmobjthinkerdata.h b/doomsday/apps/client/include/world/clientmobjthinkerdata.h index 6505022e62..27a75d11db 100644 --- a/doomsday/apps/client/include/world/clientmobjthinkerdata.h +++ b/doomsday/apps/client/include/world/clientmobjthinkerdata.h @@ -52,7 +52,7 @@ //#define CLM_MAGIC1 0xdecafed1 //#define CLM_MAGIC2 0xcafedeb8 -class MobjAnimator; +class StateAnimator; /** * Private client-side data for mobjs. This includes any per-object state for rendering @@ -104,9 +104,9 @@ class ClientMobjThinkerData : public MobjThinkerData * * @return Animation state, or @c NULL if not drawn as a model. */ - MobjAnimator *animator(); + StateAnimator *animator(); - MobjAnimator const *animator() const; + StateAnimator const *animator() const; de::Matrix4f const &modelTransformation() const; diff --git a/doomsday/apps/client/src/render/modelrenderer.cpp b/doomsday/apps/client/src/render/modelrenderer.cpp index a2a1a41ce2..89927bd871 100644 --- a/doomsday/apps/client/src/render/modelrenderer.cpp +++ b/doomsday/apps/client/src/render/modelrenderer.cpp @@ -17,7 +17,7 @@ */ #include "render/modelrenderer.h" -#include "render/mobjanimator.h" +#include "render/stateanimator.h" #include "render/rend_main.h" #include "render/vissprite.h" #include "gl/gl_main.h" @@ -29,6 +29,7 @@ #include #include #include +#include #include @@ -569,8 +570,8 @@ DENG2_PIMPL(ModelRenderer) [&p] (GLProgram &program, ModelDrawable::ProgramBinding binding) { p.animator->bindUniforms(program, - binding == ModelDrawable::AboutToBind? MobjAnimator::Bind : - MobjAnimator::Unbind); + binding == ModelDrawable::AboutToBind? StateAnimator::Bind : + StateAnimator::Unbind); }, // Callback for each rendering pass: @@ -578,8 +579,8 @@ DENG2_PIMPL(ModelRenderer) { p.animator->bindPassUniforms(*p.model->currentProgram(), pass.name, - state == ModelDrawable::PassBegun? MobjAnimator::Bind : - MobjAnimator::Unbind); + state == ModelDrawable::PassBegun? StateAnimator::Bind : + StateAnimator::Unbind); } ); } diff --git a/doomsday/apps/client/src/render/playerweaponanimator.cpp b/doomsday/apps/client/src/render/playerweaponanimator.cpp index faf9a6c88f..ffa435aa76 100644 --- a/doomsday/apps/client/src/render/playerweaponanimator.cpp +++ b/doomsday/apps/client/src/render/playerweaponanimator.cpp @@ -17,7 +17,7 @@ */ #include "render/playerweaponanimator.h" -#include "render/mobjanimator.h" +#include "render/stateanimator.h" #include "render/vissprite.h" #include "clientplayer.h" #include "clientapp.h" @@ -31,7 +31,7 @@ DENG2_PIMPL_NOREF(PlayerWeaponAnimator) , DENG2_OBSERVES(Asset, Deletion) { ClientPlayer *player; - std::unique_ptr animator; + std::unique_ptr animator; ModelRenderer::AuxiliaryData const *modelAuxData = nullptr; Instance(ClientPlayer *plr) @@ -52,7 +52,7 @@ DENG2_PIMPL_NOREF(PlayerWeaponAnimator) auto loaded = modelBank().modelAndData(identifier); ModelDrawable &model = *loaded.first; model.audienceForDeletion() += this; - animator.reset(new MobjAnimator(identifier, model)); + animator.reset(new StateAnimator(identifier, model)); animator->setOwnerNamespace(player->info()); // The basic transformation of the model. @@ -94,7 +94,7 @@ void PlayerWeaponAnimator::stateChanged(state_s const *state) } } -MobjAnimator &PlayerWeaponAnimator::animator() +StateAnimator &PlayerWeaponAnimator::animator() { DENG2_ASSERT(hasModel()); return *d->animator; diff --git a/doomsday/apps/client/src/render/r_things.cpp b/doomsday/apps/client/src/render/r_things.cpp index bd3736c251..8736a430b9 100644 --- a/doomsday/apps/client/src/render/r_things.cpp +++ b/doomsday/apps/client/src/render/r_things.cpp @@ -41,7 +41,7 @@ #include "render/r_main.h" #include "render/angleclipper.h" -#include "render/mobjanimator.h" +#include "render/stateanimator.h" #include "render/rend_halo.h" #include "render/vissprite.h" @@ -191,7 +191,7 @@ void R_ProjectSprite(mobj_t &mob) ModelDef *mf = nullptr, *nextmf = nullptr; dfloat interp = 0; - MobjAnimator const *animator = nullptr; // GL2 model present? + StateAnimator const *animator = nullptr; // GL2 model present? if(useModels) { diff --git a/doomsday/apps/client/src/render/mobjanimator.cpp b/doomsday/apps/client/src/render/stateanimator.cpp similarity index 96% rename from doomsday/apps/client/src/render/mobjanimator.cpp rename to doomsday/apps/client/src/render/stateanimator.cpp index 269005985b..c78246e23a 100644 --- a/doomsday/apps/client/src/render/mobjanimator.cpp +++ b/doomsday/apps/client/src/render/stateanimator.cpp @@ -1,4 +1,4 @@ -/** @file mobjanimator.cpp +/** @file stateanimator.cpp * * @authors Copyright (c) 2014 Jaakko Keränen * @@ -16,7 +16,7 @@ * http://www.gnu.org/licenses */ -#include "render/mobjanimator.h" +#include "render/stateanimator.h" #include "render/rendersystem.h" #include "clientapp.h" #include "dd_loop.h" @@ -44,7 +44,7 @@ static String const PASS_GLOBAL(""); static int const ANIM_DEFAULT_PRIORITY = 1; -DENG2_PIMPL(MobjAnimator) +DENG2_PIMPL(StateAnimator) { /** * Specialized animation sequence state for a running animation. @@ -251,7 +251,7 @@ DENG2_PIMPL(MobjAnimator) switch(array->size()) { default: - throw DefinitionError("MobjAnimator::initVariables", + throw DefinitionError("StateAnimator::initVariables", QString("%1: Invalid initial value size (%2) for render.variable") .arg(valueDef.gets(ScriptedInfo::VAR_SOURCE)) .arg(array->size())); @@ -349,17 +349,17 @@ DENG2_PIMPL(MobjAnimator) } }; -MobjAnimator::MobjAnimator(DotPath const &id, ModelDrawable const &model) +StateAnimator::StateAnimator(DotPath const &id, ModelDrawable const &model) : ModelDrawable::Animator(model, Instance::Sequence::make) , d(new Instance(this, id)) {} -void MobjAnimator::setOwnerNamespace(Record &names) +void StateAnimator::setOwnerNamespace(Record &names) { d->names.add(VAR_SELF).set(new RecordValue(names)); } -void MobjAnimator::triggerByState(String const &stateName) +void StateAnimator::triggerByState(String const &stateName) { using Sequence = Instance::Sequence; @@ -370,7 +370,7 @@ void MobjAnimator::triggerByState(String const &stateName) auto found = stateAnims->constFind(stateName); if(found == stateAnims->constEnd()) return; - LOG_AS("MobjAnimator"); + LOG_AS("StateAnimator"); LOGDEV_GL_XVERBOSE("triggerByState: ") << stateName; d->currentStateName = stateName; @@ -442,7 +442,7 @@ void MobjAnimator::triggerByState(String const &stateName) } } -void MobjAnimator::advanceTime(TimeDelta const &elapsed) +void StateAnimator::advanceTime(TimeDelta const &elapsed) { ModelDrawable::Animator::advanceTime(elapsed); @@ -516,19 +516,19 @@ void MobjAnimator::advanceTime(TimeDelta const &elapsed) } } -ddouble MobjAnimator::currentTime(int index) const +ddouble StateAnimator::currentTime(int index) const { // Mobjs think on sharp ticks only, however we need to ensure time advances on // every frame for smooth animation. return ModelDrawable::Animator::currentTime(index); // + frameTimePos; } -void MobjAnimator::bindUniforms(GLProgram &program, BindOperation operation) const +void StateAnimator::bindUniforms(GLProgram &program, BindOperation operation) const { bindPassUniforms(program, PASS_GLOBAL, operation); } -void MobjAnimator::bindPassUniforms(GLProgram &program, String const &passName, +void StateAnimator::bindPassUniforms(GLProgram &program, String const &passName, BindOperation operation) const { auto const vars = d->passVars.constFind(passName); diff --git a/doomsday/apps/client/src/world/clientmobjthinkerdata.cpp b/doomsday/apps/client/src/world/clientmobjthinkerdata.cpp index 8b32f6cb8a..20a952ea1a 100644 --- a/doomsday/apps/client/src/world/clientmobjthinkerdata.cpp +++ b/doomsday/apps/client/src/world/clientmobjthinkerdata.cpp @@ -24,7 +24,7 @@ #include "clientapp.h" #include "dd_loop.h" #include "render/modelrenderer.h" -#include "render/mobjanimator.h" +#include "render/stateanimator.h" #include "world/generator.h" using namespace de; @@ -47,7 +47,7 @@ DENG2_PIMPL(ClientMobjThinkerData) { Flags flags; std::unique_ptr sync; - std::unique_ptr animator; + std::unique_ptr animator; ModelRenderer::AuxiliaryData const *modelAuxData = nullptr; Matrix4f modelMatrix; @@ -110,7 +110,7 @@ DENG2_PIMPL(ClientMobjThinkerData) auto loaded = modelBank().modelAndData(modelId()); ModelDrawable &model = *loaded.first; model.audienceForDeletion() += this; - animator.reset(new MobjAnimator(modelId(), model)); + animator.reset(new StateAnimator(modelId(), model)); animator->setOwnerNamespace(self.info()); modelAuxData = loaded.second; @@ -227,12 +227,12 @@ ClientMobjThinkerData::RemoteSync &ClientMobjThinkerData::remoteSync() return *d->sync; } -MobjAnimator *ClientMobjThinkerData::animator() +StateAnimator *ClientMobjThinkerData::animator() { return d->animator.get(); } -MobjAnimator const *ClientMobjThinkerData::animator() const +StateAnimator const *ClientMobjThinkerData::animator() const { return d->animator.get(); }