diff options
Diffstat (limited to 'APEX_1.4/module/forcefield/include/ForceFieldAssetPreviewImpl.h')
| -rw-r--r-- | APEX_1.4/module/forcefield/include/ForceFieldAssetPreviewImpl.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/APEX_1.4/module/forcefield/include/ForceFieldAssetPreviewImpl.h b/APEX_1.4/module/forcefield/include/ForceFieldAssetPreviewImpl.h new file mode 100644 index 00000000..6a4c11d3 --- /dev/null +++ b/APEX_1.4/module/forcefield/include/ForceFieldAssetPreviewImpl.h @@ -0,0 +1,100 @@ +/* + * 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 __FORCEFIELD_ASSET_PREVIEW_IMPL_H__ +#define __FORCEFIELD_ASSET_PREVIEW_IMPL_H__ + +#include "ApexPreview.h" + +#include "ApexSDKIntl.h" +#include "ForceFieldPreview.h" +#include "RenderDebugInterface.h" +#include "ForceFieldAssetImpl.h" + +#include "ApexRWLockable.h" +#include "ReadCheck.h" +#include "WriteCheck.h" + +namespace nvidia +{ +namespace forcefield +{ + +/* + APEX asset preview explosion asset. + Preview. +*/ +class ForceFieldAssetPreviewImpl : public ForceFieldPreview, public ApexResource, public ApexPreview, public ApexRWLockable +{ +public: + APEX_RW_LOCKABLE_BOILERPLATE + + ForceFieldAssetPreviewImpl(const ForceFieldPreviewDesc& PreviewDesc, ApexSDK* myApexSDK, ForceFieldAssetImpl* myForceFieldAsset, AssetPreviewScene* previewScene); + void drawForceFieldPreview(void); + void drawForceFieldPreviewUnscaled(void); + void drawForceFieldPreviewScaled(void); + void drawForceFieldPreviewIcon(void); + void drawForceFieldBoundaries(void); + void drawForceFieldWithCylinder(); + void destroy(); + + void setPose(const PxMat44& pose); // Sets the preview instance's pose. This may include scaling. + const PxMat44 getPose() const; + + // 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); + + void setDetailLevel(uint32_t detail); + + typedef struct + { + float x, y; + } point2; + +private: + + ~ForceFieldAssetPreviewImpl(); + PxMat44 mPose; // the pose for the preview rendering + ApexSDK* mApexSDK; // pointer to the APEX SDK + ForceFieldAssetImpl* mAsset; // our parent ForceField Asset + RenderDebugInterface* mApexRenderDebug; // Pointer to the RenderLines class to draw the + // preview stuff + uint32_t mDrawGroupIconScaled; // the ApexDebugRenderer draw group for the Icon + uint32_t mDrawGroupCylinder; + uint32_t mPreviewDetail; // the detail options of the preview drawing + float mIconScale; // the scale for the icon + AssetPreviewScene* mPreviewScene; + + bool mDrawWithCylinder; + + void drawIcon(void); + void drawMultilinePoint2(const point2* pts, uint32_t numPoints, uint32_t color); + void setIconScale(float scale); + + void setPose(PxMat44 pose); + + void toggleDrawPreview(); + void setDrawGroupsPoseScaled(); +}; + +} +} // end namespace nvidia + +#endif // __FORCEFIELD_ASSET_PREVIEW_IMPL_H__ |