RavEngine
Loading...
Searching...
No Matches
track_builder.h
1//----------------------------------------------------------------------------//
2// //
3// ozz-animation is hosted at http://github.com/guillaumeblanc/ozz-animation //
4// and distributed under the MIT License (MIT). //
5// //
6// Copyright (c) Guillaume Blanc //
7// //
8// Permission is hereby granted, free of charge, to any person obtaining a //
9// copy of this software and associated documentation files (the "Software"), //
10// to deal in the Software without restriction, including without limitation //
11// the rights to use, copy, modify, merge, publish, distribute, sublicense, //
12// and/or sell copies of the Software, and to permit persons to whom the //
13// Software is furnished to do so, subject to the following conditions: //
14// //
15// The above copyright notice and this permission notice shall be included in //
16// all copies or substantial portions of the Software. //
17// //
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR //
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, //
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL //
21// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER //
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING //
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER //
24// DEALINGS IN THE SOFTWARE. //
25// //
26//----------------------------------------------------------------------------//
27
28#ifndef OZZ_OZZ_ANIMATION_OFFLINE_TRACK_BUILDER_H_
29#define OZZ_OZZ_ANIMATION_OFFLINE_TRACK_BUILDER_H_
30
31#include "ozz/animation/offline/export.h"
32#include "ozz/base/memory/unique_ptr.h"
33
34namespace ozz {
35namespace animation {
36
37// Forward declares the runtime tracks type.
38class FloatTrack;
39class Float2Track;
40class Float3Track;
41class Float4Track;
42class QuaternionTrack;
43
44namespace offline {
45
46// Forward declares the offline tracks type.
47struct RawFloatTrack;
48struct RawFloat2Track;
49struct RawFloat3Track;
50struct RawFloat4Track;
51struct RawQuaternionTrack;
52
53// Defines the class responsible of building runtime track instances from
54// offline tracks.The input raw track is first validated. Runtime conversion of
55// a validated raw track cannot fail. Note that no optimization is performed on
56// the data at all.
57class OZZ_ANIMOFFLINE_DLL TrackBuilder {
58 public:
59 // Creates a Track based on _raw_track and *this builder parameters.
60 // Returns a track instance on success, an empty unique_ptr on failure. See
61 // Raw*Track::Validate() for more details about failure reasons.
62 // The track is returned as an unique_ptr as ownership is given back to the
63 // caller.
64 ozz::unique_ptr<FloatTrack> operator()(const RawFloatTrack& _input) const;
65 ozz::unique_ptr<Float2Track> operator()(const RawFloat2Track& _input) const;
66 ozz::unique_ptr<Float3Track> operator()(const RawFloat3Track& _input) const;
67 ozz::unique_ptr<Float4Track> operator()(const RawFloat4Track& _input) const;
68 ozz::unique_ptr<QuaternionTrack> operator()(
69 const RawQuaternionTrack& _input) const;
70
71 private:
72 template <typename _RawTrack, typename _Track>
73 ozz::unique_ptr<_Track> Build(const _RawTrack& _input) const;
74};
75} // namespace offline
76} // namespace animation
77} // namespace ozz
78#endif // OZZ_OZZ_ANIMATION_OFFLINE_TRACK_BUILDER_H_
Definition track_builder.h:57
Definition raw_track.h:113
Definition raw_track.h:115
Definition raw_track.h:117
Definition raw_track.h:111