Merge with 2.5 -r 21788:22040.
[blender.git] / source / blender / collada / collada_internal.h
1 #ifndef BLENDER_COLLADA_H
2 #define BLENDER_COLLADA_H
3
4 #include "COLLADAFWFileInfo.h"
5 #include "Math/COLLADABUMathMatrix4.h"
6
7 class UnitConverter
8 {
9 private:
10         COLLADAFW::FileInfo::Unit unit;
11         COLLADAFW::FileInfo::UpAxisType up_axis;
12
13 public:
14
15         UnitConverter() : unit(), up_axis(COLLADAFW::FileInfo::Z_UP) {}
16
17         void read_asset(const COLLADAFW::FileInfo* asset)
18         {
19         }
20
21         // TODO
22         // convert vector vec from COLLADA format to Blender
23         void convertVec3(float *vec)
24         {
25         }
26                 
27         // TODO need also for angle conversion, time conversion...
28
29         void mat4_from_dae(float out[][4], const COLLADABU::Math::Matrix4& in)
30         {
31                 // in DAE, matrices use columns vectors, (see comments in COLLADABUMathMatrix4.h)
32                 // so here, to make a blender matrix, we swap columns and rows
33                 for (int i = 0; i < 4; i++) {
34                         for (int j = 0; j < 4; j++) {
35                                 out[i][j] = in[j][i];
36                         }
37                 }
38         }
39
40         void mat4_to_dae(float out[][4], float in[][4])
41         {
42                 Mat4CpyMat4(out, in);
43                 Mat4Transp(out);
44         }
45
46         void mat4_to_dae(double out[][4], float in[][4])
47         {
48                 float outf[4][4];
49
50                 mat4_to_dae(outf, in);
51
52                 for (int i = 0; i < 4; i++)
53                         for (int j = 0; j < 4; j++)
54                                 out[i][j] = outf[i][j];
55         }
56 };
57
58 #endif