Overte C++ Documentation
ScaleFilter.h
1 //
2 // Created by Bradley Austin Davis 2015/10/25
3 // Copyright 2015 High Fidelity, Inc.
4 //
5 // Distributed under the Apache License, Version 2.0.
6 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7 //
8 
9 #pragma once
10 #ifndef hifi_Controllers_Filters_Scale_h
11 #define hifi_Controllers_Filters_Scale_h
12 
13 #include <glm/gtc/matrix_transform.hpp>
14 
15 #include "../Filter.h"
16 
17 namespace controller {
18 
19 class ScaleFilter : public Filter {
20  REGISTER_FILTER_CLASS(ScaleFilter);
21 public:
22  ScaleFilter() = default;
23  ScaleFilter(float scale) : _scale(scale) {}
24 
25  virtual AxisValue apply(AxisValue value) const override {
26  return { value.value * _scale, value.timestamp, value.valid };
27  }
28 
29  virtual Pose apply(Pose value) const override {
30  return value.transform(glm::scale(glm::mat4(), glm::vec3(_scale)));
31  }
32 
33  virtual bool parseParameters(const QJsonValue& parameters) override;
34 
35 private:
36  float _scale = 1.0f;
37 };
38 
39 }
40 
41 #endif