diff options
Diffstat (limited to 'APEX_1.4/module/iofx/include/IosObjectData.h')
| -rw-r--r-- | APEX_1.4/module/iofx/include/IosObjectData.h | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/APEX_1.4/module/iofx/include/IosObjectData.h b/APEX_1.4/module/iofx/include/IosObjectData.h new file mode 100644 index 00000000..62c1bff9 --- /dev/null +++ b/APEX_1.4/module/iofx/include/IosObjectData.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. + * + * NVIDIA CORPORATION and its licensors retain all intellectual property + * and proprietary rights in and to this software, related documentation + * and any modifications thereto. Any use, reproduction, disclosure or + * distribution of this software and related documentation without an express + * license agreement from NVIDIA CORPORATION is strictly prohibited. + */ + + +#ifndef __IOS_OBJECT_DATA_H__ +#define __IOS_OBJECT_DATA_H__ + +#include "ApexUsingNamespace.h" +#include "PsUserAllocated.h" +#include "PsSync.h" +#include "PxVec3.h" +#include "PxVec4.h" +#include "IofxManagerIntl.h" +#include "PxMat33.h" +#include "ApexMirroredArray.h" +#include "ApexMath.h" + +#include "IofxRenderData.h" +#include "ModifierData.h" + +namespace physx +{ +class PxCudaContextManager; +} + +namespace nvidia +{ +namespace iofx +{ + +class IosObjectBaseData : public IofxManagerDescIntl, public IosBufferDescIntl, public UserAllocated +{ +public: + IosObjectBaseData(uint32_t instance) + : instanceID(instance) + , renderData(NULL) + , maxStateID(0) + , maxInputID(0) + , numParticles(0) + { + } + virtual ~IosObjectBaseData() + { + if (renderData) + { + renderData->release(); + } + } + + void updateSemantics(IofxScene& scene, uint32_t semantics) + { + if (renderData) + { + renderData->updateSemantics(scene, semantics, maxObjectCount, numParticles); + } + } + + PX_INLINE ModifierCommonParams getCommonParams() const + { + ModifierCommonParams common; + + common.inputHasCollision = iosSupportsCollision; + common.inputHasDensity = iosSupportsDensity; + common.inputHasUserData = iosSupportsUserData; + common.upVector = upVector; + common.eyePosition = eyePosition; + common.eyeDirection = eyeDirection; + common.eyeAxisX = eyeAxisX; + common.eyeAxisY = eyeAxisY; + common.zNear = zNear; + common.deltaTime = deltaTime; + + return common; + } + + const uint32_t instanceID; + + PxVec3 upVector; + float radius; + float gravity; + float restDensity; //!< resting density of simulation + + float elapsedTime; //!< total simulation time + float deltaTime; //!< SceneIntl::getElapsedTime() + PxVec3 eyePosition; //!< Scene::getEyePosition() + PxVec3 eyeDirection; //!< Scene::getEyeDirection() + PxVec3 eyeAxisX; + PxVec3 eyeAxisY; + float zNear; + + uint32_t maxStateID; //!< From IOS each frame + uint32_t maxInputID; //!< From IOS each frame + uint32_t numParticles; //!< From IOS each frame + + IofxSharedRenderDataBase* renderData; + +private: + IosObjectBaseData& operator=(const IosObjectBaseData&); +}; + +class IosObjectCpuData : public IosObjectBaseData +{ +public: + IosObjectCpuData(uint32_t instance) + : IosObjectBaseData(instance) + , outputToState(NULL) + , sortingKeys(NULL) + { + } + + IofxSlice** inPubState; + IofxSlice** outPubState; + uint32_t numPubSlices; + + IofxSlice** inPrivState; + IofxSlice** outPrivState; + uint32_t numPrivSlices; + + uint32_t* outputToState; + + uint32_t* sortingKeys; +}; + +#if APEX_CUDA_SUPPORT +class IosObjectGpuData : public IosObjectBaseData +{ +public: + IosObjectGpuData(uint32_t instance) + : IosObjectBaseData(instance) + { + } +}; +#endif + +} +} // namespace nvidia + +#endif /* __IOS_OBJECT_DATA_H__ */ |