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