NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
iinstance.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2014 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IINSTANCE_H
9 #define MI_NEURAYLIB_IINSTANCE_H
10 
12 #include <mi/neuraylib/typedefs.h>
13 #include <mi/neuraylib/version.h>
14 
15 namespace mi {
16 
29  TRANSFORMATION_TYPE_FORCE_32_BIT = 0xffffffffU
30 };
31 
32 mi_static_assert( sizeof( Transformation_type) == sizeof( Uint32));
33 
98 class IInstance :
99  public base::Interface_declare<0x11b46e5a,0x577b,0x4767,0x8b,0x35,0x88,0xd5,0xa3,0x3e,0xd0,0xe9,
100  IScene_element>
101 {
102 public:
114  virtual Sint32 attach( const char* scene_element) = 0;
115 
121  virtual void detach() = 0;
122 
126  virtual const char* get_item() const = 0;
127 
129 
130 
132  virtual bool srt_mode() const = 0;
133 
135 
137 
140  virtual void set_matrix( const Float64_4_4_struct& matrix) = 0;
141 
146  virtual const Float64_4_4_struct& get_matrix() const = 0;
147 
149 
151 
159  virtual void resize_time_slots( Size count) = 0;
160 
162  virtual Size time_slots_size() const = 0;
163 
178  virtual Sint32 set_time_value( Size time_index, Float64 value) = 0;
179 
188  virtual Sint32 get_time_value( Size time_index, Float64& value) const = 0;
189 
196  virtual void resize_transformation_sequences( Size count) = 0;
197 
199  virtual Size transformation_sequences_size() const = 0;
200 
214  virtual Sint32 set_transformation_type( Size sequence_index, Transformation_type type) = 0;
215 
225  Size sequence_index, Transformation_type& type) const = 0;
226 
242  Size time_index, Size sequence_index, const Float64* data) = 0;
243 
259  Size time_index, Size sequence_index, Float64* data) const = 0;
260 
262 
264 
279  virtual Float64_4_4_struct evaluate( Float64 time = 0.0) const = 0;
280 
282 
283  virtual const base::IInterface* MI_NEURAYLIB_DEPRECATED_METHOD_5_0(access_item)() const = 0;
284 
285 #ifdef MI_NEURAYLIB_DEPRECATED_5_0
286  template<class T>
287  const T* access_item() const
288  {
289  const base::IInterface* ptr_iinterface = access_item();
290  if( !ptr_iinterface)
291  return 0;
292  const T* ptr_T = static_cast<const T*>( ptr_iinterface->get_interface( typename T::IID()));
293  ptr_iinterface->release();
294  return ptr_T;
295  }
296 #endif
297 
298  virtual base::IInterface* MI_NEURAYLIB_DEPRECATED_METHOD_5_0(edit_item)() const = 0;
299 
300 #ifdef MI_NEURAYLIB_DEPRECATED_5_0
301  template<class T>
302  T* edit_item() const
303  {
304  base::IInterface* ptr_iinterface = edit_item();
305  if( !ptr_iinterface)
306  return 0;
307  T* ptr_T = static_cast<T*>( ptr_iinterface->get_interface( typename T::IID()));
308  ptr_iinterface->release();
309  return ptr_T;
310  }
311 #endif
312 };
313  // end group mi_neuray_scene_graph_structure
315 
316 } // namespace mi
317 
318 #endif // MI_NEURAYLIB_IINSTANCE_H