source: trunk/packages/vizservers/nanovis/NvFlowVisRenderer.cpp @ 3474

Last change on this file since 3474 was 3177, checked in by mmc, 12 years ago

Updated all of the copyright notices to reference the transfer to
the new HUBzero Foundation, LLC.

  • 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.