diff options
Diffstat (limited to 'APEX_1.4/module/iofx/include/ModuleIofxImpl.h')
| -rw-r--r-- | APEX_1.4/module/iofx/include/ModuleIofxImpl.h | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/APEX_1.4/module/iofx/include/ModuleIofxImpl.h b/APEX_1.4/module/iofx/include/ModuleIofxImpl.h new file mode 100644 index 00000000..6a2d69e6 --- /dev/null +++ b/APEX_1.4/module/iofx/include/ModuleIofxImpl.h @@ -0,0 +1,169 @@ +/* + * 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 __MODULE_IOFX_IMPL_H__ +#define __MODULE_IOFX_IMPL_H__ + +#include "Apex.h" +#include "ModuleIofx.h" +#include "ApexSDKIntl.h" +#include "ModuleBase.h" +#include "ModuleIofxIntl.h" +#include "ResourceProviderIntl.h" +#include "ApexSharedUtils.h" +#include "ApexSDKHelpers.h" +#include "ModulePerfScope.h" +#include "ApexAuthorableObject.h" +#include "ApexRWLockable.h" +#include "ModuleIofxRegistration.h" +#include "ReadCheck.h" +#include "WriteCheck.h" + + +namespace nvidia +{ +namespace apex +{ +class RenderVolume; +} +namespace iofx +{ +class IofxAssetImpl; +class IofxScene; + +class ModuleIofxDesc : public ApexDesc +{ +public: + + /** + \brief constructor sets to default. + */ + PX_INLINE ModuleIofxDesc() : ApexDesc() + { + init(); + } + + /** + \brief sets members to default values. + */ + PX_INLINE void setToDefault() + { + ApexDesc::setToDefault(); + init(); + } + + /** + \brief checks if this is a valid descriptor. + */ + PX_INLINE bool isValid() const + { + bool retVal = ApexDesc::isValid(); + return retVal; + } + +private: + + PX_INLINE void init() + { + } +}; + +class ModuleIofxImpl : public ModuleIofx, public ModuleIofxIntl, public ModuleBase, public ApexRWLockable +{ +public: + APEX_RW_LOCKABLE_BOILERPLATE + + ModuleIofxImpl(ApexSDKIntl* sdk); + ~ModuleIofxImpl(); + + void init(const ModuleIofxDesc& ModuleIofxDesc); + + // base class methods + void init(NvParameterized::Interface&) {} + NvParameterized::Interface* getDefaultModuleDesc(); + void release() + { + ModuleBase::release(); + } + void destroy(); + const char* getName() const + { + READ_ZONE(); + return ModuleBase::getName(); + } + + RenderableIterator* createRenderableIterator(const Scene&) + { + WRITE_ZONE(); + return NULL; //obsolete! + } + + void disableCudaInterop() + { + WRITE_ZONE(); + mInteropDisabled = true; + } + void disableCudaModifiers() + { + WRITE_ZONE(); + mCudaDisabled = true; + } + void disableDeferredRenderableAllocation() + { + WRITE_ZONE(); + mDeferredDisabled = true; + } + + const TestBase* getTestBase(Scene* apexScene) const; + + bool setIofxRenderCallback(const Scene& apexScene, IofxRenderCallback* ); + IofxRenderCallback* getIofxRenderCallback(const Scene& apexScene) const; + + IofxRenderableIterator* createIofxRenderableIterator(const Scene&); + + void prepareRenderables(const Scene&); + + // ModuleIofxIntl methods + IofxManagerIntl* createActorManager(const Scene& scene, const IofxAsset& asset, const IofxManagerDescIntl& desc); + + uint32_t forceLoadAssets(); + AuthObjTypeID getModuleID() const; + + ModuleSceneIntl* createInternalModuleScene(SceneIntl&, RenderDebugInterface*); + void releaseModuleSceneIntl(ModuleSceneIntl&); + + IofxScene* getIofxScene(const Scene& scene); + const IofxScene* getIofxScene(const Scene& scene) const; + + RenderVolume* createRenderVolume(const Scene& apexScene, const PxBounds3& b, uint32_t priority, bool allIofx); + void releaseRenderVolume(RenderVolume& volume); + +protected: + + ResourceList mAuthorableObjects; + + IofxModuleParameters* mModuleParams; + bool mInteropDisabled; + bool mCudaDisabled; + bool mDeferredDisabled; + + ResourceList mIofxScenes; + + friend class IofxActorImpl; + friend class IofxScene; + friend class IofxManager; + friend class IofxManagerGPU; +}; + +} +} // namespace nvidia + +#endif // __MODULE_IOFX_IMPL_H__ |