diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/common/include/CurveImpl.h | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'APEX_1.4/common/include/CurveImpl.h')
| -rw-r--r-- | APEX_1.4/common/include/CurveImpl.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/APEX_1.4/common/include/CurveImpl.h b/APEX_1.4/common/include/CurveImpl.h new file mode 100644 index 00000000..0d58721b --- /dev/null +++ b/APEX_1.4/common/include/CurveImpl.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. + * + * NVIDIA CORPORATION and its licensors retain all intellectual property + * and proprietary rights in and to this software, related documentation + * and any modifications thereto. Any use, reproduction, disclosure or + * distribution of this software and related documentation without an express + * license agreement from NVIDIA CORPORATION is strictly prohibited. + */ + + +#ifndef __CURVE_IMPL_H__ +#define __CURVE_IMPL_H__ + +#include "Apex.h" +#include "PxAssert.h" +#include "nvparameterized/NvParameterized.h" +#include "PsArray.h" +#include "Curve.h" +#include <ApexUsingNamespace.h> + +namespace nvidia +{ +namespace apex +{ + +typedef physx::Array<Vec2R> Vec2RPointArray; + +/** + The CurveImpl is a class for storing control points on a curve and evaluating the results later. +*/ +class CurveImpl : public Curve +{ +public: + CurveImpl() + {} + + ~CurveImpl() + {} + + /** + Retrieve the output Y for the specified input x, based on the properties of the stored curve described + by mControlPoints. + */ + float evaluate(float x) const; + + /** + Add a control point to the list of control points, returning the index of the new point. + */ + uint32_t addControlPoint(const Vec2R& controlPoint); + + /** + Add a control points to the list of control points. Assuming the + hPoints points to a list of vec2s + */ + void addControlPoints(::NvParameterized::Interface* param, ::NvParameterized::Handle& hPoints); + + /** + Locates the control points that contain x, placing the resulting control points in the two + out parameters. Returns true if the points were found, false otherwise. If the points were not + found, the output variables are untouched + */ + bool calculateControlPoints(float x, Vec2R& outXPoints, Vec2R& outYPoints) const; + + /** + Locates the first control point with x larger than xValue or the nimber of control points if such point doesn't exist + */ + uint32_t calculateFollowingControlPoint(float xValue) const; + + ///get the array of control points + const Vec2R* getControlPoints(uint32_t& outCount) const; + +private: + // mControlPoints is a sorted list of control points for a curve. Currently, the curve is a lame + // lirp'd curve. We could add support for other curvetypes in the future, either bezier curves, + // splines, etc. + Vec2RPointArray mControlPoints; +}; + +} +} // namespace apex + +#endif /* __CURVE_IMPL_H__ */ |