IMXSParticleContainer.h

Go to the documentation of this file.
00001 
00005 /**********************************************************************
00006 *<
00007     CREATED BY: Oleg Bayborodin
00008 
00009     HISTORY: created 06-04-02
00010 
00011  *> Copyright (c) 2002, All Rights Reserved.
00012  **********************************************************************/
00013 
00014 #pragma once
00015 
00016 #include "IParticleContainer.h"
00017 #include "..\point3.h"
00018 #include "..\quat.h"
00019 
00020 // interface ID
00021 #define MXSPARTICLECONTAINER_INTERFACE Interface_ID(0x74f93c10, 0x1eb34600) 
00022 
00023 #define GetMXSParticleContainerInterface(obj) ((IMXSParticleContainer*)obj->GetInterface(MXSPARTICLECONTAINER_INTERFACE)) 
00024 
00025 class IMXSParticleContainer : public FPMixinInterface
00026 {
00027 public: 
00028 
00029 // function IDs
00030     enum {  kGetParticleContainer,
00031             kGetParticleSystem,
00032             kGetParticleSystemNode,
00033             kGetInitActions,
00034             kGetInitActionNodes,
00035             kGetTimeStart,
00036             kGetTimeEnd,
00037             kSetTimeEnd,
00038             kSetTimeEndPrecise,
00039             kGetActionNode,
00040             kGetIntegrator,
00041 
00042             kRandSign,
00043             kRand01,
00044             kRand11,
00045             kRand55,
00046             kRand0X,
00047             kRandSpherePoint,
00048             kRandDivergeVector,
00049 
00050             kGetUseTime,
00051             kSetUseTime,
00052             kGetUseAge,
00053             kSetUseAge,
00054             kGetUseLifespan,
00055             kSetUseLifespan,
00056             kGetUseEventTime,
00057             kSetUseEventTime,
00058             kGetUsePosition,
00059             kSetUsePosition,
00060             kGetUseSpeed,
00061             kSetUseSpeed,
00062             kGetUseAcceleration,
00063             kSetUseAcceleration,
00064             kGetUseOrientation,
00065             kSetUseOrientation,
00066             kGetUseSpin,
00067             kSetUseSpin,
00068             kGetUseScale,
00069             kSetUseScale,
00070             kGetUseTM,
00071             kSetUseTM,
00072             kGetUseSelected,
00073             kSetUseSelected,
00074             kGetUseShape,
00075             kSetUseShape,
00076             kGetUseMtlIndex,
00077             kSetUseMtlIndex,
00078             kGetUseMapping,
00079             kSetUseMapping,
00080             kGetUseInt,
00081             kSetUseInt,
00082             kGetUseFloat,
00083             kSetUseFloat,
00084             kGetUseVector,
00085             kSetUseVector,
00086             kGetUseMatrix,
00087             kSetUseMatrix,
00088 
00089             kNumParticles,
00090 
00091             kAddParticle,
00092             kAddParticles,
00093             kDeleteParticle,
00094             kDeleteParticles,
00095 
00096             kGetParticleBornIndex,
00097             kHasParticleBornIndex,
00098 
00099             kGetCurrentParticleIndex,
00100             kGetCurrentParticleBornIndex,
00101             kSetCurrentParticleIndex,
00102             kSetCurrentParticleBornIndex,
00103 
00104             kIsParticleNewByIndex,
00105             kIsParticleNewByBornIndex,
00106             kIsParticleNew,
00107 
00108             kGetParticleTimeByIndex,
00109             kGetParticleTimeByBornIndex,
00110             kSetParticleTimeByIndex,
00111             kSetParticleTimePreciseByIndex,
00112             kSetParticleTimeByBornIndex,
00113             kSetParticleTimePreciseByBornIndex,
00114             kGetParticleTime,
00115             kSetParticleTime,
00116 
00117             kGetParticleAgeByIndex,
00118             kGetParticleAgeByBornIndex,
00119             kSetParticleAgeByIndex,
00120             kSetParticleAgeByBornIndex,
00121             kGetParticleAge,
00122             kSetParticleAge,
00123 
00124             kGetParticleLifespanByIndex,
00125             kGetParticleLifespanByBornIndex,
00126             kSetParticleLifespanByIndex,
00127             kSetParticleLifespanByBornIndex,
00128             kGetParticleLifespan,
00129             kSetParticleLifespan,
00130 
00131             kGetParticleEventTimeByIndex,
00132             kGetParticleEventTimeByBornIndex,
00133             kSetParticleEventTimeByIndex,
00134             kSetParticleEventTimeByBornIndex,
00135             kGetParticleEventTime,
00136             kSetParticleEventTime,
00137 
00138             kGetParticlePositionByIndex,
00139             kGetParticlePositionByBornIndex,
00140             kSetParticlePositionByIndex,
00141             kSetParticlePositionByBornIndex,
00142             kGetParticlePosition,
00143             kSetParticlePosition,
00144 
00145             kGetParticleSpeedByIndex,
00146             kGetParticleSpeedByBornIndex,
00147             kSetParticleSpeedByIndex,
00148             kSetParticleSpeedByBornIndex,
00149             kGetParticleSpeed,
00150             kSetParticleSpeed,
00151 
00152             kGetParticleAccelerationByIndex,
00153             kGetParticleAccelerationByBornIndex,
00154             kSetParticleAccelerationByIndex,
00155             kSetParticleAccelerationByBornIndex,
00156             kGetParticleAcceleration,
00157             kSetParticleAcceleration,
00158 
00159             kGetParticleOrientationByIndex,
00160             kGetParticleOrientationByBornIndex,
00161             kSetParticleOrientationByIndex,
00162             kSetParticleOrientationByBornIndex,
00163             kGetParticleOrientation,
00164             kSetParticleOrientation,
00165 
00166             kGetParticleSpinByIndex,
00167             kGetParticleSpinByBornIndex,
00168             kSetParticleSpinByIndex,
00169             kSetParticleSpinByBornIndex,
00170             kGetParticleSpin,
00171             kSetParticleSpin,
00172 
00173             kGetParticleScaleByIndex,
00174             kGetParticleScaleByBornIndex,
00175             kSetParticleScaleByIndex,
00176             kSetParticleScaleByBornIndex,
00177             kGetParticleScale,
00178             kSetParticleScale,
00179             kGetParticleScaleXYZByIndex,
00180             kGetParticleScaleXYZByBornIndex,
00181             kSetParticleScaleXYZByIndex,
00182             kSetParticleScaleXYZByBornIndex,
00183             kGetParticleScaleXYZ,
00184             kSetParticleScaleXYZ,
00185 
00186             kGetParticleTMByIndex,
00187             kGetParticleTMByBornIndex,
00188             kSetParticleTMByIndex,
00189             kSetParticleTMByBornIndex,
00190             kGetParticleTM,
00191             kSetParticleTM,
00192 
00193             kGetParticleSelectedByIndex,
00194             kGetParticleSelectedByBornIndex,
00195             kSetParticleSelectedByIndex,
00196             kSetParticleSelectedByBornIndex,
00197             kGetParticleSelected,
00198             kSetParticleSelected,
00199 
00200             kGetParticleShapeByIndex,
00201             kGetParticleShapeByBornIndex,
00202             kSetParticleShapeByIndex,
00203             kSetParticleShapeByBornIndex,
00204             kGetParticleShape,
00205             kSetParticleShape,
00206             kSetGlobalParticleShape,
00207 
00208             kSetParticleMtlIndexByIndex,
00209             kSetParticleMtlIndexByBornIndex,
00210             kSetGlobalParticleMtlIndex,
00211 
00212             kSetParticleMappingByIndex,
00213             kSetParticleMappingByBornIndex,
00214             kSetGlobalParticleMapping,
00215 
00216             kGetParticleIntByIndex,
00217             kGetParticleIntByBornIndex,
00218             kSetParticleIntByIndex,
00219             kSetParticleIntByBornIndex,
00220             kGetParticleInt,
00221             kSetParticleInt,
00222             
00223             kGetParticleFloatByIndex,
00224             kGetParticleFloatByBornIndex,
00225             kSetParticleFloatByIndex,
00226             kSetParticleFloatByBornIndex,
00227             kGetParticleFloat,
00228             kSetParticleFloat,
00229 
00230             kGetParticleVectorByIndex,
00231             kGetParticleVectorByBornIndex,
00232             kSetParticleVectorByIndex,
00233             kSetParticleVectorByBornIndex,
00234             kGetParticleVector,
00235             kSetParticleVector,
00236 
00237             kGetParticleMatrixByIndex,
00238             kGetParticleMatrixByBornIndex,
00239             kSetParticleMatrixByIndex,
00240             kSetParticleMatrixByBornIndex,
00241             kGetParticleMatrix,
00242             kSetParticleMatrix,
00243 
00244             kSetParticleTestStatusByIndex,
00245             kSetParticleTestStatusByBornIndex,
00246             kGetParticleTestStatus,
00247             kSetParticleTestStatus,
00248             kSetGlobalTestStatus,
00249 
00250             kSetParticleTestTimeByIndex,
00251             kSetParticleTestTimePreciseByIndex,
00252             kSetParticleTestTimeByBornIndex,
00253             kSetParticleTestTimePreciseByBornIndex,
00254             kGetParticleTestTime,
00255             kSetParticleTestTime,
00256             kSetParticleTestTimePrecise,
00257             kSetGlobalTestTime,
00258             kSetGlobalTestTimePrecise,
00259     }; 
00260 
00261 // Function Map for Function Publish System 
00262 //***********************************
00263     BEGIN_FUNCTION_MAP
00264 
00265     FN_0(kGetParticleContainer, TYPE_IOBJECT,   GetParticleContainer);
00266     FN_0(kGetParticleSystem,    TYPE_OBJECT,    GetParticleSystem);
00267     FN_0(kGetParticleSystemNode,TYPE_INODE,     GetParticleSystemNode);
00268     FN_0(kGetInitActions,       TYPE_OBJECT_TAB_BR,GetInitActions);
00269     FN_0(kGetInitActionNodes,   TYPE_INODE_TAB_BR, GetInitActionNodes);
00270     FN_0(kGetTimeStart,         TYPE_TIMEVALUE, GetTimeStart);
00271     FN_0(kGetTimeEnd,           TYPE_TIMEVALUE, GetTimeEnd);
00272     VFN_1(kSetTimeEnd,                          SetTimeEnd, TYPE_TIMEVALUE);
00273     VFN_2(kSetTimeEndPrecise,                   SetTimeEnd, TYPE_TIMEVALUE, TYPE_FLOAT);
00274     FN_0(kGetActionNode,        TYPE_INODE,     GetActionNode);
00275     FN_0(kGetIntegrator,        TYPE_INTERFACE, GetIntegrator);
00276 
00277     FN_0(kRandSign,             TYPE_INT,       RandSign);
00278     FN_0(kRand01,               TYPE_FLOAT,     Rand01);
00279     FN_0(kRand11,               TYPE_FLOAT,     Rand11);
00280     FN_0(kRand55,               TYPE_FLOAT,     Rand55);
00281     FN_1(kRand0X,               TYPE_INT,       Rand0X, TYPE_INT);
00282     FN_0(kRandSpherePoint,      TYPE_POINT3,    RandSpherePoint);
00283     FN_2(kRandDivergeVector,    TYPE_POINT3,    RandDivergeVector, TYPE_POINT3, TYPE_ANGLE);
00284 
00285     PROP_FNS( kGetUseTime,          GetUseTime,         kSetUseTime,        SetUseTime,         TYPE_bool);
00286     PROP_FNS( kGetUseAge,           GetUseAge,          kSetUseAge,         SetUseAge,          TYPE_bool);
00287     PROP_FNS( kGetUseLifespan,      GetUseLifespan,     kSetUseLifespan,    SetUseLifespan,     TYPE_bool);
00288     PROP_FNS( kGetUseEventTime,     GetUseEventTime,    kSetUseEventTime,   SetUseEventTime,    TYPE_bool);
00289     PROP_FNS( kGetUsePosition,      GetUsePosition,     kSetUsePosition,    SetUsePosition,     TYPE_bool);
00290     PROP_FNS( kGetUseSpeed,         GetUseSpeed,        kSetUseSpeed,       SetUseSpeed,        TYPE_bool);
00291     PROP_FNS( kGetUseAcceleration,  GetUseAcceleration, kSetUseAcceleration,SetUseAcceleration, TYPE_bool);
00292     PROP_FNS( kGetUseOrientation,   GetUseOrientation,  kSetUseOrientation, SetUseOrientation,  TYPE_bool);
00293     PROP_FNS( kGetUseSpin,          GetUseSpin,         kSetUseSpin,        SetUseSpin,         TYPE_bool);
00294     PROP_FNS( kGetUseScale,         GetUseScale,        kSetUseScale,       SetUseScale,        TYPE_bool);
00295     PROP_FNS( kGetUseTM,            GetUseTM,           kSetUseTM,          SetUseTM,           TYPE_bool);
00296     PROP_FNS( kGetUseSelected,      GetUseSelected,     kSetUseSelected,    SetUseSelected,     TYPE_bool);
00297     PROP_FNS( kGetUseShape,         GetUseShape,        kSetUseShape,       SetUseShape,        TYPE_bool);
00298     PROP_FNS( kGetUseMtlIndex,      GetUseMtlIndex,     kSetUseMtlIndex,    SetUseMtlIndex,     TYPE_bool);
00299     PROP_FNS( kGetUseMapping,       GetUseMapping,      kSetUseMapping,     SetUseMapping,      TYPE_bool);
00300     PROP_FNS( kGetUseInt,           GetUseInt,          kSetUseInt,         SetUseInt,          TYPE_bool);
00301     PROP_FNS( kGetUseFloat,         GetUseFloat,        kSetUseFloat,       SetUseFloat,        TYPE_bool);
00302     PROP_FNS( kGetUseVector,        GetUseVector,       kSetUseVector,      SetUseVector,       TYPE_bool);
00303     PROP_FNS( kGetUseMatrix,        GetUseMatrix,       kSetUseMatrix,      SetUseMatrix,       TYPE_bool);
00304 
00305     FN_0(kNumParticles,         TYPE_INT,       NumParticles);
00306 
00307     FN_0(kAddParticle,          TYPE_bool,      AddParticle);
00308     FN_1(kAddParticles,         TYPE_bool,      AddParticles,       TYPE_INT);
00309     FN_1(kDeleteParticle,       TYPE_bool,      DeleteParticle,     TYPE_INDEX);
00310     FN_2(kDeleteParticles,      TYPE_bool,      DeleteParticles,    TYPE_INDEX, TYPE_INT);
00311 
00312     FN_1(kGetParticleBornIndex, TYPE_INDEX, GetParticleBornIndex,   TYPE_INDEX);
00313     FN_2(kHasParticleBornIndex, TYPE_bool,  HasParticleBornIndex,   TYPE_INDEX, TYPE_INDEX_BR);
00314 
00315     PROP_FNS(kGetCurrentParticleIndex,      GetCurrentParticleIndex,        kSetCurrentParticleIndex,       SetCurrentParticleIndex,    TYPE_INDEX);
00316     PROP_FNS(kGetCurrentParticleBornIndex,  GetCurrentParticleBornIndex,    kSetCurrentParticleBornIndex,   SetCurrentParticleBornIndex,TYPE_INDEX);
00317 
00318     FN_1(kIsParticleNewByIndex,     TYPE_bool,  IsParticleNewByIndex,       TYPE_INDEX);
00319     FN_1(kIsParticleNewByBornIndex, TYPE_bool,  IsParticleNewByBornIndex,   TYPE_INDEX);
00320     RO_PROP_FN(kIsParticleNew,      IsParticleNew, TYPE_bool);
00321 
00322     FN_1(kGetParticleTimeByIndex,       TYPE_TIMEVALUE, GetParticleTimeByIndex, TYPE_INDEX);
00323     FN_1(kGetParticleTimeByBornIndex,   TYPE_TIMEVALUE, GetParticleTimeByBornIndex,TYPE_INDEX);
00324     VFN_2(kSetParticleTimeByIndex,                      SetParticleTimeByIndex, TYPE_INDEX, TYPE_TIMEVALUE);
00325     VFN_3(kSetParticleTimePreciseByIndex,               SetParticleTimeByIndex, TYPE_INDEX, TYPE_TIMEVALUE, TYPE_FLOAT);
00326     VFN_2(kSetParticleTimeByBornIndex,                  SetParticleTimeByBornIndex,TYPE_INDEX, TYPE_TIMEVALUE);
00327     VFN_3(kSetParticleTimePreciseByBornIndex,           SetParticleTimeByBornIndex,TYPE_INDEX, TYPE_TIMEVALUE, TYPE_FLOAT);
00328     PROP_FNS(kGetParticleTime, GetParticleTime, kSetParticleTime, SetParticleTime,  TYPE_TIMEVALUE);
00329     
00330     FN_1(kGetParticleAgeByIndex,        TYPE_TIMEVALUE, GetParticleAgeByIndex,          TYPE_INDEX);
00331     FN_1(kGetParticleAgeByBornIndex,    TYPE_TIMEVALUE, GetParticleAgeByBornIndex,      TYPE_INDEX);
00332     VFN_2(kSetParticleAgeByIndex,                       SetParticleAgeByIndex,          TYPE_INDEX, TYPE_TIMEVALUE);
00333     VFN_2(kSetParticleAgeByBornIndex,                   SetParticleAgeByBornIndex,      TYPE_INDEX, TYPE_TIMEVALUE);
00334     PROP_FNS(kGetParticleAge, GetParticleAge, kSetParticleAge, SetParticleAge,          TYPE_TIMEVALUE);
00335 
00336     FN_1(kGetParticleLifespanByIndex,       TYPE_TIMEVALUE, GetParticleLifespanByIndex,         TYPE_INDEX);
00337     FN_1(kGetParticleLifespanByBornIndex,   TYPE_TIMEVALUE, GetParticleLifespanByBornIndex,     TYPE_INDEX);
00338     VFN_2(kSetParticleLifespanByIndex,                      SetParticleLifespanByIndex,         TYPE_INDEX, TYPE_TIMEVALUE);
00339     VFN_2(kSetParticleLifespanByBornIndex,                  SetParticleLifespanByBornIndex,     TYPE_INDEX, TYPE_TIMEVALUE);
00340     PROP_FNS(kGetParticleLifespan, GetParticleLifespan, kSetParticleLifespan, SetParticleLifespan,          TYPE_TIMEVALUE);
00341 
00342     FN_1(kGetParticleEventTimeByIndex,      TYPE_TIMEVALUE, GetParticleEventTimeByIndex,    TYPE_INDEX);
00343     FN_1(kGetParticleEventTimeByBornIndex,  TYPE_TIMEVALUE, GetParticleEventTimeByBornIndex,TYPE_INDEX);
00344     VFN_2(kSetParticleEventTimeByIndex,                     SetParticleEventTimeByIndex,    TYPE_INDEX, TYPE_TIMEVALUE);
00345     VFN_2(kSetParticleEventTimeByBornIndex,                 SetParticleEventTimeByBornIndex,TYPE_INDEX, TYPE_TIMEVALUE);
00346     PROP_FNS(kGetParticleEventTime, GetParticleEventTime, kSetParticleEventTime, SetParticleEventTime,  TYPE_TIMEVALUE);
00347 
00348     FN_1(kGetParticlePositionByIndex,       TYPE_POINT3,    GetParticlePositionByIndex,         TYPE_INDEX);
00349     FN_1(kGetParticlePositionByBornIndex,   TYPE_POINT3,    GetParticlePositionByBornIndex,     TYPE_INDEX);
00350     VFN_2(kSetParticlePositionByIndex,                      SetParticlePositionByIndex,         TYPE_INDEX, TYPE_POINT3);
00351     VFN_2(kSetParticlePositionByBornIndex,                  SetParticlePositionByBornIndex,     TYPE_INDEX, TYPE_POINT3);
00352     PROP_FNS(kGetParticlePosition, GetParticlePosition, kSetParticlePosition, SetParticlePosition,  TYPE_POINT3);
00353 
00354     FN_1(kGetParticleSpeedByIndex,      TYPE_POINT3,    GetParticleSpeedByIndex,        TYPE_INDEX);
00355     FN_1(kGetParticleSpeedByBornIndex,  TYPE_POINT3,    GetParticleSpeedByBornIndex,    TYPE_INDEX);
00356     VFN_2(kSetParticleSpeedByIndex,                     SetParticleSpeedByIndex,        TYPE_INDEX, TYPE_POINT3);
00357     VFN_2(kSetParticleSpeedByBornIndex,                 SetParticleSpeedByBornIndex,    TYPE_INDEX, TYPE_POINT3);
00358     PROP_FNS(kGetParticleSpeed, GetParticleSpeed, kSetParticleSpeed, SetParticleSpeed,  TYPE_POINT3);
00359 
00360     FN_1(kGetParticleAccelerationByIndex,       TYPE_POINT3,    GetParticleAccelerationByIndex,     TYPE_INDEX);
00361     FN_1(kGetParticleAccelerationByBornIndex,   TYPE_POINT3,    GetParticleAccelerationByBornIndex, TYPE_INDEX);
00362     VFN_2(kSetParticleAccelerationByIndex,                      SetParticleAccelerationByIndex,     TYPE_INDEX, TYPE_POINT3);
00363     VFN_2(kSetParticleAccelerationByBornIndex,                  SetParticleAccelerationByBornIndex, TYPE_INDEX, TYPE_POINT3);
00364     PROP_FNS(kGetParticleAcceleration, GetParticleAcceleration, kSetParticleAcceleration, SetParticleAcceleration,  TYPE_POINT3);
00365 
00366     FN_1(kGetParticleOrientationByIndex,        TYPE_POINT3,    GetParticleOrientationByIndex,      TYPE_INDEX);
00367     FN_1(kGetParticleOrientationByBornIndex,    TYPE_POINT3,    GetParticleOrientationByBornIndex,  TYPE_INDEX);
00368     VFN_2(kSetParticleOrientationByIndex,                       SetParticleOrientationByIndex,      TYPE_INDEX, TYPE_POINT3);
00369     VFN_2(kSetParticleOrientationByBornIndex,                   SetParticleOrientationByBornIndex,  TYPE_INDEX, TYPE_POINT3);
00370     PROP_FNS(kGetParticleOrientation, GetParticleOrientation, kSetParticleOrientation, SetParticleOrientation,  TYPE_POINT3);
00371 
00372     FN_1(kGetParticleSpinByIndex,       TYPE_ANGAXIS,   GetParticleSpinByIndex,     TYPE_INDEX);
00373     FN_1(kGetParticleSpinByBornIndex,   TYPE_ANGAXIS,   GetParticleSpinByBornIndex, TYPE_INDEX);
00374     VFN_2(kSetParticleSpinByIndex,                      SetParticleSpinByIndex,     TYPE_INDEX, TYPE_ANGAXIS);
00375     VFN_2(kSetParticleSpinByBornIndex,                  SetParticleSpinByBornIndex, TYPE_INDEX, TYPE_ANGAXIS);
00376     PROP_FNS(kGetParticleSpin, GetParticleSpin, kSetParticleSpin, SetParticleSpin,  TYPE_ANGAXIS);
00377 
00378     FN_1(kGetParticleScaleByIndex,          TYPE_FLOAT, GetParticleScaleByIndex,        TYPE_INDEX);
00379     FN_1(kGetParticleScaleByBornIndex,      TYPE_FLOAT, GetParticleScaleByBornIndex,    TYPE_INDEX);
00380     VFN_2(kSetParticleScaleByIndex,                     SetParticleScaleByIndex,        TYPE_INDEX, TYPE_FLOAT);
00381     VFN_2(kSetParticleScaleByBornIndex,                 SetParticleScaleByBornIndex,    TYPE_INDEX, TYPE_FLOAT);
00382     PROP_FNS(kGetParticleScale, GetParticleScale, kSetParticleScale, SetParticleScale,  TYPE_FLOAT);
00383     FN_1(kGetParticleScaleXYZByIndex,       TYPE_POINT3,GetParticleScaleXYZByIndex,     TYPE_INDEX);
00384     FN_1(kGetParticleScaleXYZByBornIndex,   TYPE_POINT3,GetParticleScaleXYZByBornIndex, TYPE_INDEX);
00385     VFN_2(kSetParticleScaleXYZByIndex,                  SetParticleScaleXYZByIndex,     TYPE_INDEX, TYPE_POINT3);
00386     VFN_2(kSetParticleScaleXYZByBornIndex,              SetParticleScaleXYZByBornIndex, TYPE_INDEX, TYPE_POINT3);
00387     PROP_FNS(kGetParticleScaleXYZ, GetParticleScaleXYZ, kSetParticleScaleXYZ, SetParticleScaleXYZ,  TYPE_POINT3);
00388 
00389     FN_1(kGetParticleTMByIndex,         TYPE_MATRIX3,   GetParticleTMByIndex,       TYPE_INDEX);
00390     FN_1(kGetParticleTMByBornIndex,     TYPE_MATRIX3,   GetParticleTMByBornIndex,   TYPE_INDEX);
00391     VFN_2(kSetParticleTMByIndex,                        SetParticleTMByIndex,       TYPE_INDEX, TYPE_MATRIX3);
00392     VFN_2(kSetParticleTMByBornIndex,                    SetParticleTMByBornIndex,   TYPE_INDEX, TYPE_MATRIX3);
00393     PROP_FNS(kGetParticleTM, GetParticleTM, kSetParticleTM, SetParticleTM,          TYPE_MATRIX3);
00394 
00395     FN_1(kGetParticleSelectedByIndex,       TYPE_bool,  GetParticleSelectedByIndex,     TYPE_INDEX);
00396     FN_1(kGetParticleSelectedByBornIndex,   TYPE_bool,  GetParticleSelectedByBornIndex, TYPE_INDEX);
00397     VFN_2(kSetParticleSelectedByIndex,                  SetParticleSelectedByIndex,     TYPE_INDEX, TYPE_bool);
00398     VFN_2(kSetParticleSelectedByBornIndex,              SetParticleSelectedByBornIndex, TYPE_INDEX, TYPE_bool);
00399     PROP_FNS(kGetParticleSelected, GetParticleSelected, kSetParticleSelected, SetParticleSelected,  TYPE_bool);
00400 
00401     FN_1(kGetParticleShapeByIndex,      TYPE_MESH,  GetParticleShapeByIndex,        TYPE_INDEX);
00402     FN_1(kGetParticleShapeByBornIndex,  TYPE_MESH,  GetParticleShapeByBornIndex,    TYPE_INDEX);
00403     VFN_2(kSetParticleShapeByIndex,                 SetParticleShapeByIndex,        TYPE_INDEX, TYPE_MESH);
00404     VFN_2(kSetParticleShapeByBornIndex,             SetParticleShapeByBornIndex,    TYPE_INDEX, TYPE_MESH);
00405     VFN_1(kSetGlobalParticleShape,                  SetGlobalParticleShape,         TYPE_MESH);
00406     PROP_FNS(kGetParticleShape, GetParticleShape, kSetParticleShape, SetParticleShape,          TYPE_MESH);
00407 
00408     VFN_2(kSetParticleMtlIndexByIndex,              SetParticleMtlIndexByIndex,     TYPE_INDEX, TYPE_INDEX);
00409     VFN_2(kSetParticleMtlIndexByBornIndex,          SetParticleMtlIndexByBornIndex, TYPE_INDEX, TYPE_INDEX);
00410     VFN_1(kSetGlobalParticleMtlIndex,               SetParticleMtlIndex,            TYPE_INDEX);
00411 
00412     VFN_3(kSetParticleMappingByIndex,               SetParticleMappingByIndex,      TYPE_INDEX, TYPE_INT, TYPE_POINT3);
00413     VFN_3(kSetParticleMappingByBornIndex,           SetParticleMappingByBornIndex,  TYPE_INDEX, TYPE_INT, TYPE_POINT3);
00414     VFN_2(kSetGlobalParticleMapping,                SetParticleMapping,             TYPE_INT, TYPE_POINT3);
00415 
00416     FN_1(kGetParticleIntByIndex,        TYPE_INT,   GetParticleIntByIndex,      TYPE_INDEX);
00417     FN_1(kGetParticleIntByBornIndex,    TYPE_INT,   GetParticleIntByBornIndex,  TYPE_INDEX);
00418     VFN_2(kSetParticleIntByIndex,                   SetParticleIntByIndex,      TYPE_INDEX, TYPE_INT);
00419     VFN_2(kSetParticleIntByBornIndex,               SetParticleIntByBornIndex,  TYPE_INDEX, TYPE_INT);
00420     PROP_FNS(kGetParticleInt, GetParticleInt, kSetParticleInt, SetParticleInt,  TYPE_INT);
00421 
00422     FN_1(kGetParticleFloatByIndex,      TYPE_FLOAT, GetParticleFloatByIndex,        TYPE_INDEX);
00423     FN_1(kGetParticleFloatByBornIndex,  TYPE_FLOAT, GetParticleFloatByBornIndex,    TYPE_INDEX);
00424     VFN_2(kSetParticleFloatByIndex,                 SetParticleFloatByIndex,        TYPE_INDEX, TYPE_FLOAT);
00425     VFN_2(kSetParticleFloatByBornIndex,             SetParticleFloatByBornIndex,    TYPE_INDEX, TYPE_FLOAT);
00426     PROP_FNS(kGetParticleFloat, GetParticleFloat, kSetParticleFloat, SetParticleFloat,  TYPE_FLOAT);
00427 
00428     FN_1(kGetParticleVectorByIndex,     TYPE_POINT3,    GetParticleVectorByIndex,       TYPE_INDEX);
00429     FN_1(kGetParticleVectorByBornIndex, TYPE_POINT3,    GetParticleVectorByBornIndex,   TYPE_INDEX);
00430     VFN_2(kSetParticleVectorByIndex,                    SetParticleVectorByIndex,       TYPE_INDEX, TYPE_POINT3);
00431     VFN_2(kSetParticleVectorByBornIndex,                SetParticleVectorByBornIndex,   TYPE_INDEX, TYPE_POINT3);
00432     PROP_FNS(kGetParticleVector, GetParticleVector, kSetParticleVector, SetParticleVector,  TYPE_POINT3);
00433 
00434     FN_1(kGetParticleMatrixByIndex,         TYPE_MATRIX3,   GetParticleMatrixByIndex,       TYPE_INDEX);
00435     FN_1(kGetParticleMatrixByBornIndex,     TYPE_MATRIX3,   GetParticleMatrixByBornIndex,   TYPE_INDEX);
00436     VFN_2(kSetParticleMatrixByIndex,                        SetParticleMatrixByIndex,       TYPE_INDEX, TYPE_MATRIX3);
00437     VFN_2(kSetParticleMatrixByBornIndex,                    SetParticleMatrixByBornIndex,   TYPE_INDEX, TYPE_MATRIX3);
00438     PROP_FNS(kGetParticleMatrix, GetParticleMatrix, kSetParticleMatrix, SetParticleMatrix,  TYPE_MATRIX3);
00439 
00440     VFN_2(kSetParticleTestStatusByIndex,                    SetParticleTestStatusByIndex,       TYPE_INDEX, TYPE_bool);
00441     VFN_2(kSetParticleTestStatusByBornIndex,                SetParticleTestStatusByBornIndex,   TYPE_INDEX, TYPE_bool);
00442     VFN_1(kSetGlobalTestStatus,                             SetGlobalTestStatus,                TYPE_bool);
00443     PROP_FNS(kGetParticleTestStatus, GetParticleTestStatus, kSetParticleTestStatus, SetParticleTestStatus,  TYPE_bool);
00444     
00445     VFN_2(kSetParticleTestTimeByIndex,                  SetParticleTestTimeByIndex,     TYPE_INDEX, TYPE_TIMEVALUE);
00446     VFN_3(kSetParticleTestTimePreciseByIndex,           SetParticleTestTimeByIndex,     TYPE_INDEX, TYPE_TIMEVALUE, TYPE_FLOAT);
00447     VFN_2(kSetParticleTestTimeByBornIndex,              SetParticleTestTimeByBornIndex, TYPE_INDEX, TYPE_TIMEVALUE);
00448     VFN_3(kSetParticleTestTimePreciseByBornIndex,       SetParticleTestTimeByBornIndex, TYPE_INDEX, TYPE_TIMEVALUE, TYPE_FLOAT);
00449     PROP_FNS(kGetParticleTestTime, GetParticleTestTime, kSetParticleTestTime, SetParticleTestTime,  TYPE_TIMEVALUE);
00450     VFN_2(kSetParticleTestTimePrecise,                  SetParticleTestTime,            TYPE_TIMEVALUE, TYPE_FLOAT);
00451     VFN_1(kSetGlobalTestTime,                           SetGlobalTestTime,              TYPE_TIMEVALUE);
00452     VFN_2(kSetGlobalTestTimePrecise,                    SetGlobalTestTime,              TYPE_TIMEVALUE, TYPE_FLOAT);
00453 
00454     END_FUNCTION_MAP
00455 
00463     virtual IObject* GetParticleContainer() const = 0;
00464 
00468     virtual Object* GetParticleSystem() const = 0;
00469 
00473     virtual INode* GetParticleSystemNode() const = 0;
00474 
00478     virtual Tab<Object*>& GetInitActions() = 0;
00479 
00483     virtual Tab<INode*>& GetInitActionNodes() = 0;
00484 
00488     virtual TimeValue GetTimeStart() const = 0;
00489 
00493     virtual TimeValue GetTimeEnd() const = 0;
00494 
00498     virtual void SetTimeEnd(TimeValue time) = 0;
00499 
00503     virtual void SetTimeEnd(TimeValue time, float timeDelta) = 0;
00504 
00508     virtual INode* GetActionNode() const = 0;
00509 
00513     virtual FPInterface* GetIntegrator() const = 0;
00514 
00518     virtual int     RandSign( void ) = 0;
00519 
00523     virtual float   Rand01( void ) = 0;
00524 
00528     virtual float   Rand11( void ) = 0;
00529 
00533     virtual float   Rand55( void ) = 0;
00534 
00538     virtual int     Rand0X(int maxnum) = 0;
00539 
00543     virtual Point3*  RandSpherePoint() = 0;
00544 
00548     virtual Point3* RandDivergeVector(Point3 vec, float maxAngle) = 0;
00549 
00553     virtual bool GetUseTime() const = 0;
00554 
00558     virtual void SetUseTime(bool use) = 0;
00559 
00563     virtual bool GetUseAge() const = 0;
00564 
00568     virtual void SetUseAge(bool use) = 0;
00569 
00573     virtual bool GetUseLifespan() const = 0;
00574 
00578     virtual void SetUseLifespan(bool use) = 0;
00579 
00583     virtual bool GetUseEventTime() const = 0;
00584 
00588     virtual void SetUseEventTime(bool use) = 0;
00589 
00593     virtual bool GetUsePosition() const = 0;
00594 
00598     virtual void SetUsePosition(bool use) = 0;
00599 
00603     virtual bool GetUseSpeed() const = 0;
00604 
00608     virtual void SetUseSpeed(bool use) = 0;
00609 
00613     virtual bool GetUseAcceleration() const = 0;
00614 
00618     virtual void SetUseAcceleration(bool use) = 0;
00619 
00623     virtual bool GetUseOrientation() const = 0;
00624 
00628     virtual void SetUseOrientation(bool use) = 0;
00629 
00633     virtual bool GetUseSpin() const = 0;
00634 
00638     virtual void SetUseSpin(bool use) = 0;
00639 
00643     virtual bool GetUseScale() const = 0;
00644 
00648     virtual void SetUseScale(bool use) = 0;
00649 
00653     virtual bool GetUseTM() const = 0;
00654 
00658     virtual void SetUseTM(bool use) = 0;
00659 
00663     virtual bool GetUseSelected() const = 0;
00664 
00668     virtual void SetUseSelected(bool use) = 0;
00669 
00673     virtual bool GetUseShape() const = 0;
00674 
00678     virtual void SetUseShape(bool use) = 0;
00679 
00683     virtual bool GetUseMtlIndex() const = 0;
00684 
00688     virtual void SetUseMtlIndex(bool use) = 0;
00689 
00693     virtual bool GetUseMapping() const = 0;
00694 
00698     virtual void SetUseMapping(bool use) = 0;
00699 
00703     virtual bool GetUseInt() const = 0;
00704 
00708     virtual void SetUseInt(bool use) = 0;
00709 
00713     virtual bool GetUseFloat() const = 0;
00714 
00718     virtual void SetUseFloat(bool use) = 0;
00719 
00723     virtual bool GetUseVector() const = 0;
00724 
00728     virtual void SetUseVector(bool use) = 0;
00729 
00733     virtual bool GetUseMatrix() const = 0;
00734 
00738     virtual void SetUseMatrix(bool use) = 0;
00739 
00743     virtual int NumParticles() = 0;
00744 
00748     virtual bool AddParticle() = 0;
00749 
00753     virtual bool AddParticles(int num) = 0;
00754 
00758     virtual bool DeleteParticle(int index) = 0;
00759 
00763     virtual bool DeleteParticles(int start, int num) = 0;
00764 
00770     virtual int GetParticleBornIndex(int i) = 0;
00771 
00778     virtual bool HasParticleBornIndex(int bornIndex, int& index) = 0;
00779 
00783     virtual int GetCurrentParticleIndex() = 0;
00784 
00788     virtual int GetCurrentParticleBornIndex() = 0;
00789 
00793     virtual void SetCurrentParticleIndex(int index) = 0;
00794 
00798     virtual void SetCurrentParticleBornIndex(int bornIndex) = 0;
00799 
00806     virtual bool IsParticleNewByIndex(int index) = 0;
00807 
00811     virtual bool IsParticleNewByBornIndex(int id) = 0;
00812 
00816     virtual bool IsParticleNew() = 0;
00817 
00827     virtual TimeValue GetParticleTimeByIndex(int index) = 0;
00828 
00832     virtual TimeValue GetParticleTimeByBornIndex(int id) = 0;
00833 
00837     virtual void SetParticleTimeByIndex(int index, TimeValue time) = 0;
00838 
00842     virtual void SetParticleTimeByIndex(int index, TimeValue time, float timeDelta) = 0;
00843 
00847     virtual void SetParticleTimeByBornIndex(int id, TimeValue time) = 0;
00848 
00852     virtual void SetParticleTimeByBornIndex(int id, TimeValue time, float timeDelta) = 0;
00853 
00857     virtual TimeValue GetParticleTime() = 0;
00858 
00862     virtual void SetParticleTime(TimeValue time) = 0;
00863 
00872     virtual TimeValue GetParticleAgeByIndex(int index) = 0;
00873 
00877     virtual TimeValue GetParticleAgeByBornIndex(int id) = 0;
00878 
00882     virtual void SetParticleAgeByIndex(int index, TimeValue age) = 0;
00883 
00887     virtual void SetParticleAgeByBornIndex(int id, TimeValue age) = 0;
00888 
00892     virtual TimeValue GetParticleAge() = 0;
00893 
00897     virtual void SetParticleAge(TimeValue age) = 0;
00898 
00907     virtual TimeValue GetParticleLifespanByIndex(int index) = 0;
00908 
00912     virtual TimeValue GetParticleLifespanByBornIndex(int id) = 0;
00913 
00917     virtual void SetParticleLifespanByIndex(int index, TimeValue lifespan) = 0;
00918 
00922     virtual void SetParticleLifespanByBornIndex(int id, TimeValue lifespan) = 0;
00923 
00927     virtual TimeValue GetParticleLifespan() = 0;
00928 
00932     virtual void SetParticleLifespan(TimeValue lifespan) = 0;
00933 
00943     virtual TimeValue GetParticleEventTimeByIndex(int index) = 0;
00944 
00948     virtual TimeValue GetParticleEventTimeByBornIndex(int id) = 0;
00949 
00953     virtual void SetParticleEventTimeByIndex(int index, TimeValue time) = 0;
00954 
00958     virtual void SetParticleEventTimeByBornIndex(int id, TimeValue time) = 0;
00959 
00963     virtual TimeValue GetParticleEventTime() = 0;
00964 
00968     virtual void SetParticleEventTime(TimeValue time) = 0;
00969     
00978     virtual Point3* GetParticlePositionByIndex(int index) = 0;
00979 
00983     virtual Point3* GetParticlePositionByBornIndex(int id) = 0;
00984 
00988     virtual void SetParticlePositionByIndex(int index, Point3 pos) = 0;
00989 
00993     virtual void SetParticlePositionByBornIndex(int id, Point3 pos) = 0;
00994 
00998     virtual Point3* GetParticlePosition() = 0;
00999 
01003     virtual void SetParticlePosition(Point3 pos) = 0;
01004 
01013     virtual Point3* GetParticleSpeedByIndex(int index) = 0;
01014 
01018     virtual Point3* GetParticleSpeedByBornIndex(int id) = 0;
01019 
01023     virtual void SetParticleSpeedByIndex(int index, Point3 speed) = 0;
01024 
01028     virtual void SetParticleSpeedByBornIndex(int id, Point3 speed) = 0;
01029 
01033     virtual Point3* GetParticleSpeed() = 0;
01034 
01038     virtual void SetParticleSpeed(Point3 speed) = 0;
01039 
01049     virtual Point3* GetParticleAccelerationByIndex(int index) = 0;
01050 
01054     virtual Point3* GetParticleAccelerationByBornIndex(int id) = 0;
01055 
01059     virtual void SetParticleAccelerationByIndex(int index, Point3 accel) = 0;
01060 
01064     virtual void SetParticleAccelerationByBornIndex(int id, Point3 accel) = 0;
01065 
01069     virtual Point3* GetParticleAcceleration() = 0;
01070 
01074     virtual void SetParticleAcceleration(Point3 speed) = 0;
01075 
01084     virtual Point3* GetParticleOrientationByIndex(int index) = 0;
01085 
01089     virtual Point3* GetParticleOrientationByBornIndex(int id) = 0;
01090 
01094     virtual void SetParticleOrientationByIndex(int index, Point3 orient) = 0;
01095 
01099     virtual void SetParticleOrientationByBornIndex(int id, Point3 orient) = 0;
01100 
01104     virtual Point3* GetParticleOrientation() = 0;
01105 
01109     virtual void SetParticleOrientation(Point3 orient) = 0;
01110 
01119     virtual AngAxis* GetParticleSpinByIndex(int index) = 0;
01120 
01124     virtual AngAxis* GetParticleSpinByBornIndex(int id) = 0;
01125 
01129     virtual void SetParticleSpinByIndex(int index, AngAxis spin) = 0;
01130 
01134     virtual void SetParticleSpinByBornIndex(int id, AngAxis spin) = 0;
01135 
01139     virtual AngAxis* GetParticleSpin() = 0;
01140 
01144     virtual void SetParticleSpin(AngAxis spin) = 0;
01145 
01155     virtual float GetParticleScaleByIndex(int index) = 0;
01156 
01160     virtual float GetParticleScaleByBornIndex(int id) = 0;
01161 
01165     virtual void SetParticleScaleByIndex(int index, float scale) = 0;
01166 
01170     virtual void SetParticleScaleByBornIndex(int id, float scale) = 0;
01171 
01175     virtual float GetParticleScale() = 0;
01176 
01180     virtual void SetParticleScale(float scale) = 0;
01181 
01185     virtual Point3* GetParticleScaleXYZByIndex(int index) = 0;
01186 
01190     virtual Point3* GetParticleScaleXYZByBornIndex(int id) = 0;
01191 
01195     virtual void SetParticleScaleXYZByIndex(int index, Point3 scale) = 0;
01196 
01200     virtual void SetParticleScaleXYZByBornIndex(int id, Point3 scale) = 0;
01201 
01205     virtual Point3* GetParticleScaleXYZ() = 0;
01206 
01210     virtual void SetParticleScaleXYZ(Point3 scale) = 0;
01211 
01219     virtual Matrix3* GetParticleTMByIndex(int index) = 0;
01220 
01224     virtual Matrix3* GetParticleTMByBornIndex(int id) = 0;
01225 
01229     virtual void SetParticleTMByIndex(int index, Matrix3 tm) = 0;
01230 
01234     virtual void SetParticleTMByBornIndex(int id, Matrix3 tm) = 0;
01235 
01239     virtual Matrix3* GetParticleTM() = 0;
01240 
01244     virtual void SetParticleTM(Matrix3 tm) = 0;
01245 
01254     virtual bool GetParticleSelectedByIndex(int index) = 0;
01255 
01259     virtual bool GetParticleSelectedByBornIndex(int id) = 0;
01260 
01264     virtual void SetParticleSelectedByIndex(int index, bool selected) = 0;
01265 
01269     virtual void SetParticleSelectedByBornIndex(int id, bool selected) = 0;
01270 
01274     virtual bool GetParticleSelected() = 0;
01275 
01279     virtual void SetParticleSelected(bool selected) = 0;
01280 
01281 
01290     virtual Mesh* GetParticleShapeByIndex(int index) = 0;
01291 
01295     virtual Mesh* GetParticleShapeByBornIndex(int id) = 0;
01296 
01300     virtual void SetParticleShapeByIndex(int index, Mesh* shape) = 0;
01301 
01305     virtual void SetParticleShapeByBornIndex(int id, Mesh* shape) = 0;
01306 
01310     virtual Mesh* GetParticleShape() = 0;
01311 
01315     virtual void SetParticleShape(Mesh* shape) = 0;
01316 
01320     virtual void SetGlobalParticleShape(Mesh* shape) = 0;
01321 
01330     virtual void SetParticleMtlIndexByIndex(int index, int mtlIndex) = 0;
01331 
01335     virtual void SetParticleMtlIndexByBornIndex(int id, int mtlIndex) = 0;
01336 
01340     virtual void SetParticleMtlIndex(int mtlIndex) = 0;
01341 
01352     virtual void SetParticleMappingByIndex(int index, int mapChannel, UVVert mapValue) = 0;
01353 
01357     virtual void SetParticleMappingByBornIndex(int id, int mapChannel, UVVert mapValue) = 0;
01358 
01362     virtual void SetParticleMapping(int mapChannel, UVVert mapValue) = 0;
01363 
01373     virtual int GetParticleIntByIndex(int index) = 0;
01374 
01378     virtual int GetParticleIntByBornIndex(int id) = 0;
01379 
01383     virtual void SetParticleIntByIndex(int index, int value) = 0;
01384 
01388     virtual void SetParticleIntByBornIndex(int id, int value) = 0;
01389 
01393     virtual int GetParticleInt() = 0;
01394 
01398     virtual void SetParticleInt(int value) = 0;
01399 
01409     virtual float GetParticleFloatByIndex(int index) = 0;
01410 
01414     virtual float GetParticleFloatByBornIndex(int id) = 0;
01415 
01419     virtual void SetParticleFloatByIndex(int index, float value) = 0;
01420 
01424     virtual void SetParticleFloatByBornIndex(int id, float value) = 0;
01425 
01429     virtual float GetParticleFloat() = 0;
01430 
01434     virtual void SetParticleFloat(float value) = 0;
01435 
01443     virtual Point3* GetParticleVectorByIndex(int index) = 0;
01444 
01448     virtual Point3* GetParticleVectorByBornIndex(int id) = 0;
01449 
01453     virtual void SetParticleVectorByIndex(int index, Point3 value) = 0;
01454 
01458     virtual void SetParticleVectorByBornIndex(int id, Point3 value) = 0;
01459 
01463     virtual Point3* GetParticleVector() = 0;
01464 
01468     virtual void SetParticleVector(Point3 value) = 0;
01469 
01477     virtual Matrix3* GetParticleMatrixByIndex(int index) = 0;
01478 
01482     virtual Matrix3* GetParticleMatrixByBornIndex(int id) = 0;
01483 
01487     virtual void SetParticleMatrixByIndex(int index, Matrix3 value) = 0;
01488 
01492     virtual void SetParticleMatrixByBornIndex(int id, Matrix3 value) = 0;
01493 
01497     virtual Matrix3* GetParticleMatrix() = 0;
01498 
01502     virtual void SetParticleMatrix(Matrix3 value) = 0;
01503 
01511     virtual void SetParticleTestStatusByIndex(int index, bool testStatus) = 0;
01512 
01516     virtual void SetParticleTestStatusByBornIndex(int id, bool testStatus) = 0;
01517 
01521     virtual bool GetParticleTestStatus() = 0;
01522 
01526     virtual void SetParticleTestStatus(bool testStatus) = 0;
01527 
01531     virtual void SetGlobalTestStatus(bool testStatus) = 0;
01532 
01541     virtual void SetParticleTestTimeByIndex(int index, TimeValue testTime) = 0;
01542 
01546     virtual void SetParticleTestTimeByIndex(int index, TimeValue testTime, float testTimeDelta) = 0;
01547 
01551     virtual void SetParticleTestTimeByBornIndex(int id, TimeValue testTime) = 0;
01552 
01556     virtual void SetParticleTestTimeByBornIndex(int id, TimeValue testTime, float testTimeDelta) = 0;
01557 
01561     virtual TimeValue GetParticleTestTime() = 0;
01562 
01566     virtual void SetParticleTestTime(TimeValue testTime) = 0;
01567 
01571     virtual void SetParticleTestTime(TimeValue testTime, float testTimeDelta) = 0;
01572 
01576     virtual void SetGlobalTestTime(TimeValue testTime) = 0;
01577 
01581     virtual void SetGlobalTestTime(TimeValue testTime, float testTimeDelta) = 0;
01582 
01586     FPInterfaceDesc* GetDesc() { return GetDescByID(MXSPARTICLECONTAINER_INTERFACE); }
01587 };
01588