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 //***************************************************************************** 00076 //***************************************************************************** 00077 00078 class SICPPSDKDECL ParticleCloudPrimitive : public Primitive 00079 { 00080 public: 00082 ParticleCloudPrimitive(); 00083 00085 ~ParticleCloudPrimitive(); 00086 00090 ParticleCloudPrimitive(const CRef& in_ref); 00091 00095 ParticleCloudPrimitive(const ParticleCloudPrimitive& in_obj); 00096 00101 bool IsA( siClassID in_ClassID) const; 00102 00106 siClassID GetClassID() const; 00107 00113 ParticleCloudPrimitive& operator=(const ParticleCloudPrimitive& in_obj); 00114 00120 ParticleCloudPrimitive& operator=(const CRef& in_ref); 00121 00134 CStatus AddParticles( LONG in_NbParticles, const CRef& in_ParType ) ; 00135 00136 /* Obsolete function to add particles to a cloud. 00137 \deprecated 4.0 Maintained for backward compatibility only. 00138 \param in_NbParticles Number of new particles to add. 00139 \param in_ParType Reference to an existing particle type object. 00140 */ 00141 CStatus AddParticles( LONG in_NbParticles, CRef& in_ParType ) ; 00142 00147 CStatus RemoveParticles(const CLongArray & in_IndexArray ) ; 00148 00154 CStatus RemoveParticlesWithIDs(const CLongArray & in_IDArray ) ; 00155 00156 00159 LONG GetCount() const ; 00160 00164 Particle GetParticle( LONG in_index ) const ; 00165 00173 CRefArray GetParticleTypes() const ; 00174 00183 Particle FindParticle( LONG in_ID ) const ; 00184 00191 CStatus PutPositionArray( const CDoubleArray& in_values ) ; 00192 00199 CStatus GetPositionArray( CDoubleArray& out_values ) ; 00200 00207 CStatus PutVelocityArray( const CDoubleArray& in_values ) ; 00208 00215 CStatus GetVelocityArray( CDoubleArray& out_values ) ; 00216 00223 CStatus PutRotationArray( const CDoubleArray& in_values ) ; 00224 00231 CStatus GetRotationArray( CDoubleArray& out_values ) ; 00232 00239 CStatus PutAngularVelocityArray( const CDoubleArray& in_values ) ; 00240 00247 CStatus GetAngularVelocityArray( CDoubleArray& out_values ) ; 00248 00255 CStatus PutUVWArray( const CDoubleArray& in_values ) ; 00256 00263 CStatus GetUVWArray( CDoubleArray& out_values ) ; 00264 00271 CStatus PutColorArray( const CDoubleArray& in_values ) ; 00272 00279 CStatus GetColorArray( CDoubleArray& out_values ) ; 00280 00286 CStatus PutSizeArray( const CDoubleArray& in_values ) ; 00287 00293 CStatus GetSizeArray( CDoubleArray& out_values ) ; 00294 00300 CStatus PutSpriteAngleArray( const CDoubleArray& in_values ) ; 00301 00307 CStatus GetSpriteAngleArray( CDoubleArray& out_values ) ; 00308 00314 CStatus PutMassArray( const CDoubleArray& in_values ) ; 00315 00321 CStatus GetMassArray( CDoubleArray& out_values ) ; 00322 00328 CStatus GetDensityArray( CDoubleArray& out_values ) ; 00329 00335 CStatus GetPressureArray( CDoubleArray& out_values ) ; 00336 00342 CStatus GetPathLengthArray( CDoubleArray& out_values ) ; 00343 00349 CStatus PutAgeArray( const CLongArray& in_values ) ; 00350 00356 CStatus GetAgeArray( CLongArray& out_values ) ; 00357 00363 CStatus PutSeedArray( const CLongArray& in_values ) ; 00364 00370 CStatus GetSeedArray( CLongArray& out_values ) ; 00371 00377 CStatus PutAgeLimitArray( const CLongArray& in_values ) ; 00378 00384 CStatus GetAgeLimitArray( CLongArray& out_values ) ; 00385 00391 CStatus PutSpriteIndexArray( const CLongArray& in_values ) ; 00392 00398 CStatus GetSpriteIndexArray( CLongArray& out_values ) ; 00399 00405 CStatus PutTypeIDArray( const CLongArray& in_values ) ; 00406 00412 CStatus GetTypeIDArray( CLongArray& out_values ) ; 00413 00419 CStatus GetIDArray( CLongArray& in_values ) ; 00420 00421 private: 00422 ParticleCloudPrimitive * operator&() const; 00423 ParticleCloudPrimitive * operator&(); 00424 }; 00425 00426 }; 00427 #endif // __XSIPARTICLECLOUDPRIMITIVE_H__