Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Dinges <blender@dingto.org>2012-08-04 15:42:38 +0400
committerThomas Dinges <blender@dingto.org>2012-08-04 15:42:38 +0400
commit2390c95cf1435c19adcb22263b27750ea3ca81e7 (patch)
tree1c00b20687518aa3c77a519b9b7c43bdd6572f13 /intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp
parentf50bae32593c135a82277d5f4b4f72eb83a27576 (diff)
Code cleanup:
* Remove BSP_GhostTest, not used and working for ages, approved by Sergey.
Diffstat (limited to 'intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp')
-rw-r--r--intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp649
1 files changed, 0 insertions, 649 deletions
diff --git a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp b/intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp
deleted file mode 100644
index 46cde625cf2..00000000000
--- a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest3D.cpp
+++ /dev/null
@@ -1,649 +0,0 @@
-/**
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/**
-
-* Copyright (C) 2001 NaN Technologies B.V.
-*/
-#if defined(WIN32) || defined(__APPLE__)
-# ifdef WIN32
-# include <windows.h>
-# include <GL/gl.h>
-# include <GL/glu.h>
-# else // WIN32
-# include <AGL/gl.h>
-# endif // WIN32
-#else // defined(WIN32) || defined(__APPLE__)
-# include <GL/gl.h>
-# include <GL/glu.h>
-#endif // defined(WIN32) || defined(__APPLE__)
-
-
-#include "BSP_GhostTest3D.h"
-#include "BSP_MeshDrawer.h"
-
-#include "GHOST_ISystem.h"
-#include "GHOST_IWindow.h"
-
-#include "MT_Quaternion.h"
-#include "MT_Transform.h"
-#include "CSG_BooleanOps.h"
-
-#include <iostream>
-
- int
-EmptyInterpFunc(
- void *d1,
- void * d2,
- void *dnew,
- float epsilon
-){
- return 0;
-}
-
-
-
-using namespace std;
-
-
-BSP_GhostTestApp3D::
-BSP_GhostTestApp3D(
-) :
- m_window(NULL),
- m_system(NULL),
- m_finish_me_off(false),
- m_current_object(0)
-{
- //nothing to do;
-}
-
- void
-BSP_GhostTestApp3D::
-SetMesh(
- MEM_SmartPtr<BSP_TMesh> mesh
-){
- m_meshes.push_back(mesh);
-
- BSP_RotationSetting rotation_setting;
- BSP_TranslationSetting translation_setting;
-
- rotation_setting.m_angle_x = MT_Scalar(0);
- rotation_setting.m_angle_y = MT_Scalar(0);
- rotation_setting.m_moving = false;
- rotation_setting.x_old = 0;
- rotation_setting.y_old = 0;
-
- translation_setting.m_t_x = MT_Scalar(0);
- translation_setting.m_t_y = MT_Scalar(0);
- translation_setting.m_t_z = MT_Scalar(0);
- translation_setting.m_moving = false;
- translation_setting.x_old = 0;
- translation_setting.y_old = 0;
-
- m_rotation_settings.push_back(rotation_setting);
- m_translation_settings.push_back(translation_setting);
- m_render_modes.push_back(e_wireframe_shaded);
- m_scale_settings.push_back(MT_Scalar(1));
-
-}
-
- void
-BSP_GhostTestApp3D::
-Swap(
- int i
-){
-
- if (!m_rotation_settings[i].m_moving && !m_translation_settings[i].m_moving) {
- swap(m_meshes[i],m_meshes.back());
- swap(m_rotation_settings[i],m_rotation_settings.back());
- swap(m_translation_settings[i],m_translation_settings.back());
- swap(m_scale_settings[i],m_scale_settings.back());
- swap(m_render_modes[i],m_render_modes.back());
- }
-}
-
-
- MT_Transform
-BSP_GhostTestApp3D::
-GetTransform(
- int i
-){
-
- MT_Quaternion q_ax(MT_Vector3(0,1,0),m_rotation_settings[i].m_angle_x);
- MT_Quaternion q_ay(MT_Vector3(1,0,0),m_rotation_settings[i].m_angle_y);
-
- MT_Point3 tr(
- m_translation_settings[i].m_t_x,
- m_translation_settings[i].m_t_y,
- m_translation_settings[i].m_t_z
- );
-
-
- MT_Matrix3x3 rotx(q_ax);
- MT_Matrix3x3 roty(q_ay);
-
- MT_Matrix3x3 rot = rotx * roty;
-
- MT_Transform trans(tr,rot);
-
- MT_Transform scalet;
- scalet.setIdentity();
- scalet.scale(m_scale_settings[i],m_scale_settings[i],m_scale_settings[i]);
-
- return trans * scalet;
-}
-
- void
-BSP_GhostTestApp3D::
-Operate(
- int type
-){
-
- CSG_VertexIteratorDescriptor * vA = VertexIt_Construct(m_meshes[0],GetTransform(0));
- CSG_FaceIteratorDescriptor * fA = FaceIt_Construct(m_meshes[0]);
-
- CSG_VertexIteratorDescriptor * vB = VertexIt_Construct(m_meshes[1],GetTransform(1));
- CSG_FaceIteratorDescriptor * fB = FaceIt_Construct(m_meshes[1]);
-
- // describe properties.
-
- CSG_MeshPropertyDescriptor props;
- props.user_face_vertex_data_size = 0;
- props.user_data_size = 0;
-
- CSG_BooleanOperation * op = CSG_NewBooleanFunction();
- props = CSG_DescibeOperands(op,props,props);
-
- CSG_PerformBooleanOperation(
- op,CSG_OperationType(type),
- *fA,*vA,*fB,*vB,EmptyInterpFunc
- );
-
- CSG_FaceIteratorDescriptor out_f;
- CSG_OutputFaceDescriptor(op,&out_f);
-
- CSG_VertexIteratorDescriptor out_v;
- CSG_OutputVertexDescriptor(op,&out_v);
-
- MEM_SmartPtr<BSP_TMesh> new_mesh (BuildMesh(props,out_f,out_v));
-
- // free stuff
-
- CSG_FreeVertexDescriptor(&out_v);
- CSG_FreeFaceDescriptor(&out_f);
- CSG_FreeBooleanOperation(op);
-
- op = NULL;
- SetMesh(new_mesh);
-}
-
-
- void
-BSP_GhostTestApp3D::
-UpdateFrame(
-) {
- if (m_window) {
-
- GHOST_Rect v_rect;
- m_window->getClientBounds(v_rect);
-
- glViewport(0,0,v_rect.getWidth(),v_rect.getHeight());
-
- }
-}
-
-
-MT_Vector3
-BSP_GhostTestApp3D::
-UnProject(
- const MT_Vector3 & vec
-) {
-
- GLint viewport[4];
- GLdouble mvmatrix[16],projmatrix[16];
-
- glGetIntegerv(GL_VIEWPORT,viewport);
- glGetDoublev(GL_MODELVIEW_MATRIX,mvmatrix);
- glGetDoublev(GL_PROJECTION_MATRIX,projmatrix);
-
- GLdouble realy = viewport[3] - vec.y() - 1;
- GLdouble outx,outy,outz;
-
- gluUnProject(vec.x(),realy,vec.z(),mvmatrix,projmatrix,viewport,&outx,&outy,&outz);
-
- return MT_Vector3(outx,outy,outz);
-}
-
-
- bool
-BSP_GhostTestApp3D::
-InitApp(
-){
-
- // create a system and window with opengl
- // rendering context.
-
- GHOST_TSuccess success = GHOST_ISystem::createSystem();
- if (success == GHOST_kFailure) return false;
-
- m_system = GHOST_ISystem::getSystem();
- if (m_system == NULL) return false;
-
- m_system->addEventConsumer(this);
-
- m_window = m_system->createWindow(
- "GHOST crud3D!",
- 100,100,512,512,GHOST_kWindowStateNormal,
- GHOST_kDrawingContextTypeOpenGL,false
- );
-
- if (
- m_window == NULL
- ) {
- m_system = NULL;
- GHOST_ISystem::disposeSystem();
- return false;
- }
-
- // make an opengl frustum for this wind
-
- MT_Vector3 min,max;
-
- min = m_meshes[0]->m_min;
- max = m_meshes[0]->m_max;
- InitOpenGl(min,max);
-
- return true;
-}
-
- void
-BSP_GhostTestApp3D::
-Run(
-){
- if (m_system == NULL) {
- return;
- }
-
- while (!m_finish_me_off) {
- m_system->processEvents(true);
- m_system->dispatchEvents();
- };
-}
-
- bool
-BSP_GhostTestApp3D::
-processEvent(
- GHOST_IEvent* event
-){
-
- bool handled = false;
-
- switch(event->getType()) {
- case GHOST_kEventWindowSize:
- case GHOST_kEventWindowActivate:
- UpdateFrame();
- case GHOST_kEventWindowUpdate:
- DrawPolies();
- handled = true;
- break;
- case GHOST_kEventButtonDown:
- {
- int x,y;
- m_system->getCursorPosition(x,y);
-
-
- int wx,wy;
- m_window->screenToClient(x,y,wx,wy);
-
- GHOST_TButtonMask button =
- static_cast<GHOST_TEventButtonData *>(event->getData())->button;
-
- if (button == GHOST_kButtonMaskLeft) {
- m_rotation_settings[m_current_object].m_moving = true;
- m_rotation_settings[m_current_object].x_old = x;
- m_rotation_settings[m_current_object].y_old = y;
- } else
- if (button == GHOST_kButtonMaskRight) {
- m_translation_settings[m_current_object].m_moving = true;
- m_translation_settings[m_current_object].x_old = x;
- m_translation_settings[m_current_object].y_old = y;
- } else
-
- m_window->invalidate();
- handled = true;
- break;
-
- }
-
- case GHOST_kEventButtonUp:
- {
-
- GHOST_TButtonMask button =
- static_cast<GHOST_TEventButtonData *>(event->getData())->button;
-
- if (button == GHOST_kButtonMaskLeft) {
- m_rotation_settings[m_current_object].m_moving = false;
- m_rotation_settings[m_current_object].x_old = 0;
- m_rotation_settings[m_current_object].y_old = 0;
-
- } else
- if (button == GHOST_kButtonMaskRight) {
- m_translation_settings[m_current_object].m_moving = false;
- m_translation_settings[m_current_object].x_old;
- m_translation_settings[m_current_object].y_old;
-
- }
- m_window->invalidate();
- handled = true;
- break;
-
- }
-
- case GHOST_kEventCursorMove:
- {
- int x,y;
- m_system->getCursorPosition(x,y);
- int wx,wy;
- m_window->screenToClient(x,y,wx,wy);
-
- if (m_rotation_settings[m_current_object].m_moving) {
- m_rotation_settings[m_current_object].m_angle_x = MT_Scalar(wx)/20;
- m_rotation_settings[m_current_object].x_old = wx;
- m_rotation_settings[m_current_object].m_angle_y = MT_Scalar(wy)/20;
- m_rotation_settings[m_current_object].y_old = wy;
-
- m_window->invalidate();
- }
- if (m_translation_settings[m_current_object].m_moving) {
-
- // project current objects bounding box center into screen space.
- // unproject mouse point into object space using z-value from
- // projected bounding box center.
-
- GHOST_Rect bounds;
- m_window->getClientBounds(bounds);
-
- int w_h = bounds.getHeight();
-
- y = w_h - wy;
- x = wx;
-
- double mvmatrix[16];
- double projmatrix[16];
- GLint viewport[4];
-
- double px, py, pz,sz;
-
- /* Get the matrices needed for gluUnProject */
- glGetIntegerv(GL_VIEWPORT, viewport);
- glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix);
- glGetDoublev(GL_PROJECTION_MATRIX, projmatrix);
-
- // work out the position of the end effector in screen space
-
- GLdouble ex,ey,ez;
-
- ex = m_translation_settings[m_current_object].m_t_x;
- ey = m_translation_settings[m_current_object].m_t_y;
- ez = m_translation_settings[m_current_object].m_t_z;
-
- gluProject(ex, ey, ez, mvmatrix, projmatrix, viewport, &px, &py, &sz);
- gluUnProject((GLdouble) x, (GLdouble) y, sz, mvmatrix, projmatrix, viewport, &px, &py, &pz);
-
- m_translation_settings[m_current_object].m_t_x = px;
- m_translation_settings[m_current_object].m_t_y = py;
- m_translation_settings[m_current_object].m_t_z = pz;
- m_window->invalidate();
-
- }
-
- handled = true;
- break;
- }
-
- case GHOST_kEventKeyDown :
- {
- GHOST_TEventKeyData *kd =
- static_cast<GHOST_TEventKeyData *>(event->getData());
-
-
- switch(kd->key) {
- case GHOST_kKeyI:
- {
- // now intersect meshes.
- Operate(e_csg_intersection);
- handled = true;
- m_window->invalidate();
- break;
- }
- case GHOST_kKeyU:
- {
- Operate(e_csg_union);
- handled = true;
- m_window->invalidate();
- break;
- }
- case GHOST_kKeyD:
- {
- Operate(e_csg_difference);
- handled = true;
- m_window->invalidate();
- break;
- }
-
- case GHOST_kKeyA:
- {
-
- m_scale_settings[m_current_object] *= 1.1;
- handled = true;
- m_window->invalidate();
- break;
- }
- case GHOST_kKeyZ:
- {
- m_scale_settings[m_current_object] *= 0.8;
-
- handled = true;
- m_window->invalidate();
- break;
- }
-
- case GHOST_kKeyR:
- m_render_modes[m_current_object]++;
- if (m_render_modes[m_current_object] > e_last_render_mode) {
- m_render_modes[m_current_object] = e_first_render_mode;
- }
- handled = true;
- m_window->invalidate();
- break;
-
- case GHOST_kKeyB:
- handled = true;
- m_window->invalidate();
- break;
-
- case GHOST_kKeyQ:
- m_finish_me_off = true;
- handled = true;
- break;
-
- case GHOST_kKeyS:
- Swap(m_current_object);
- m_window->invalidate();
- handled = true;
- break;
-
- case GHOST_kKeySpace:
-
- // increment the current object only if the object is not being
- // manipulated.
- if (! (m_rotation_settings[m_current_object].m_moving || m_translation_settings[m_current_object].m_moving)) {
- m_current_object ++;
- if (m_current_object >= m_meshes.size()) {
- m_current_object = 0;
-
- }
- }
- m_window->invalidate();
- handled = true;
- break;
- default :
- break;
- }
- }
-
- default :
- break;
- }
- return handled;
-};
-
-BSP_GhostTestApp3D::
-~BSP_GhostTestApp3D(
-){
-
- if (m_window) {
- m_system->disposeWindow(m_window);
- m_window = NULL;
- GHOST_ISystem::disposeSystem();
- m_system = NULL;
- }
-};
-
-
-
- void
-BSP_GhostTestApp3D::
-DrawPolies(
-){
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- for (int i = 0; i < m_meshes.size(); ++i) {
- MT_Transform trans = GetTransform(i);
-
- float opengl_mat[16];
- trans.getValue(opengl_mat);
-
- glPushMatrix();
- glMultMatrixf(opengl_mat);
- MT_Vector3 color(1.0,1.0,1.0);
- if (i == m_current_object) {
- color = MT_Vector3(1.0,0,0);
- }
- BSP_MeshDrawer::DrawMesh(m_meshes[i].Ref(),m_render_modes[i]);
-
- glPopMatrix();
- }
-
- m_window->swapBuffers();
-
-}
-
- void
-BSP_GhostTestApp3D::
-InitOpenGl(
- const MT_Vector3 &min,
- const MT_Vector3 &max
-){
-
- GLfloat light_diffuse0[] = {1.0, 0.0, 0.0, 0.5}; /* Red diffuse light. */
- GLfloat light_position0[] = {1.0, 1.0, 1.0, 0.0}; /* Infinite light location. */
-
- GLfloat light_diffuse1[] = {1.0, 1.0, 1.0, 0.5}; /* Red diffuse light. */
- GLfloat light_position1[] = {1.0, 0, 0, 0.0}; /* Infinite light location. */
-
- /* Enable a single OpenGL light. */
-
- glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse0);
- glLightfv(GL_LIGHT0, GL_POSITION, light_position0);
-
- glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse1);
- glLightfv(GL_LIGHT1, GL_POSITION, light_position1);
-
-
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHT1);
- glEnable(GL_LIGHTING);
-
- // make sure there is no back face culling.
- // glDisable(GL_CULL_FACE);
-
- // use two sided lighting model
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);
-
- /* Use depth buffering for hidden surface elimination. */
-
- glEnable(GL_DEPTH_TEST);
-
- /* Setup the view of the cube. */
-
- glMatrixMode(GL_PROJECTION);
-
- // center of the box + 3* depth of box
-
- MT_Vector3 center = (min + max) * 0.5;
- MT_Vector3 diag = max - min;
-
- float depth = diag.length();
- float distance = 5;
-
- gluPerspective(
- /* field of view in degree */ 40.0,
- /* aspect ratio */ 1.0,
- /* Z near */ 1.0,
- /* Z far */ distance * depth * 2
- );
- glMatrixMode(GL_MODELVIEW);
-
- gluLookAt(
- center.x(), center.y(), center.z() + distance*depth, //eye
- center.x(), center.y(), center.z(), //center
- 0.0, 1.0, 0.
- ); /* up is in positive Y direction */
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-