Ocean
CoordinateInterpolator.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  *
4  * This source code is licensed under the MIT license found in the
5  * LICENSE file in the root directory of this source tree.
6  */
7 
8 #ifndef META_OCEAN_SCENEDESCRIPTION_SDX_X3D_COORDINATE_INTERPOLATOR_H
9 #define META_OCEAN_SCENEDESCRIPTION_SDX_X3D_COORDINATE_INTERPOLATOR_H
10 
13 
14 namespace Ocean
15 {
16 
17 namespace SceneDescription
18 {
19 
20 namespace SDX
21 {
22 
23 namespace X3D
24 {
25 
26 /**
27  * This class implements a coordinate interpolator node.
28  * @ingroup scenedescriptionsdxx3d
29  */
30 class OCEAN_SCENEDESCRIPTION_SDX_X3D_EXPORT CoordinateInterpolator : virtual public X3DInterpolatorNode
31 {
32  public:
33 
34  /**
35  * Creates a new coordinate interpolator node.
36  * @param environment Node environment
37  */
38  explicit CoordinateInterpolator(const SDXEnvironment* environment);
39 
40  protected:
41 
42  /**
43  * Specifies the node type and the fields of this node.
44  * @return Unique node specification of this node
45  */
47 
48  /**
49  * Event function to inform the node that it has been initialized and can apply all internal values to corresponding rendering objects.
50  * @see SDXNode::onInitialize().
51  */
52  void onInitialize(const Rendering::SceneRef& scene, const Timestamp timestamp) override;
53 
54  /**
55  * Event function to inform the node about a changed field.
56  * @see SDXNode::onFieldChanged().
57  */
58  void onFieldChanged(const std::string& fieldName) override;
59 
60  /**
61  * Event function for single value 'interpolates'.
62  * @see X3DInterpolationNode::onSingleValue().
63  */
64  void onSingleValue(const size_t index, const Timestamp eventTimestamp) override;
65 
66  /**
67  * Event function to interpolate between two values.
68  * @see X3DInterpolationNode::onInterpolate().
69  */
70  void onInterpolate(const size_t leftIndex, const size_t rightIndex, const Scalar interpolationFactor, const Timestamp eventTimestamp) override;
71 
72  /**
73  * Returns the address of the most derived object.
74  * @see Node::objectAddress().
75  */
76  size_t objectAddress() const override;
77 
78  protected:
79 
80  /// KeyValue field.
82 
83  /// Value_changed field.
85 
86  /// Number of parallel interpolation values.
87  unsigned int interpolationValues_;
88 };
89 
90 }
91 
92 }
93 
94 }
95 
96 }
97 
98 #endif // META_OCEAN_SCENEDESCRIPTION_SDX_X3D_COORDINATE_INTERPOLATOR_H
This class implements a node specification object.
Definition: scenedescription/Node.h:77
This class implements a coordinate interpolator node.
Definition: CoordinateInterpolator.h:31
CoordinateInterpolator(const SDXEnvironment *environment)
Creates a new coordinate interpolator node.
MultiVector3 keyValue_
KeyValue field.
Definition: CoordinateInterpolator.h:81
size_t objectAddress() const override
Returns the address of the most derived object.
void onInterpolate(const size_t leftIndex, const size_t rightIndex, const Scalar interpolationFactor, const Timestamp eventTimestamp) override
Event function to interpolate between two values.
MultiVector3 valueChanged_
Value_changed field.
Definition: CoordinateInterpolator.h:84
NodeSpecification specifyNode()
Specifies the node type and the fields of this node.
unsigned int interpolationValues_
Number of parallel interpolation values.
Definition: CoordinateInterpolator.h:87
void onSingleValue(const size_t index, const Timestamp eventTimestamp) override
Event function for single value 'interpolates'.
void onFieldChanged(const std::string &fieldName) override
Event function to inform the node about a changed field.
void onInitialize(const Rendering::SceneRef &scene, const Timestamp timestamp) override
Event function to inform the node that it has been initialized and can apply all internal values to c...
This class implements an abstract x3d interpolator node object.
Definition: X3DInterpolatorNode.h:33
This class implements a node environment container.
Definition: SDXNode.h:62
This class implements a timestamp.
Definition: Timestamp.h:36
float Scalar
Definition of a scalar type.
Definition: Math.h:128
The namespace covering the entire Ocean framework.
Definition: Accessor.h:15