Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Views/Qt4/Qt3D/GLMoleculeObject.cpp

    r5aaa43 r7b93f9  
    6262QGLMaterial *GLMoleculeObject::m_selectionBoxMaterial = NULL;
    6363
     64QGLSceneNode *GLMoleculeObject::meshEmpty[GLMoleculeObject::DETAILTYPES_MAX];
     65QGLSceneNode *GLMoleculeObject::meshSphere[GLMoleculeObject::DETAILTYPES_MAX];
     66QGLSceneNode *GLMoleculeObject::meshCylinder[GLMoleculeObject::DETAILTYPES_MAX];
    6467
    6568double GLMoleculeObject::detailMinDistance[GLMoleculeObject::DETAILTYPES_MAX] = {0, 15, 30, 42};
     
    6972{
    7073   //mesh->setParent(this);
    71    for (int i=0;i<DETAILTYPES_MAX;i++)
    72      m_mesh[i] = mesh[i];
     74  for (int i=0;i<DETAILTYPES_MAX;i++)
     75    m_mesh[i] = mesh[i];
     76  MeshFreeType = free_none;
     77   m_scaleX = 1.0f;
     78   m_scaleY = 1.0f;
     79   m_scaleZ = 1.0f;
     80   m_rotationAngle = 0.0f;
     81   m_effect = 0;
     82   m_objectId = -1;
     83   m_hovering = false;
     84   m_selected = false;
     85   m_visible = true;
     86   m_material = 0;
     87   initStaticMaterials();
     88}
     89
     90GLMoleculeObject::GLMoleculeObject(QGLSceneNode *mesh, QObject *parent)
     91   : QObject(parent)
     92{
     93   //mesh->setParent(this);
     94  for (int i=0;i<DETAILTYPES_MAX;i++)
     95    m_mesh[i] = mesh;
     96  MeshFreeType = free_none;
    7397   m_scaleX = 1.0f;
    7498   m_scaleY = 1.0f;
     
    83107}
    84108
    85 GLMoleculeObject::GLMoleculeObject(QGLSceneNode *mesh, QObject *parent)
     109GLMoleculeObject::GLMoleculeObject(QGLAbstractScene *scene, QObject *parent)
    86110   : QObject(parent)
    87111{
    88    //mesh->setParent(this);
    89    for (int i=0;i<DETAILTYPES_MAX;i++)
    90      m_mesh[i] = mesh;
     112  for (int i=0;i<DETAILTYPES_MAX;i++)
     113    m_mesh[i] = scene->mainNode();
     114  MeshFreeType = free_none;
    91115   m_scaleX = 1.0f;
    92116   m_scaleY = 1.0f;
     
    101125}
    102126
    103 GLMoleculeObject::GLMoleculeObject(QGLAbstractScene *scene, QObject *parent)
    104    : QObject(parent)
    105 {
    106    scene->setParent(this);
    107    for (int i=0;i<DETAILTYPES_MAX;i++)
    108      m_mesh[i] = scene->mainNode();
    109    m_scaleX = 1.0f;
    110    m_scaleY = 1.0f;
    111    m_scaleZ = 1.0f;
    112    m_rotationAngle = 0.0f;
    113    m_effect = 0;
    114    m_objectId = -1;
    115    m_hovering = false;
    116    m_selected = false;
    117    m_material = 0;
    118    initStaticMaterials();
    119 }
    120 
    121127GLMoleculeObject::~GLMoleculeObject()
    122128{
     
    163169   painter->modelViewMatrix().push();
    164170   painter->modelViewMatrix().translate(m_position);
     171   if ((m_scaleX != 1.0f) || (m_scaleY != 1.0f) || (m_scaleZ != 1.0f))
     172     painter->modelViewMatrix().scale(m_scaleX, m_scaleY, m_scaleZ);
    165173   if (m_rotationAngle != 0.0f)
    166174     painter->modelViewMatrix().rotate(m_rotationAngle, m_rotationVector);
    167    painter->modelViewMatrix().scale(m_scaleX, m_scaleY, m_scaleZ);
    168175
    169176   // Apply the material and effect to the painter.
     
    325332  }
    326333}
     334
     335void GLMoleculeObject::setVisible(bool value)
     336{
     337  if (value != m_visible){
     338    m_visible = value;
     339    emit changed();
     340  }
     341}
     342
     343void GLMoleculeObject::updateMesh(QGLSceneNode *mesh)
     344{
     345  if (m_mesh[0] != NULL) {
     346    switch(MeshFreeType) {
     347    case free_all:
     348      for (int i=0;i<DETAILTYPES_MAX;i++)
     349        delete m_mesh[i];
     350      break;
     351    case free_single:
     352      delete m_mesh[0];
     353      break;
     354    default:
     355    case free_none:
     356      break;
     357    }
     358  }
     359  MeshFreeType = free_single;
     360  for (int i=0;i<DETAILTYPES_MAX;i++)
     361    m_mesh[i] = mesh;
     362}
Note: See TracChangeset for help on using the changeset viewer.