NAP
sequencetrackcurve.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // internal includes
8 #include "sequencetrack.h"
9 #include "sequencetracksegmentcurve.h"
10 
11 // external includes
12 #include <nap/resource.h>
13 #include <nap/resourceptr.h>
14 #include <glm/glm.hpp>
15 
16 namespace nap
17 {
19 
23  class NAPAPI BaseSequenceTrackCurve : public SequenceTrack
24  {
25  RTTI_ENABLE(SequenceTrack)
26  };
27 
32  template<typename T>
34  {
35  RTTI_ENABLE(BaseSequenceTrackCurve)
36  public:
42  virtual bool init(utility::ErrorState& errorState) override;
43 
44  T mMaximum = T(1);
45  T mMinimum = T(0);
46  };
47 
49  // Definitions of all supported Sequence Curve Tracks
51 
56 
57 
59  // Template definitions
61 
62  template<typename T>
64  {
65  // Initialize base class
66  if(!SequenceTrack::init(errorState))
67  return false;
68 
69  // Validate type of segment, needs to be of same type as this class!
70  for(const auto &segment: mSegments)
71  {
72  if(!errorState.check(segment->get_type().template is_derived_from<SequenceTrackSegmentCurve<T>>(),
73  "segment not derived from correct type, expected: %s, got: %s",
74  RTTI_OF(SequenceTrackSegmentCurve<T>).get_name().data(),
75  segment->get_type().get_name().data()))
76  {
77  return false;
78  }
79  }
80  return true;
81  }
82 }
nap::rtti::Object::init
virtual bool init(utility::ErrorState &errorState)
Definition: object.h:46
nap::SequenceTrackCurve::init
virtual bool init(utility::ErrorState &errorState) override
Definition: sequencetrackcurve.h:63
nap::utility::ErrorState::check
bool check(bool successCondition, T &&errorMessage)
Definition: errorstate.h:36
nap::SequenceTrackSegmentCurve
Definition: sequencetracksegmentcurve.h:19
nap::utility::ErrorState
Definition: errorstate.h:19
nap::SequenceTrack
Definition: sequencetrack.h:22
nap::SequenceTrackCurve
Definition: sequencetrackcurve.h:33
nap::SequenceTrackCurve::mMaximum
T mMaximum
Property: 'Maximum' maximum value of track.
Definition: sequencetrackcurve.h:44
nap::SequenceTrackCurve::mMinimum
T mMinimum
Property: 'Minimum' minimum value of track.
Definition: sequencetrackcurve.h:45
nap
Definition: templateapp.h:17
nap::BaseSequenceTrackCurve
Definition: sequencetrackcurve.h:23