From 06eab46ce3d1c7e55a6e9d0b1f153e3a2ed2dffd Mon Sep 17 00:00:00 2001 From: Tazpn <tazpn@users.sourceforge.net> Date: Sat, 1 Jul 2006 15:48:20 +0000 Subject: [PATCH] Add extra targets getter/setter for multitargeter controller. Probably need to fix GetRefs() at some point get return weak pointer references as well as strong ones. --- obj/NiMultiTargetTransformController.cpp | 19 +++++++++++++++++++ obj/NiMultiTargetTransformController.h | 7 +++++++ 2 files changed, 26 insertions(+) diff --git a/obj/NiMultiTargetTransformController.cpp b/obj/NiMultiTargetTransformController.cpp index ba57b9c4..c17ca32e 100644 --- a/obj/NiMultiTargetTransformController.cpp +++ b/obj/NiMultiTargetTransformController.cpp @@ -3,6 +3,7 @@ All rights reserved. Please see niflib.h for licence. */ #include "NiMultiTargetTransformController.h" #include "NiNode.h" +#include <algorithm> using namespace Niflib; //Definition of TYPE constant @@ -36,3 +37,21 @@ const Type & NiMultiTargetTransformController::GetType() const { return TYPE; }; +vector<NiNodeRef> NiMultiTargetTransformController::GetExtraTargets() const { + vector<NiNodeRef> retval; + size_t n = extraTargets.size(); + retval.reserve(n); + for (size_t i=0; i<n; ++i) + retval.push_back( NiNodeRef(extraTargets[i]) ); + return retval; +} + +void NiMultiTargetTransformController::SetExtraTargets( const vector<NiNodeRef>& value ) { + extraTargets.clear(); + size_t n = value.size(); + extraTargets.reserve(n); + for (size_t i=0; i<n; ++i) + extraTargets.push_back( value[i].Ptr() ); + extraTargets.erase(std::remove(extraTargets.begin(), extraTargets.end(), (NiNode*)NULL), extraTargets.end()); +} + diff --git a/obj/NiMultiTargetTransformController.h b/obj/NiMultiTargetTransformController.h index 69e5ccbf..67303f01 100644 --- a/obj/NiMultiTargetTransformController.h +++ b/obj/NiMultiTargetTransformController.h @@ -5,6 +5,7 @@ All rights reserved. Please see niflib.h for licence. */ #define _NIMULTITARGETTRANSFORMCONTROLLER_H_ #include "NiTimeController.h" + namespace Niflib { // Forward define of referenced blocks @@ -35,6 +36,12 @@ public: virtual list<NiObjectRef> GetRefs() const; virtual const Type & GetType() const; + /*! + * NiNode Targets to be controlled. + */ + vector<Ref<NiNode> > GetExtraTargets() const; + void SetExtraTargets( const vector< Ref<NiNode> >& value ); + protected: NI_MULTI_TARGET_TRANSFORM_CONTROLLER_MEMBERS STANDARD_INTERNAL_METHODS -- GitLab