Overte C++ Documentation
AnimBlendDirectional.h
1 //
2 // AnimBlendDirectonal.h
3 //
4 // Created by Anthony J. Thibault on Augest 30 2019.
5 // Copyright (c) 2019 High Fidelity, Inc. All rights reserved.
6 //
7 // Distributed under the Apache License, Version 2.0.
8 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
9 //
10 
11 #ifndef hifi_AnimBlendDirectional_h
12 #define hifi_AnimBlendDirectional_h
13 
14 #include "AnimNode.h"
15 
16 // blend between up to nine AnimNodes.
17 
18 class AnimBlendDirectional : public AnimNode {
19 public:
20  friend class AnimTests;
21 
22  AnimBlendDirectional(const QString& id, glm::vec3 alpha, const QString& centerId,
23  const QString& upId, const QString& downId, const QString& leftId, const QString& rightId,
24  const QString& upLeftId, const QString& upRightId, const QString& downLeftId, const QString& downRightId);
25  virtual ~AnimBlendDirectional() override;
26 
27  virtual const AnimPoseVec& evaluate(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut) override;
28 
29  void setAlphaVar(const QString& alphaVar) { _alphaVar = alphaVar; }
30 
31  bool lookupChildIds();
32 
33 protected:
34  // for AnimDebugDraw rendering
35  virtual const AnimPoseVec& getPosesInternal() const override;
36 
37  AnimPoseVec _poses;
38 
39  glm::vec3 _alpha;
40  QString _centerId;
41  QString _upId;
42  QString _downId;
43  QString _leftId;
44  QString _rightId;
45  QString _upLeftId;
46  QString _upRightId;
47  QString _downLeftId;
48  QString _downRightId;
49 
50  QString _alphaVar;
51 
52  int _childIndices[3][3];
53 
54  // no copies
55  AnimBlendDirectional(const AnimBlendDirectional&) = delete;
56  AnimBlendDirectional& operator=(const AnimBlendDirectional&) = delete;
57 };
58 
59 #endif // hifi_AnimBlendDirectional_h