Developer Documentation
PluginFunctionsSplatCloud.cc
1 
2 /*===========================================================================*\
3 * *
4 * OpenFlipper *
5  * Copyright (c) 2001-2015, RWTH-Aachen University *
6  * Department of Computer Graphics and Multimedia *
7  * All rights reserved. *
8  * www.openflipper.org *
9  * *
10  *---------------------------------------------------------------------------*
11  * This file is part of OpenFlipper. *
12  *---------------------------------------------------------------------------*
13  * *
14  * Redistribution and use in source and binary forms, with or without *
15  * modification, are permitted provided that the following conditions *
16  * are met: *
17  * *
18  * 1. Redistributions of source code must retain the above copyright notice, *
19  * this list of conditions and the following disclaimer. *
20  * *
21  * 2. Redistributions in binary form must reproduce the above copyright *
22  * notice, this list of conditions and the following disclaimer in the *
23  * documentation and/or other materials provided with the distribution. *
24  * *
25  * 3. Neither the name of the copyright holder nor the names of its *
26  * contributors may be used to endorse or promote products derived from *
27  * this software without specific prior written permission. *
28  * *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
31  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
32  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
33  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
34  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
35  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
36  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
37  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
38  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
39  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
40 * *
41 \*===========================================================================*/
42 
43 
44 
45 //================================================================
46 //
47 // Plugin Functions for SplatClouds
48 //
49 //================================================================
50 
51 
52 //== INCLUDES ====================================================
53 
54 
56 
58 
59 
60 //== NAMESPACES ==================================================
61 
62 
63 namespace PluginFunctions {
64 
65 
66 //== IMPLEMENTATION ==============================================
67 
68 
69 //================================================================
70 // Get objects
71 //================================================================
72 
73 
74 bool getObject( int _identifier, SplatCloudObject *&_object )
75 {
76  if( _identifier == BaseObject::NOOBJECT )
77  {
78  _object = 0;
79  return false;
80  }
81 
82  // Get object by using the map accelerated plugin function
83  BaseObjectData* object = 0;
84  PluginFunctions::getObject(_identifier,object);
85 
86  _object = dynamic_cast<SplatCloudObject *>( object );
87  return (_object != 0);
88 }
89 
90 
91 //================================================================
92 // Getting data from objects and casting between them
93 //================================================================
94 
95 
97 {
98  if( !_object )
99  return 0;
100 
101  if( !_object->dataType( DATA_SPLATCLOUD ) )
102  return 0;
103 
104  SplatCloudObject *object = dynamic_cast<SplatCloudObject *>( _object );
105 
106  if ( object == 0 )
107  return 0;
108 
109  return object->shaderNode();
110 }
111 
112 
113 //----------------------------------------------------------------
114 
115 
117 {
118  if( !_object )
119  return 0;
120 
121  if( !_object->dataType( DATA_SPLATCLOUD ) )
122  return 0;
123 
124  SplatCloudObject *object = dynamic_cast<SplatCloudObject *>( _object );
125 
126  if ( object == 0 )
127  return 0;
128 
129  return object->splatCloudNode();
130 }
131 
132 
133 //----------------------------------------------------------------
134 
135 
137 {
138  if( !_object )
139  return 0;
140 
141  if( !_object->dataType( DATA_SPLATCLOUD ) )
142  return 0;
143 
144  SplatCloudObject *object = dynamic_cast<SplatCloudObject *>( _object );
145 
146  if ( object == 0 )
147  return 0;
148 
149  return object->splatCloud();
150 }
151 
152 
153 //----------------------------------------------------------------
154 
155 
157 {
158  if( !_object )
159  return 0;
160 
161  if( !_object->dataType( DATA_SPLATCLOUD ) )
162  return 0;
163 
164  return dynamic_cast<SplatCloudObject *>( _object );
165 }
166 
167 
168 //----------------------------------------------------------------
169 
170 
172 
173  if (_objectId == BaseObject::NOOBJECT)
174  return 0;
175 
176  // Get object by using the map accelerated plugin function
177  BaseObjectData* object = 0;
178  PluginFunctions::getObject(_objectId,object);
179 
180  if ( object == 0 )
181  return 0;
182 
183  SplatCloudObject* splatCloudObject = dynamic_cast< SplatCloudObject* >(object);
184 
185  return splatCloudObject;
186 }
187 
188 
189 //================================================================
190 
191 
192 } // namespace PluginFunctions
bool dataType(DataType _type) const
Definition: BaseObject.cc:221
ShaderNode * shaderNode()
Get Shader&#39;s scenegraph Node.
bool getObject(const int _identifier, BaseObject *&_object)
Get the object which has the given identifier.
SplatCloud * splatCloud()
Get SplatCloud.
static int NOOBJECT
Definition: BaseObject.hh:106
SplatCloud * splatCloud(BaseObjectData *_object)
Get a SplatCloud from an object.
SplatCloudObject * splatCloudObject(BaseObjectData *_object)
Cast an SplatCloudObject to a SplatCloudObject if possible.
SplatCloudNode * splatCloudNode(BaseObjectData *_object)
Get a SplatCloudNode from an object.
SplatCloudNode * splatCloudNode()
Get SplatCloud&#39;s scenegraph Node.
ShaderNode * splatShaderNode(BaseObjectData *_object)
Get a ShaderNode from an object.
#define DATA_SPLATCLOUD
Definition: SplatCloud.hh:59