浏览代码

Trying to fix up KVP class

Marko Pintera 13 年之前
父节点
当前提交
83fb085e09
共有 2 个文件被更改,包括 64 次插入36 次删除
  1. 30 2
      CamelotRenderer/Include/CmMaterialRTTI.h
  2. 34 34
      CamelotUtility/Include/CmKeyValuepair.h

+ 30 - 2
CamelotRenderer/Include/CmMaterialRTTI.h

@@ -42,8 +42,22 @@ namespace CamelotEngine
 		class FloatParamKVPRTTI;
 		typedef KeyValuePair<String, FloatParam, FloatParamKVPRTTI> FloatParamKVP;
 
-		class FloatParamKVPRTTI : public KeyValuePairRTTI<String, FloatParam, FloatParamKVP>
+		class FloatParamKVPRTTI : public RTTIType<FloatParamKVP, IReflectable, FloatParamKVPRTTI>
 		{
+		private:
+			String& getKey(FloatParamKVP* obj) { return obj->mKey; }
+			void setKey(FloatParamKVP* obj,  String& val) { obj->mKey = val; }
+
+			FloatParam& getValue(FloatParamKVP* obj) { return obj->mValue; }
+			void setValue(FloatParamKVP* obj,  FloatParam& val) { obj->mValue = val; }
+
+		public:
+			FloatParamKVPRTTI()
+			{
+				addPlainField("mKey", 0, &FloatParamKVPRTTI::getKey, &FloatParamKVPRTTI::setKey);
+				addPlainField("mValue", 1, &FloatParamKVPRTTI::getValue, &FloatParamKVPRTTI::setValue);
+			}
+
 		public:
 			virtual const String& getRTTIName()
 			{
@@ -65,8 +79,22 @@ namespace CamelotEngine
 		class TexParamKVPRTTI;
 		typedef KeyValuePair<String, TextureRef, TexParamKVPRTTI> TexParamKVP;
 
-		class TexParamKVPRTTI : public KeyValuePairRTTI<String, TextureRef, TexParamKVP>
+		class TexParamKVPRTTI : public RTTIType<TexParamKVP, IReflectable, TexParamKVPRTTI>
 		{
+		private:
+			String& getKey(TexParamKVP* obj) { return obj->mKey; }
+			void setKey(TexParamKVP* obj,  String& val) { obj->mKey = val; }
+
+			TextureRef& getValue(TexParamKVP* obj) { return obj->mValue; }
+			void setValue(TexParamKVP* obj,  TextureRef& val) { obj->mValue = val; }
+
+		public:
+			TexParamKVPRTTI()
+			{
+				addPlainField("mKey", 0, &TexParamKVPRTTI::getKey, &TexParamKVPRTTI::setKey);
+				addPlainField("mValue", 1, &TexParamKVPRTTI::getValue, &TexParamKVPRTTI::setValue);
+			}
+
 		public:
 			virtual const String& getRTTIName()
 			{

+ 34 - 34
CamelotUtility/Include/CmKeyValuepair.h

@@ -37,40 +37,40 @@ namespace CamelotEngine
 		}
 	};
 
-	template <typename Key, typename Value, typename MyType>
-	class KeyValuePairRTTI : public RTTIType<MyType, IReflectable, KeyValuePairRTTI<Key, Value, MyType>>
-	{
-	private:
-		Key& getKey(KeyValuePairBase<Key, Value>* obj) { return obj->mKey; }
-		void setKey(KeyValuePairBase<Key, Value>* obj,  Key& val) { obj->mKey = val; }
-
-		Value& getValue(KeyValuePairBase<Key, Value>* obj) { return obj->mValue; }
-		void setValue(KeyValuePairBase<Key, Value>* obj,  Value& val) { obj->mValue = val; }
-
-	public:
-		KeyValuePairRTTI()
-		{
-			addPlainField("mKey", 0, &KeyValuePairRTTI::getKey, &KeyValuePairRTTI::setKey);
-			addPlainField("mValue", 1, &KeyValuePairRTTI::getValue, &KeyValuePairRTTI::setValue);
-		}
-
-	public:
-		virtual const String& getRTTIName()
-		{
-			static String name = "Abstract";
-			return name;
-		}
-
-		virtual UINT32 getRTTIId()
-		{
-			return TID_Abstract;
-		}
-
-		virtual std::shared_ptr<IReflectable> newRTTIObject()
-		{
-			CM_EXCEPT(InternalErrorException, "Cannot instantiate abstract class.");
-		}
-	};
+	//template <typename Key, typename Value, typename MyType>
+	//class KeyValuePairRTTI : public RTTIType<MyType, IReflectable, KeyValuePairRTTI<Key, Value, MyType>>
+	//{
+	//private:
+	//	Key& getKey(KeyValuePairBase<Key, Value>* obj) { return obj->mKey; }
+	//	void setKey(KeyValuePairBase<Key, Value>* obj,  Key& val) { obj->mKey = val; }
+
+	//	Value& getValue(KeyValuePairBase<Key, Value>* obj) { return obj->mValue; }
+	//	void setValue(KeyValuePairBase<Key, Value>* obj,  Value& val) { obj->mValue = val; }
+
+	//public:
+	//	KeyValuePairRTTI()
+	//	{
+	//		addPlainField("mKey", 0, &KeyValuePairRTTI::getKey, &KeyValuePairRTTI::setKey);
+	//		addPlainField("mValue", 1, &KeyValuePairRTTI::getValue, &KeyValuePairRTTI::setValue);
+	//	}
+
+	//public:
+	//	virtual const String& getRTTIName()
+	//	{
+	//		static String name = "Abstract";
+	//		return name;
+	//	}
+
+	//	virtual UINT32 getRTTIId()
+	//	{
+	//		return TID_Abstract;
+	//	}
+
+	//	virtual std::shared_ptr<IReflectable> newRTTIObject()
+	//	{
+	//		CM_EXCEPT(InternalErrorException, "Cannot instantiate abstract class.");
+	//	}
+	//};
 
 	template <typename Key, typename Value, typename RTTIClass>
 	class KeyValuePair : public KeyValuePairBase<Key, Value>