00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIPARTICLECLOUDPRIMITIVE_H__ 00018 #define __XSIPARTICLECLOUDPRIMITIVE_H__ 00019 00020 #include <xsi_primitive.h> 00021 #include <xsi_value.h> 00022 #include <xsi_status.h> 00023 #include <xsi_longarray.h> 00024 #include <xsi_particle.h> 00025 #include <xsi_doublearray.h> 00026 00027 namespace XSI { 00028 00029 //***************************************************************************** 00074 //***************************************************************************** 00075 00076 class SICPPSDKDECL ParticleCloudPrimitive : public Primitive 00077 { 00078 public: 00080 ParticleCloudPrimitive(); 00081 00083 ~ParticleCloudPrimitive(); 00084 00088 ParticleCloudPrimitive(const CRef& in_ref); 00089 00093 ParticleCloudPrimitive(const ParticleCloudPrimitive& in_obj); 00094 00099 bool IsA( siClassID in_ClassID) const; 00100 00104 siClassID GetClassID() const; 00105 00111 ParticleCloudPrimitive& operator=(const ParticleCloudPrimitive& in_obj); 00112 00118 ParticleCloudPrimitive& operator=(const CRef& in_ref); 00119 00132 CStatus AddParticles( LONG in_NbParticles, const CRef& in_ParType ) ; 00133 00134 /* Obsolete function to add particles to a cloud. 00135 \deprecated 4.0 Maintained for backward compatibility only. 00136 \param in_NbParticles Number of new particles to add. 00137 \param in_ParType Reference to an existing particle type object. 00138 */ 00139 CStatus AddParticles( LONG in_NbParticles, CRef& in_ParType ) ; 00140 00145 CStatus RemoveParticles(const CLongArray & in_IndexArray ) ; 00146 00152 CStatus RemoveParticlesWithIDs(const CLongArray & in_IDArray ) ; 00153 00154 00157 LONG GetCount() const ; 00158 00162 Particle GetParticle( LONG in_index ) const ; 00163 00171 CRefArray GetParticleTypes() const ; 00172 00181 Particle FindParticle( LONG in_ID ) const ; 00182 00189 CStatus PutPositionArray( const CDoubleArray& in_values ) ; 00190 00197 CStatus GetPositionArray( CDoubleArray& out_values ) ; 00198 00205 CStatus PutVelocityArray( const CDoubleArray& in_values ) ; 00206 00213 CStatus GetVelocityArray( CDoubleArray& out_values ) ; 00214 00221 CStatus PutRotationArray( const CDoubleArray& in_values ) ; 00222 00229 CStatus GetRotationArray( CDoubleArray& out_values ) ; 00230 00237 CStatus PutAngularVelocityArray( const CDoubleArray& in_values ) ; 00238 00245 CStatus GetAngularVelocityArray( CDoubleArray& out_values ) ; 00246 00253 CStatus PutUVWArray( const CDoubleArray& in_values ) ; 00254 00261 CStatus GetUVWArray( CDoubleArray& out_values ) ; 00262 00269 CStatus PutColorArray( const CDoubleArray& in_values ) ; 00270 00277 CStatus GetColorArray( CDoubleArray& out_values ) ; 00278 00284 CStatus PutSizeArray( const CDoubleArray& in_values ) ; 00285 00291 CStatus GetSizeArray( CDoubleArray& out_values ) ; 00292 00298 CStatus PutSpriteAngleArray( const CDoubleArray& in_values ) ; 00299 00305 CStatus GetSpriteAngleArray( CDoubleArray& out_values ) ; 00306 00312 CStatus PutMassArray( const CDoubleArray& in_values ) ; 00313 00319 CStatus GetMassArray( CDoubleArray& out_values ) ; 00320 00326 CStatus GetDensityArray( CDoubleArray& out_values ) ; 00327 00333 CStatus GetPressureArray( CDoubleArray& out_values ) ; 00334 00340 CStatus GetPathLengthArray( CDoubleArray& out_values ) ; 00341 00347 CStatus PutAgeArray( const CLongArray& in_values ) ; 00348 00354 CStatus GetAgeArray( CLongArray& out_values ) ; 00355 00361 CStatus PutSeedArray( const CLongArray& in_values ) ; 00362 00368 CStatus GetSeedArray( CLongArray& out_values ) ; 00369 00375 CStatus PutAgeLimitArray( const CLongArray& in_values ) ; 00376 00382 CStatus GetAgeLimitArray( CLongArray& out_values ) ; 00383 00389 CStatus PutSpriteIndexArray( const CLongArray& in_values ) ; 00390 00396 CStatus GetSpriteIndexArray( CLongArray& out_values ) ; 00397 00403 CStatus PutTypeIDArray( const CLongArray& in_values ) ; 00404 00410 CStatus GetTypeIDArray( CLongArray& out_values ) ; 00411 00417 CStatus GetIDArray( CLongArray& in_values ) ; 00418 00419 private: 00420 ParticleCloudPrimitive * operator&() const; 00421 ParticleCloudPrimitive * operator&(); 00422 }; 00423 00424 }; 00425 #endif // __XSIPARTICLECLOUDPRIMITIVE_H__