25185f401929c15f7537ac3dce70a5b170fe620c
[blender.git] / intern / bsp / test / BSP_GhostTest / main.cpp
1 /**
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 #include "BSP_GhostTest3D.h"
29
30 #include "BSP_TMesh.h"
31 #include "MEM_SmartPtr.h"
32 #include "BSP_PlyLoader.h"
33
34 #include <iostream>
35
36 using namespace std;
37 #if 1
38         MEM_SmartPtr<BSP_TMesh> 
39 NewTestMesh(
40         int x,
41         int y,
42         MT_Scalar fx,
43         MT_Scalar fy,
44         MT_Scalar ampx,
45         MT_Scalar ampy,
46         MT_Scalar sx,
47         MT_Scalar sy
48 ) {
49
50         MEM_SmartPtr<BSP_TMesh> output = new BSP_TMesh;
51
52         std::vector<BSP_TVertex> &verts = output->VertexSet();
53
54         int i,j;
55
56         MT_Scalar x_scale = fx*MT_PI/x;
57         MT_Scalar y_scale = fy*MT_PI/y;
58
59         MT_Scalar fsx = sx/x;
60         MT_Scalar fsy = sy/y;
61
62         for (j = 0; j < y; j++) {
63                 for (i = 0; i < x; i++) {
64                         float z = ampx*sin(x_scale * i) + ampy*sin(y_scale * j);
65
66                         MT_Vector3 val(i*fsx - sx/2,j*fsy - sy/2,z);
67
68                         BSP_TVertex chuff;
69                         chuff.m_pos = val;
70                         verts.push_back(chuff);
71                 }
72         }
73
74         int poly[4];
75
76         for (j = 0; j < (y-1); j++) {
77                 for (i = 0; i < (x-1); i++) {
78
79                         poly[0] = j*x + i;
80                         poly[1] = poly[0] + 1;
81                         poly[2] = poly[1] + y;
82                         poly[3] = poly[2] -1;
83
84                         output->AddFace(poly,4);
85                 }
86         }
87
88         output->m_min = MT_Vector3(-sx/2,-sy/2,-ampx -ampy);
89         output->m_max = MT_Vector3(sx/2,sy/2,ampx + ampy);
90
91         return output;
92 }
93 #endif
94
95
96 int main()
97 {
98         MT_Vector3 min,max;
99         MT_Vector3 min2,max2;
100
101 #if 1
102         MEM_SmartPtr<BSP_TMesh> mesh1 = BSP_PlyLoader::NewMeshFromFile("bsp_cube.ply",min,max);
103         MEM_SmartPtr<BSP_TMesh> mesh2 = BSP_PlyLoader::NewMeshFromFile("bsp_cube.ply",min2,max2);
104
105         mesh1->m_min = min;
106         mesh1->m_max = max;
107         mesh2->m_min = min2;
108         mesh1->m_max = max2;
109
110 #else
111         MEM_SmartPtr<BSP_TMesh> mesh1 = NewTestMesh(10,10,2,2,4,4,20,20);
112         MEM_SmartPtr<BSP_TMesh> mesh2 = NewTestMesh(10,10,2,2,4,4,20,20);
113 #endif  
114
115         if (!mesh1) {
116                 cout << "could not load mesh!";
117                 return 0;
118         }
119
120
121
122 //      MEM_SmartPtr<BSP_TMesh> mesh2 = new BSP_TMesh(mesh1.Ref());
123
124         BSP_GhostTestApp3D app;
125
126         cout << "Mesh polygons :" << mesh1->FaceSet().size() << "\n";
127         cout << "Mesh vertices :" << mesh1->VertexSet().size() << "\n";
128
129         app.SetMesh(mesh1);
130         app.SetMesh(mesh2);
131
132
133         app.InitApp();
134         
135         app.Run();
136
137     return 0;
138
139 }
140
141
142
143