source: branches/nanovis2/packages/vizservers/nanovis/NvFlowVisRenderer.cpp @ 3351

Last change on this file since 3351 was 3305, checked in by ldelgass, 11 years ago

sync with trunk

  • Property svn:eol-style set to native
File size: 7.8 KB
Line 
1/* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 * ----------------------------------------------------------------------
4 * NvFlowVisRenderer.cpp: particle system class
5 *
6 * ======================================================================
7 *  AUTHOR:  Wei Qiao <qiaow@purdue.edu>
8 *           Purdue Rendering and Perceptualization Lab (PURPL)
9 *
10 *  Copyright (c) 2004-2012  HUBzero Foundation, LLC
11 *
12 *  See the file "license.terms" for information on usage and
13 *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
14 * ======================================================================
15 */
16
17#include "NvFlowVisRenderer.h"
18
19#define NV_32
20
21NvFlowVisRenderer::NvFlowVisRenderer(int w, int h) :
22    _activated(true)
23{
24    _psys_width = w;
25    _psys_height = h;
26}
27
28NvFlowVisRenderer::~NvFlowVisRenderer()
29{
30    std::map<std::string, NvVectorField *>::iterator iter;
31    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
32        delete (*iter).second;
33    }
34}
35
36void
37NvFlowVisRenderer::initialize()
38{
39    std::map<std::string, NvVectorField *>::iterator iter;
40    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
41        (*iter).second->initialize();
42    }
43}
44
45void
46NvFlowVisRenderer::reset()
47{
48    std::map<std::string, NvVectorField *>::iterator iter;
49    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
50        (*iter).second->reset();
51    }
52}
53
54void
55NvFlowVisRenderer::initialize(const std::string& vfName)
56{
57    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
58    if (iter != _vectorFieldMap.end()) {
59        if ((*iter).second) {
60            (*iter).second->initialize();
61        }
62    }
63}
64
65void
66NvFlowVisRenderer::advect()
67{
68    std::map<std::string, NvVectorField *>::iterator iter;
69    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
70        if ((*iter).second && (*iter).second->active())
71            (*iter).second->advect();
72    }
73}
74
75void
76NvFlowVisRenderer::render()
77{
78    std::map<std::string, NvVectorField *>::iterator iter;
79    for (iter = _vectorFieldMap.begin(); iter != _vectorFieldMap.end(); ++iter) {
80        if ((*iter).second && (*iter).second->active())
81            (*iter).second->render();
82    }
83}
84
85void
86NvFlowVisRenderer::addVectorField(const std::string& vfName, Volume* volPtr,
87                                  const Vector3& ori,
88                                  float scaleX, float scaleY, float scaleZ, float max)
89{
90    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
91    if (iter != _vectorFieldMap.end()) {
92        if ((*iter).second) {
93            ((*iter).second)->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
94        } else {
95            NvVectorField *vf = new NvVectorField();
96            _vectorFieldMap[vfName] = vf;
97            vf->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
98        }
99    } else {
100        NvVectorField *vf = new NvVectorField();
101        _vectorFieldMap[vfName] = vf;
102        vf->setVectorField(volPtr, ori, scaleX, scaleY, scaleZ, max);
103    }
104}
105
106void
107NvFlowVisRenderer::activateVectorField(const std::string& vfName)
108{
109    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
110    if (iter != _vectorFieldMap.end()) {
111        if ((*iter).second)
112            (*iter).second->active(true);
113    }
114}
115
116void
117NvFlowVisRenderer::deactivateVectorField(const std::string& vfName)
118{
119    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
120    if (iter != _vectorFieldMap.end()) {
121        if ((*iter).second)
122            (*iter).second->active(false);
123    }
124}
125
126void
127NvFlowVisRenderer::activatePlane(const std::string& vfName, const std::string& name)
128{
129    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
130    if (iter != _vectorFieldMap.end()) {
131        if ((*iter).second)
132            (*iter).second->activatePlane(name);
133    }
134}
135
136void
137NvFlowVisRenderer::deactivatePlane(const std::string& vfName, const std::string& name)
138{
139    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
140    if (iter != _vectorFieldMap.end()) {
141        if ((*iter).second)
142            (*iter).second->deactivatePlane(name);
143    }
144}
145
146void
147NvFlowVisRenderer::setPlaneAxis(const std::string& vfName, const std::string& planeName, int axis)
148{
149    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
150    if (iter != _vectorFieldMap.end()) {
151        if ((*iter).second)
152            (*iter).second->setPlaneAxis(planeName, axis);
153    }
154}
155
156void
157NvFlowVisRenderer::setPlanePos(const std::string& vfName, const std::string& name, float pos)
158{
159    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
160    if (iter != _vectorFieldMap.end()) {
161        if ((*iter).second)
162            (*iter).second->setPlanePos(name, pos);
163    }
164}
165
166void
167NvFlowVisRenderer::setParticleColor(const std::string& vfName, const std::string& name, const Vector4& color)
168{
169    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
170    if (iter != _vectorFieldMap.end()) {
171        if ((*iter).second)
172            (*iter).second->setParticleColor(name, color);
173    }
174}
175
176void
177NvFlowVisRenderer::removeVectorField(const std::string& vfName)
178{
179    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
180    if (iter != _vectorFieldMap.end()) {
181        delete (*iter).second;
182        _vectorFieldMap.erase(iter);
183    }
184}
185
186void
187NvFlowVisRenderer::addPlane(const std::string& vfName, const std::string& name)
188{
189    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
190    if (iter != _vectorFieldMap.end()) {
191        if ((*iter).second)
192            (*iter).second->addPlane(name);
193    }
194}
195
196void
197NvFlowVisRenderer::removePlane(const std::string& vfName, const std::string& name)
198{
199    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
200    if (iter != _vectorFieldMap.end()) {
201        if ((*iter).second)
202            (*iter).second->removePlane(name);
203    }
204}
205
206void
207NvFlowVisRenderer::activateDeviceShape(const std::string& vfName, const std::string& name)
208{
209    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
210    if (iter != _vectorFieldMap.end()) {
211        if ((*iter).second)
212            (*iter).second->activateDeviceShape(name);
213    }
214}
215
216void
217NvFlowVisRenderer::deactivateDeviceShape(const std::string& vfName, const std::string& name)
218{
219    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
220    if (iter != _vectorFieldMap.end()) {
221        if ((*iter).second)
222            (*iter).second->deactivateDeviceShape(name);
223    }
224}
225
226void
227NvFlowVisRenderer::activateDeviceShape(const std::string& vfName)
228{
229    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
230    if (iter != _vectorFieldMap.end()) {
231        if ((*iter).second)
232            (*iter).second->activateDeviceShape();
233    }
234}
235
236void
237NvFlowVisRenderer::deactivateDeviceShape(const std::string& vfName)
238{
239    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
240    if (iter != _vectorFieldMap.end()) {
241        if ((*iter).second)
242            (*iter).second->deactivateDeviceShape();
243    }
244}
245
246void
247NvFlowVisRenderer::addDeviceShape(const std::string& vfName, const std::string& name, const NvDeviceShape& shape)
248{
249    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
250    if (iter != _vectorFieldMap.end()) {
251        if ((*iter).second)
252            (*iter).second->addDeviceShape(name, shape);
253    }
254}
255
256void
257NvFlowVisRenderer::removeDeviceShape(const std::string& vfName, const std::string& name)
258{
259    std::map<std::string, NvVectorField *>::iterator iter = _vectorFieldMap.find(vfName);
260    if (iter != _vectorFieldMap.end()) {
261        if ((*iter).second)
262            (*iter).second->removeDeviceShape(name);
263    }
264}
Note: See TracBrowser for help on using the repository browser.