[Bf-blender-cvs] [bad16bb3c09] collada: Refactor: Collada: Added classes for Lamp and Camera

Gaia Clary noreply at git.blender.org
Wed Mar 28 21:31:22 CEST 2018


Commit: bad16bb3c097e396da92c8cf6dc6d5958696649b
Author: Gaia Clary
Date:   Sun Mar 25 13:03:53 2018 +0200
Branches: collada
https://developer.blender.org/rBbad16bb3c097e396da92c8cf6dc6d5958696649b

Refactor: Collada: Added classes for Lamp and Camera

After i needed to add extra structure for Material and Armature
it is now time to have also Camera and Lamp objects. those objects
are pretty muchg just data at the moment. However this makes the
code more readable without loosing anything.

===================================================================

M	source/blender/collada/BCAnimationCurveContainer.h
M	source/blender/collada/BCSampleData.cpp
M	source/blender/collada/BCSampleData.h

===================================================================

diff --git a/source/blender/collada/BCAnimationCurveContainer.h b/source/blender/collada/BCAnimationCurveContainer.h
index 7d86c55fe57..a9d7a847819 100644
--- a/source/blender/collada/BCAnimationCurveContainer.h
+++ b/source/blender/collada/BCAnimationCurveContainer.h
@@ -45,7 +45,7 @@ typedef std::map<Object *, BCAnimationCurveMap> BCAnimationObjectMap;
 
 
 /* ============================================================== */
-typedef std::map<BCSampleKey, BCSample *> BCSampleKeysMap;
+typedef std::map<Object *, BCSample *> BCSampleKeysMap;
 
 class BCSampleFrame {
 
diff --git a/source/blender/collada/BCSampleData.cpp b/source/blender/collada/BCSampleData.cpp
index 3cd9bd8e248..827847b9805 100644
--- a/source/blender/collada/BCSampleData.cpp
+++ b/source/blender/collada/BCSampleData.cpp
@@ -108,27 +108,27 @@ const bool BCSample::set_value(BC_animation_transform_type channel, const int ar
 
 	/* Light animation */
 	case BC_ANIMATION_TYPE_FALL_OFF_ANGLE:
-		falloff_angle = val;
+		lamp.falloff_angle = val;
 		break;
 	case BC_ANIMATION_TYPE_FALL_OFF_EXPONENT:
-		falloff_exponent = val;
+		lamp.falloff_exponent = val;
 		break;
 	case BC_ANIMATION_TYPE_BLENDER_DIST:
-		blender_dist = val;
+		lamp.blender_dist = val;
 		break;
 
 	/* Camera animation */
 	case BC_ANIMATION_TYPE_XFOV:
-		xfov = val;
+		camera.xfov = val;
 		break;
 	case BC_ANIMATION_TYPE_XMAG:
-		xmag = val;
+		camera.xmag = val;
 		break;
 	case BC_ANIMATION_TYPE_ZFAR:
-		zfar = val;
+		camera.zfar = val;
 		break;
 	case BC_ANIMATION_TYPE_ZNEAR:
-		znear = val;
+		camera.znear = val;
 		break;
 
 	default:
@@ -146,7 +146,7 @@ const bool BCSample::set_vector(BC_animation_transform_type channel, float val[3
 	switch (channel) {
 	/* Lamp animation */
 	case BC_ANIMATION_TYPE_LIGHT_COLOR:
-		vp = light_color;
+		vp = lamp.light_color;
 		break;
 	default:
 		return false;
@@ -212,30 +212,30 @@ const bool BCSample::get_value(BC_animation_transform_type channel, const int ar
 
 	/* Lamp animation */
 	case BC_ANIMATION_TYPE_LIGHT_COLOR:
-		*val = light_color[array_index];
+		*val = lamp.light_color[array_index];
 		break;
 	case BC_ANIMATION_TYPE_FALL_OFF_ANGLE:
-		*val = falloff_angle;
+		*val = lamp.falloff_angle;
 		break;
 	case BC_ANIMATION_TYPE_FALL_OFF_EXPONENT:
-		*val = falloff_exponent;
+		*val = lamp.falloff_exponent;
 		break;
 	case BC_ANIMATION_TYPE_BLENDER_DIST:
-		*val = blender_dist;
+		*val = lamp.blender_dist;
 		break;
 
 	/* Camera animation */
 	case BC_ANIMATION_TYPE_XFOV:
-		*val = xfov;
+		*val = camera.xfov;
 		break;
 	case BC_ANIMATION_TYPE_XMAG:
-		*val = xmag;
+		*val = camera.xmag;
 		break;
 	case BC_ANIMATION_TYPE_ZFAR:
-		*val = zfar;
+		*val = camera.zfar;
 		break;
 	case BC_ANIMATION_TYPE_ZNEAR:
-		*val = znear;
+		*val = camera.znear;
 		break;
 
 	case BC_ANIMATION_TYPE_UNKNOWN:
diff --git a/source/blender/collada/BCSampleData.h b/source/blender/collada/BCSampleData.h
index 14b146136ea..b9d1f6f5130 100644
--- a/source/blender/collada/BCSampleData.h
+++ b/source/blender/collada/BCSampleData.h
@@ -84,6 +84,22 @@ public:
 	float ior;
 };
 
+class BCLamp {
+public:
+	float light_color[3];
+	float falloff_angle;
+	float falloff_exponent;
+	float blender_dist;
+};
+
+class BCCamera {
+public:
+	float xfov;
+	float xmag;
+	float zfar;
+	float znear;
+};
+
 typedef float(Matrix)[4][4];
 
 class BCMatrix {
@@ -109,21 +125,14 @@ private:
 	mutable float q[4];
 	mutable bool decomposed = false;
 
-	/* For Material channels */
-	BCMaterialMap material_map;
-	BCBoneMatrixMap bone_matrix_map;
-
-    /* For Lamp channels */
-	float light_color[3];
-	float falloff_angle;
-	float falloff_exponent;
-	float blender_dist;
-
-	/* For Camera channels */
-	float xfov;
-	float xmag;
-	float zfar;
-	float znear;
+	/* XXX: The following parts are exclusive, each BCSample has 
+	   at most one of those filled with data. 
+	   Maybe we can make a union here?
+	*/
+	BCMaterialMap material_map; /* For Material animation */
+	BCBoneMatrixMap bone_matrix_map; /* For Armature animation */
+	BCLamp lamp; /* For Lamp channels */
+	BCCamera camera; /* For Camera channels */
 
 	/* Private methods */
 	void decompose() const;



More information about the Bf-blender-cvs mailing list