From f75b8a04596af44ade4e3c56b7fccd7ea1175725 Mon Sep 17 00:00:00 2001 From: Alecu100 <lui_alecu@yahoo.co.uk> Date: Thu, 12 Jan 2012 03:47:14 +0200 Subject: [PATCH] Added support for adding new control points and editing the offsets in the NiBSplineTransformInterpolator for the start of the control points. Also made niflib compile with the latest version of qhull. --- src/nifqhull.cpp | 1 + src/obj/NiBSplineData.cpp | 40 ++++++++++++++++++++++ src/obj/NiBSplineTransformInterpolator.cpp | 23 +++++++++++++ 3 files changed, 64 insertions(+) diff --git a/src/nifqhull.cpp b/src/nifqhull.cpp index cfb8dbc9..f8c7c3f7 100644 --- a/src/nifqhull.cpp +++ b/src/nifqhull.cpp @@ -25,6 +25,7 @@ extern "C" #include "../qhull/src/libqhull/poly2.c" #include "../qhull/src/libqhull/geom2.c" #include "../qhull/src/libqhull/userprintf.c" +#include "../qhull/src/libqhull/userprintf_rbox.c" #include "../qhull/src/libqhull/usermem.c" #include "../qhull/src/libqhull/random.c" #include "../qhull/src/libqhull/rboxlib.c" diff --git a/src/obj/NiBSplineData.cpp b/src/obj/NiBSplineData.cpp index 13708c6e..21aa5e55 100644 --- a/src/obj/NiBSplineData.cpp +++ b/src/obj/NiBSplineData.cpp @@ -147,6 +147,27 @@ vector<float> NiBSplineData::GetFloatControlPoints() const return floatControlPoints; } +void NiBSplineData::SetFloatControlPoints( vector<float> value ) +{ + this->floatControlPoints.clear(); + this->numFloatControlPoints = value.size(); + + for(int i = 0; i < value.size(); i++) { + this->floatControlPoints.push_back(value[i]); + } +} + + +void NiBSplineData::AppendFloatControlPoints( vector<float> value ) +{ + this->numFloatControlPoints += value.size(); + + for(int i = 0; i < this->floatControlPoints.size(); i++) { + this->floatControlPoints.push_back(value[i]); + } +} + + vector<float> NiBSplineData::GetFloatControlPointRange(int offset, int count) const { vector<float> value; @@ -163,6 +184,25 @@ vector<short > NiBSplineData::GetShortControlPoints() const return shortControlPoints; } +void NiBSplineData::SetShortControlPoints( vector<short> value ) +{ + this->shortControlPoints.clear(); + this->numShortControlPoints = value.size(); + + for(int i = 0; i < value.size(); i++) { + this->shortControlPoints.push_back(value); + } +} + +void NiBSplineData::AppendShortControlPoints( vector<short> value ) +{ + this->numShortControlPoints += value.size(); + + for(int i = 0; i < value.size(); i++) { + this->shortControlPoints.push_back(value[i]); + } +} + vector<short > NiBSplineData::GetShortControlPointRange(int offset, int count) const { vector<short> value; diff --git a/src/obj/NiBSplineTransformInterpolator.cpp b/src/obj/NiBSplineTransformInterpolator.cpp index dcd74704..cd81a1df 100644 --- a/src/obj/NiBSplineTransformInterpolator.cpp +++ b/src/obj/NiBSplineTransformInterpolator.cpp @@ -124,6 +124,14 @@ void NiBSplineTransformInterpolator::SetTranslation( Vector3 value ) { translation = value; } +int NiBSplineTransformInterpolator::GetTranslationOffset() { + return translationOffset; +} + +void NiBSplineTransformInterpolator::SetTranslationOffset( int value ) { + translationOffset = value; +} + Quaternion NiBSplineTransformInterpolator::GetRotation() const { return rotation; } @@ -132,6 +140,14 @@ void NiBSplineTransformInterpolator::SetRotation( Quaternion value ) { rotation = value; } +int NiBSplineTransformInterpolator::GetRotationOffset() { + return rotationOffset; +} + +void NiBSplineTransformInterpolator::SetRotationOffset( int value ) { + rotationOffset = value; +} + float NiBSplineTransformInterpolator::GetScale() const { return scale; } @@ -140,6 +156,13 @@ void NiBSplineTransformInterpolator::SetScale( float value ) { scale = value; } +int NiBSplineTransformInterpolator::GetScaleOffset() { + return scaleOffset; +} + +void Niflib::NiBSplineTransformInterpolator::SetScaleOffset( int value ) { + scaleOffset = value; +} vector< Quaternion > NiBSplineTransformInterpolator::GetQuatRotateControlData() const { -- GitLab