source: nanovis/branches/1.1/FlowParticles.cpp @ 4599

Last change on this file since 4599 was 3567, checked in by ldelgass, 11 years ago

Refactor and cleanups in nanovis, mainly to switch to using STL hash tables
(TR1 required) instead of Tcl hash tables, split out Flow particles and boxes
to separate implementation files. The goal is to achieve better separation of
Tcl command parsing and the core graphics rendering objects and code.

  • Property svn:eol-style set to native
File size: 1.8 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * Copyright (c) 2004-2013  HUBzero Foundation, LLC
4 *
5 * Authors:
6 *   Wei Qiao <qiaow@purdue.edu>
7 *   Insoo Woo <iwoo@purdue.edu>
8 *   George A. Howlett <gah@purdue.edu>
9 *   Leif Delgass <ldelgass@purdue.edu>
10 */
11
12#include <assert.h>
13
14#include <vrmath/Vector4f.h>
15
16#include "nanovis.h"        // For NMESH
17#include "FlowParticles.h"
18#include "FlowCmd.h"
19#include "Trace.h"
20
21using namespace vrmath;
22
23FlowParticles::FlowParticles(const char *name) :
24    _name(name),
25    _renderer(new NvParticleRenderer(NMESH, NMESH))
26{
27    _sv.position.value = 0.0f;
28    _sv.position.flags = RELPOS;
29    _sv.position.axis = 0; // X_AXIS
30    _sv.color.r = _sv.color.g = _sv.color.b = _sv.color.a = 1.0f;
31    _sv.isHidden = false;
32    _sv.particleSize = 1.2;
33}
34
35FlowParticles::~FlowParticles()
36{
37    TRACE("Deleting renderer");
38    if (_renderer != NULL) {
39        delete _renderer;
40    }
41    TRACE("Freeing switches");
42    Rappture::FreeSwitches(_switches, &_sv, 0);
43}
44
45void
46FlowParticles::render()
47{
48    TRACE("Particles '%s' axis: %d pos: %g rel pos: %g",
49          _name.c_str(), _sv.position.axis, _sv.position.value,
50          FlowCmd::getRelativePosition(&_sv.position));
51
52    _renderer->setPos(FlowCmd::getRelativePosition(&_sv.position));
53    _renderer->setAxis(_sv.position.axis);
54    assert(_renderer->active());
55    _renderer->render();
56}
57
58void
59FlowParticles::configure()
60{
61    _renderer->setPos(FlowCmd::getRelativePosition(&_sv.position));
62    _renderer->setColor(Vector4f(_sv.color.r,
63                                 _sv.color.g,
64                                 _sv.color.b,
65                                 _sv.color.a));
66    _renderer->particleSize(_sv.particleSize);
67    _renderer->setAxis(_sv.position.axis);
68    _renderer->active(!_sv.isHidden);
69}
Note: See TracBrowser for help on using the repository browser.