00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef TURBULENCE_FSACTOR_H
00030 #define TURBULENCE_FSACTOR_H
00031
00032 #include "Apex.h"
00033 #include "Shape.h"
00034
00035 namespace nvidia
00036 {
00037 namespace apex
00038 {
00039
00040 class TurbulenceFSAsset;
00041 class TurbulenceRenderable;
00042
00046 class TurbulenceFSActor : public Actor, public Renderable
00047 {
00048 protected:
00049 virtual ~TurbulenceFSActor() {}
00050
00051 public:
00052
00054 virtual TurbulenceFSAsset* getTurbulenceFSAsset() const = 0;
00055
00057 virtual void setEnabled(bool enable) = 0;
00058
00066 virtual void setPose(PxMat44 pose) = 0;
00067
00075 virtual PxMat44 getPose() const = 0;
00076
00078 virtual PxVec3 getGridBoundingBoxMin() = 0;
00080 virtual PxVec3 getGridBoundingBoxMax() = 0;
00081
00083 virtual PxVec3 getGridSize() = 0;
00084
00086 virtual void getGridDimensions(uint32_t &gridX,uint32_t &gridY,uint32_t &gridZ) = 0;
00087
00089 virtual void setGridDimensions(const uint32_t &gridX, const uint32_t &gridY, const uint32_t &gridZ) = 0;
00090
00098 virtual void setUpdatesPerFrame(float upd) = 0;
00100 virtual float getUpdatesPerFrame() const = 0;
00101
00107 virtual void getVelocityField(void** x, void** y, void** z, uint32_t& sizeX, uint32_t& sizeY, uint32_t& sizeZ) = 0;
00108
00110 virtual void setSampleVelocityFieldEnabled(bool enabled) = 0;
00111
00113 virtual void setAngularVelocityMultiplierAndClamp(float angularVelocityMultiplier, float angularVelocityClamp) = 0;
00114
00116 virtual void setLinearVelocityMultiplierAndClamp(float linearVelocityMultiplier, float linearVelocityClamp) = 0;
00117
00119 virtual void setVelocityFieldFade(float fade) = 0;
00120
00122 virtual void setFluidViscosity(float viscosity) = 0;
00123
00125 virtual void setVelocityFieldCleaningTime(float time) = 0;
00126
00128 virtual void setVelocityFieldCleaningDelay(float time) = 0;
00129
00134 virtual void setVelocityFieldCleaningIntensity(float a) = 0;
00135
00140 virtual void setUseHeat(bool enable) = 0;
00141
00143 virtual void setHeatBasedParameters(float forceMultiplier, float ambientTemperature, PxVec3 heatForceDirection, float thermalConductivity) = 0;
00144
00149 virtual void setUseDensity(bool enable) = 0;
00150
00152 virtual bool getUseDensity(void) const = 0;
00153
00155 virtual void setDensityBasedParameters(float diffusionCoef, float densityFieldFade) = 0;
00156
00158 virtual void getDensityGridDimensions(uint32_t &gridX,uint32_t &gridY,uint32_t &gridZ) = 0;
00159
00164 virtual void setExternalVelocity(PxVec3 vel) = 0;
00165
00167 virtual void setFieldVelocityMultiplier(float value) = 0;
00168
00170 virtual void setFieldVelocityWeight(float value) = 0;
00171
00173 virtual void setNoiseParameters(float noiseStrength, PxVec3 noiseSpacePeriod, float noiseTimePeriod, uint32_t noiseOctaves) = 0;
00174
00176 virtual void setDensityTextureRange(float minValue, float maxValue) = 0;
00177
00179 virtual const char *getVolumeRenderMaterialName(void) const = 0;
00180
00182 virtual void setCurrentScale(float scale) = 0;
00183
00185 virtual float getCurrentScale(void) const = 0;
00186
00188 virtual bool getUseFlame(void) const = 0;
00189
00191 virtual void getFlameGridDimensions(uint32_t &gridX, uint32_t &gridY, uint32_t &gridZ) const = 0;
00192
00199 virtual TurbulenceRenderable* acquireRenderableReference() = 0;
00200
00201 };
00202
00203 }
00204 }
00205
00206 #endif // TURBULENCE_FSACTOR_H