diff options
Diffstat (limited to 'APEX_1.4/module/basicfs/include/AttractorFSAssetPreview.h')
| -rw-r--r-- | APEX_1.4/module/basicfs/include/AttractorFSAssetPreview.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/APEX_1.4/module/basicfs/include/AttractorFSAssetPreview.h b/APEX_1.4/module/basicfs/include/AttractorFSAssetPreview.h new file mode 100644 index 00000000..bd1f08ca --- /dev/null +++ b/APEX_1.4/module/basicfs/include/AttractorFSAssetPreview.h @@ -0,0 +1,115 @@ +/* + * 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 __ATTRACTOR_FSPREVIEW_H__ +#define __ATTRACTOR_FSPREVIEW_H__ + +#include "ApexPreview.h" +#include "ApexRWLockable.h" +#include "ApexSDKIntl.h" +#include "AttractorFSPreview.h" +#include "RenderDebugInterface.h" + +namespace nvidia +{ +namespace basicfs +{ + +class AttractorFSAsset; + +/** +\brief Descriptor for a AttractorFS Preview Asset +*/ +class AttractorFSPreviewDesc +{ +public: + AttractorFSPreviewDesc() : + mPose(PxMat44()), + mPreviewDetail() + { + mPose = PxMat44(PxIdentity); + }; + + /** + \brief The pose that translates from preview coordinates to world coordinates. + */ + PxMat44 mPose; + /** + \brief Radius of the attractor. + */ + float mRadius; + /** + \brief The detail options of the preview drawing + */ + uint32_t mPreviewDetail; +}; + +/* + APEX asset preview asset. + Preview. +*/ +class AttractorFSAssetPreview : public AttractorFSPreview, public ApexResource, public ApexPreview, public ApexRWLockable +{ +public: + APEX_RW_LOCKABLE_BOILERPLATE + + AttractorFSAssetPreview(const AttractorFSPreviewDesc& PreviewDesc, ApexSDK* myApexSDK, AttractorFSAsset* myAsset, AssetPreviewScene* previewScene); + void drawAttractorFSPreview(void); + void destroy(); + + float getAttractorRadius(NvParameterized::Interface* assetParams); + + void setPose(const PxMat44& pose); // Sets the preview instance's pose. This may include scaling. + const PxMat44 getPose() const; + + void setRadius(float radius); + const float getRadius() const; + + void setDetailLevel(uint32_t detail); + + // from RenderDataProvider + void lockRenderResources(void); + void unlockRenderResources(void); + void updateRenderResources(bool rewriteBuffers = false, void* userRenderData = 0); + + // from Renderable.h + void dispatchRenderResources(UserRenderer& renderer); + PxBounds3 getBounds(void) const; + + // from ApexResource.h + void release(void); + +private: + ~AttractorFSAssetPreview(); + + PxMat44 mPose; // the pose for the preview rendering + ApexSDK* mApexSDK; // pointer to the APEX SDK + AttractorFSAsset* mAsset; // our parent AttractorFS Asset + RenderDebugInterface* mApexRenderDebug; // Pointer to the RenderLines class to draw the + AssetPreviewScene* mPreviewScene; + // preview stuff + float mRadius; // the radius of the attractor + uint32_t mPreviewDetail; // the detail options of the preview drawing + + int32_t mDrawGroupBox; + + void drawPreviewShape(); + void drawPreviewAssetInfo(); + void toggleDrawPreview(); + void setDrawGroupsPose(); + + void drawInfoLine(uint32_t lineNum, const char* str); +}; + +} +} // namespace nvidia + +#endif // __TURBULENCE_ASSET_PREVIEW_H__ |