diff options
Diffstat (limited to 'sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h')
| -rwxr-xr-x[-rw-r--r--] | sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h | 394 |
1 files changed, 197 insertions, 197 deletions
diff --git a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h index f839b65..ae4ea40 100644..100755 --- a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h +++ b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h @@ -1,197 +1,197 @@ -// This code contains NVIDIA Confidential Information and is disclosed to you -// under a form of NVIDIA software license agreement provided separately to you. -// -// Notice -// NVIDIA Corporation and its licensors retain all intellectual property and -// proprietary rights in and to this software and 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. -// -// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES -// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO -// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, -// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. -// -// Information and code furnished is believed to be accurate and reliable. -// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such -// information or for any infringement of patents or other rights of third parties that may -// result from its use. No license is granted by implication or otherwise under any patent -// or patent rights of NVIDIA Corporation. Details are subject to change without notice. -// This code supersedes and replaces all information previously supplied. -// NVIDIA Corporation products are not authorized for use as critical -// components in life support devices or systems without express written approval of -// NVIDIA Corporation. -// -// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved. - - -#ifndef NVBLASTEXTPXFAMILYIMPL_H -#define NVBLASTEXTPXFAMILYIMPL_H - -#include "NvBlastExtPxFamily.h" -#include "NvBlastArray.h" -#include "NvBlastHashSet.h" -#include "PxTransform.h" -#include "NvBlastTkEvent.h" - - -using namespace physx; - - -namespace Nv -{ -namespace Blast -{ - -// Forward declarations -class ExtPxManagerImpl; -class ExtPxActorImpl; -struct PxActorCreateInfo; - - -class ExtPxFamilyImpl final : public ExtPxFamily, TkEventListener -{ - NV_NOCOPY(ExtPxFamilyImpl) - -public: - friend ExtPxActorImpl; - friend ExtPxManagerImpl; - - //////// ctor //////// - - ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, ExtPxAsset& pxAsset); - ~ExtPxFamilyImpl(); - - virtual void release() override; - - - //////// ExtPxFamily interface //////// - -// virtual bool spawn(const PxTransform& pose, const ExtPxSpawnSettings& settings) override; - virtual bool spawn(const physx::PxTransform& pose, const physx::PxVec3& scale, const ExtPxSpawnSettings& settings) override; - virtual bool despawn() override; - - - virtual uint32_t getActorCount() const override - { - return m_actors.size(); - } - - virtual uint32_t getActors(ExtPxActor** buffer, uint32_t bufferSize) const override - { - uint32_t index = 0; - for (auto it = const_cast<ExtPxFamilyImpl*>(this)->m_actors.getIterator(); !it.done() && index < bufferSize; ++it) - { - buffer[index++] = *it; - } - return index; - } - - virtual TkFamily& getTkFamily() const override - { - return m_tkFamily; - } - - virtual const physx::PxShape* const* getSubchunkShapes() const override - { - return m_subchunkShapes.begin(); - } - - virtual ExtPxAsset& getPxAsset() const override - { - return m_pxAsset; - } - - virtual void setMaterial(PxMaterial& material) override - { - m_spawnSettings.material = &material; - } - - virtual void setPxShapeDescTemplate(const ExtPxShapeDescTemplate* pxShapeDesc) override - { - m_pxShapeDescTemplate = pxShapeDesc; - } - - virtual const ExtPxShapeDescTemplate* getPxShapeDescTemplate() const override - { - return m_pxShapeDescTemplate; - } - - virtual void setPxActorDesc(const ExtPxActorDescTemplate* pxActorDesc) override - { - m_pxActorDescTemplate = pxActorDesc; - } - - virtual const ExtPxActorDescTemplate* getPxActorDesc() const override - { - return m_pxActorDescTemplate; - } - - virtual const NvBlastExtMaterial* getMaterial() const override - { - return m_material; - } - - virtual void setMaterial(const NvBlastExtMaterial* material) override - { - m_material = material; - } - - virtual void subscribe(ExtPxListener& listener) override - { - m_listeners.pushBack(&listener); - } - - virtual void unsubscribe(ExtPxListener& listener) override - { - m_listeners.findAndReplaceWithLast(&listener); - } - - virtual void postSplitUpdate() override; - - //////// TkEventListener interface //////// - - virtual void receive(const TkEvent* events, uint32_t eventCount) override; - - - //////// events dispatch //////// - - void dispatchActorCreated(ExtPxActor& actor); - void dispatchActorDestroyed(ExtPxActor& actor); - - -private: - //////// private methods //////// - - void createActors(TkActor** tkActors, const PxActorCreateInfo* pxActorInfos, uint32_t count); - void destroyActors(ExtPxActor** actors, uint32_t count); - - //////// data //////// - - ExtPxManagerImpl& m_manager; - TkFamily& m_tkFamily; - ExtPxAsset& m_pxAsset; - ExtPxSpawnSettings m_spawnSettings; - const ExtPxShapeDescTemplate* m_pxShapeDescTemplate; - const ExtPxActorDescTemplate* m_pxActorDescTemplate; - const NvBlastExtMaterial* m_material; - bool m_isSpawned; - PxTransform m_initialTransform; - PxVec3 m_initialScale; - HashSet<ExtPxActor*>::type m_actors; - Array<TkActor*>::type m_culledActors; - InlineArray<ExtPxListener*, 4>::type m_listeners; - Array<PxShape*>::type m_subchunkShapes; - Array<TkActor*>::type m_newActorsBuffer; - Array<PxActorCreateInfo>::type m_newActorCreateInfo; - Array<PxActor*>::type m_physXActorsBuffer; - Array<ExtPxActor*>::type m_actorsBuffer; - Array<uint32_t>::type m_indicesScratch; -}; - -} // namespace Blast -} // namespace Nv - - -#endif // ifndef NVBLASTEXTPXFAMILYIMPL_H +// This code contains NVIDIA Confidential Information and is disclosed to you
+// under a form of NVIDIA software license agreement provided separately to you.
+//
+// Notice
+// NVIDIA Corporation and its licensors retain all intellectual property and
+// proprietary rights in and to this software and 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.
+//
+// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
+// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+//
+// Information and code furnished is believed to be accurate and reliable.
+// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
+// information or for any infringement of patents or other rights of third parties that may
+// result from its use. No license is granted by implication or otherwise under any patent
+// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
+// This code supersedes and replaces all information previously supplied.
+// NVIDIA Corporation products are not authorized for use as critical
+// components in life support devices or systems without express written approval of
+// NVIDIA Corporation.
+//
+// Copyright (c) 2016-2018 NVIDIA Corporation. All rights reserved.
+
+
+#ifndef NVBLASTEXTPXFAMILYIMPL_H
+#define NVBLASTEXTPXFAMILYIMPL_H
+
+#include "NvBlastExtPxFamily.h"
+#include "NvBlastArray.h"
+#include "NvBlastHashSet.h"
+#include "PxTransform.h"
+#include "NvBlastTkEvent.h"
+
+
+using namespace physx;
+
+
+namespace Nv
+{
+namespace Blast
+{
+
+// Forward declarations
+class ExtPxManagerImpl;
+class ExtPxActorImpl;
+struct PxActorCreateInfo;
+
+
+class ExtPxFamilyImpl final : public ExtPxFamily, TkEventListener
+{
+ NV_NOCOPY(ExtPxFamilyImpl)
+
+public:
+ friend ExtPxActorImpl;
+ friend ExtPxManagerImpl;
+
+ //////// ctor ////////
+
+ ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, ExtPxAsset& pxAsset);
+ ~ExtPxFamilyImpl();
+
+ virtual void release() override;
+
+
+ //////// ExtPxFamily interface ////////
+
+// virtual bool spawn(const PxTransform& pose, const ExtPxSpawnSettings& settings) override;
+ virtual bool spawn(const physx::PxTransform& pose, const physx::PxVec3& scale, const ExtPxSpawnSettings& settings) override;
+ virtual bool despawn() override;
+
+
+ virtual uint32_t getActorCount() const override
+ {
+ return m_actors.size();
+ }
+
+ virtual uint32_t getActors(ExtPxActor** buffer, uint32_t bufferSize) const override
+ {
+ uint32_t index = 0;
+ for (auto it = const_cast<ExtPxFamilyImpl*>(this)->m_actors.getIterator(); !it.done() && index < bufferSize; ++it)
+ {
+ buffer[index++] = *it;
+ }
+ return index;
+ }
+
+ virtual TkFamily& getTkFamily() const override
+ {
+ return m_tkFamily;
+ }
+
+ virtual const physx::PxShape* const* getSubchunkShapes() const override
+ {
+ return m_subchunkShapes.begin();
+ }
+
+ virtual ExtPxAsset& getPxAsset() const override
+ {
+ return m_pxAsset;
+ }
+
+ virtual void setMaterial(PxMaterial& material) override
+ {
+ m_spawnSettings.material = &material;
+ }
+
+ virtual void setPxShapeDescTemplate(const ExtPxShapeDescTemplate* pxShapeDesc) override
+ {
+ m_pxShapeDescTemplate = pxShapeDesc;
+ }
+
+ virtual const ExtPxShapeDescTemplate* getPxShapeDescTemplate() const override
+ {
+ return m_pxShapeDescTemplate;
+ }
+
+ virtual void setPxActorDesc(const ExtPxActorDescTemplate* pxActorDesc) override
+ {
+ m_pxActorDescTemplate = pxActorDesc;
+ }
+
+ virtual const ExtPxActorDescTemplate* getPxActorDesc() const override
+ {
+ return m_pxActorDescTemplate;
+ }
+
+ virtual const NvBlastExtMaterial* getMaterial() const override
+ {
+ return m_material;
+ }
+
+ virtual void setMaterial(const NvBlastExtMaterial* material) override
+ {
+ m_material = material;
+ }
+
+ virtual void subscribe(ExtPxListener& listener) override
+ {
+ m_listeners.pushBack(&listener);
+ }
+
+ virtual void unsubscribe(ExtPxListener& listener) override
+ {
+ m_listeners.findAndReplaceWithLast(&listener);
+ }
+
+ virtual void postSplitUpdate() override;
+
+ //////// TkEventListener interface ////////
+
+ virtual void receive(const TkEvent* events, uint32_t eventCount) override;
+
+
+ //////// events dispatch ////////
+
+ void dispatchActorCreated(ExtPxActor& actor);
+ void dispatchActorDestroyed(ExtPxActor& actor);
+
+
+private:
+ //////// private methods ////////
+
+ void createActors(TkActor** tkActors, const PxActorCreateInfo* pxActorInfos, uint32_t count);
+ void destroyActors(ExtPxActor** actors, uint32_t count);
+
+ //////// data ////////
+
+ ExtPxManagerImpl& m_manager;
+ TkFamily& m_tkFamily;
+ ExtPxAsset& m_pxAsset;
+ ExtPxSpawnSettings m_spawnSettings;
+ const ExtPxShapeDescTemplate* m_pxShapeDescTemplate;
+ const ExtPxActorDescTemplate* m_pxActorDescTemplate;
+ const NvBlastExtMaterial* m_material;
+ bool m_isSpawned;
+ PxTransform m_initialTransform;
+ PxVec3 m_initialScale;
+ HashSet<ExtPxActor*>::type m_actors;
+ Array<TkActor*>::type m_culledActors;
+ InlineArray<ExtPxListener*, 4>::type m_listeners;
+ Array<PxShape*>::type m_subchunkShapes;
+ Array<TkActor*>::type m_newActorsBuffer;
+ Array<PxActorCreateInfo>::type m_newActorCreateInfo;
+ Array<PxActor*>::type m_physXActorsBuffer;
+ Array<ExtPxActor*>::type m_actorsBuffer;
+ Array<uint32_t>::type m_indicesScratch;
+};
+
+} // namespace Blast
+} // namespace Nv
+
+
+#endif // ifndef NVBLASTEXTPXFAMILYIMPL_H
|