diff options
| author | Bryan Galdrikian <[email protected]> | 2017-10-24 15:25:02 -0700 |
|---|---|---|
| committer | Bryan Galdrikian <[email protected]> | 2017-10-24 15:25:02 -0700 |
| commit | b0c11962f6012430da3bcaa2727288046b33d648 (patch) | |
| tree | cf13338fa4fd7072badf64f751f94abeeb437003 /sdk/extensions/physx/source/physics | |
| parent | linux build fix - all configs (diff) | |
| download | blast-b0c11962f6012430da3bcaa2727288046b33d648.tar.xz blast-b0c11962f6012430da3bcaa2727288046b33d648.zip | |
Changes for 1.1.1
See README.md
Diffstat (limited to 'sdk/extensions/physx/source/physics')
5 files changed, 66 insertions, 37 deletions
diff --git a/sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp b/sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp index b7831cb..ec0cf20 100644 --- a/sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp +++ b/sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp @@ -30,6 +30,7 @@ #include "NvBlastExtPxManager.h" #include "NvBlastExtPxFamily.h" #include "NvBlastExtPxActor.h" +#include "NvBlastExtPxAsset.h" #include "NvBlastExtPxListener.h" #include "NvBlastAssert.h" @@ -365,13 +366,13 @@ void ExtImpactDamageManagerImpl::damageActor(ExtPxActor* actor, PxShape* /*shape const float damage = m_settings.hardness > 0.f ? force.magnitude() / m_settings.hardness : 0.f; - const void* material = actor->getTkActor().getFamily().getMaterial(); + const NvBlastExtMaterial* material = actor->getFamily().getMaterial(); if (!material) { return; } - float normalizedDamage = reinterpret_cast<const NvBlastExtMaterial*>(material)->getNormalizedDamage(damage); + float normalizedDamage = material->getNormalizedDamage(damage); if (normalizedDamage == 0.f || normalizedDamage < m_settings.damageThresholdMin) { return; @@ -382,24 +383,22 @@ void ExtImpactDamageManagerImpl::damageActor(ExtPxActor* actor, PxShape* /*shape const float minDistance = m_settings.damageRadiusMax * normalizedDamage; const float maxDistance = minDistance * PxClamp<float>(m_settings.damageFalloffRadiusFactor, 1, 32); - NvBlastProgramParams programParams; - programParams.damageDescCount = 1; - programParams.material = nullptr; + NvBlastExtProgramParams programParams(nullptr); + programParams.material = material; + programParams.accelerator = actor->getFamily().getPxAsset().getAccelerator(); NvBlastDamageProgram program; if (m_settings.shearDamage) { - NvBlastExtShearDamageDesc desc[] = { - { - normalizedDamage, - { normal[0], normal[1], normal[2] }, - { position[0], position[1], position[2] }, - minDistance, - maxDistance - } + NvBlastExtShearDamageDesc desc = { + normalizedDamage, + { normal[0], normal[1], normal[2] }, + { position[0], position[1], position[2] }, + minDistance, + maxDistance }; - programParams.damageDescBuffer = &desc; + programParams.damageDesc = &desc; program.graphShaderFunction = NvBlastExtShearGraphShader; program.subgraphShaderFunction = NvBlastExtShearSubgraphShader; @@ -410,19 +409,17 @@ void ExtImpactDamageManagerImpl::damageActor(ExtPxActor* actor, PxShape* /*shape } else { - NvBlastExtRadialDamageDesc desc[] = { - { - normalizedDamage, - { position[0], position[1], position[2] }, - minDistance, - maxDistance - } + NvBlastExtImpactSpreadDamageDesc desc = { + normalizedDamage, + { position[0], position[1], position[2] }, + minDistance, + maxDistance }; - programParams.damageDescBuffer = &desc; + programParams.damageDesc = &desc; - program.graphShaderFunction = NvBlastExtFalloffGraphShader; - program.subgraphShaderFunction = NvBlastExtFalloffSubgraphShader; + program.graphShaderFunction = NvBlastExtImpactSpreadGraphShader; + program.subgraphShaderFunction = NvBlastExtImpactSpreadSubgraphShader; NvBlastFractureBuffers fractureEvents = m_fractureBuffers; actor->getTkActor().generateFracture(&fractureEvents, program, &programParams); diff --git a/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.cpp b/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.cpp index 948cd84..45e60d5 100644 --- a/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.cpp +++ b/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.cpp @@ -52,8 +52,9 @@ namespace Blast /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ExtPxAssetImpl::ExtPxAssetImpl(const ExtPxAssetDesc& desc, TkFramework& framework) + : m_accelerator(nullptr) #if !defined(NV_VC) || NV_VC >= 14 - : m_defaultActorDesc { 1.0f, nullptr, 1.0f, nullptr } + , m_defaultActorDesc { 1.0f, nullptr, 1.0f, nullptr } { #else { @@ -65,8 +66,9 @@ ExtPxAssetImpl::ExtPxAssetImpl(const ExtPxAssetDesc& desc, TkFramework& framewor } ExtPxAssetImpl::ExtPxAssetImpl(const TkAssetDesc& desc, ExtPxChunk* pxChunks, ExtPxSubchunk* pxSubchunks, TkFramework& framework) + : m_accelerator(nullptr) #if !defined(NV_VC) || NV_VC >= 14 - : m_defaultActorDesc{ 1.0f, nullptr, 1.0f, nullptr } + , m_defaultActorDesc{ 1.0f, nullptr, 1.0f, nullptr } { #else { @@ -79,6 +81,7 @@ ExtPxAssetImpl::ExtPxAssetImpl(const TkAssetDesc& desc, ExtPxChunk* pxChunks, Ex ExtPxAssetImpl::ExtPxAssetImpl(TkAsset* asset, ExtPxAssetDesc::ChunkDesc* chunks, uint32_t chunkCount) : m_tkAsset(asset) + , m_accelerator(nullptr) #if !defined(NV_VC) || NV_VC >= 14 , m_defaultActorDesc{ 1.0f, nullptr, 1.0f, nullptr } { @@ -94,6 +97,7 @@ ExtPxAssetImpl::ExtPxAssetImpl(TkAsset* asset, ExtPxAssetDesc::ChunkDesc* chunks ExtPxAssetImpl::ExtPxAssetImpl(TkAsset* asset) : m_tkAsset(asset) + , m_accelerator(nullptr) #if !defined(NV_VC) || NV_VC >= 14 , m_defaultActorDesc { 1.0f, nullptr, 1.0f, nullptr } { diff --git a/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.h b/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.h index 11a36b3..7d43c53 100644 --- a/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.h +++ b/sdk/extensions/physx/source/physics/NvBlastExtPxAssetImpl.h @@ -105,6 +105,16 @@ public: virtual void setUniformHealth(bool enabled) override; + virtual void setAccelerator(NvBlastExtDamageAccelerator* accelerator) override + { + m_accelerator = accelerator; + } + + virtual NvBlastExtDamageAccelerator* getAccelerator() const override + { + return m_accelerator; + } + //////// internal public methods //////// @@ -137,12 +147,13 @@ private: //////// data //////// - TkAsset* m_tkAsset; - Array<ExtPxChunk>::type m_chunks; - Array<ExtPxSubchunk>::type m_subchunks; - Array<float>::type m_bondHealths; - Array<float>::type m_supportChunkHealths; - NvBlastActorDesc m_defaultActorDesc; + TkAsset* m_tkAsset; + Array<ExtPxChunk>::type m_chunks; + Array<ExtPxSubchunk>::type m_subchunks; + Array<float>::type m_bondHealths; + Array<float>::type m_supportChunkHealths; + NvBlastExtDamageAccelerator* m_accelerator; + NvBlastActorDesc m_defaultActorDesc; }; } // namespace Blast diff --git a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.cpp b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.cpp index 09e26d4..1682d5e 100644 --- a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.cpp +++ b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.cpp @@ -50,8 +50,14 @@ namespace Blast { -ExtPxFamilyImpl::ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, const ExtPxAsset& pxAsset) - : m_manager(manager), m_tkFamily(tkFamily), m_pxAsset(pxAsset), m_pxShapeDescTemplate(nullptr), m_pxActorDescTemplate(nullptr), m_isSpawned(false) +ExtPxFamilyImpl::ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, ExtPxAsset& pxAsset) + : m_manager(manager) + , m_tkFamily(tkFamily) + , m_pxAsset(pxAsset) + , m_pxShapeDescTemplate(nullptr) + , m_pxActorDescTemplate(nullptr) + , m_material(nullptr) + , m_isSpawned(false) { m_subchunkShapes.resize(static_cast<uint32_t>(m_pxAsset.getSubchunkCount())); diff --git a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h index 356e2c7..bab8a60 100644 --- a/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h +++ b/sdk/extensions/physx/source/physics/NvBlastExtPxFamilyImpl.h @@ -60,7 +60,7 @@ public: //////// ctor //////// - ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, const ExtPxAsset& pxAsset); + ExtPxFamilyImpl(ExtPxManagerImpl& manager, TkFamily& tkFamily, ExtPxAsset& pxAsset); ~ExtPxFamilyImpl(); virtual void release() override; @@ -98,7 +98,7 @@ public: return m_subchunkShapes.begin(); } - virtual const ExtPxAsset& getPxAsset() const override + virtual ExtPxAsset& getPxAsset() const override { return m_pxAsset; } @@ -128,6 +128,16 @@ public: 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); @@ -161,10 +171,11 @@ private: ExtPxManagerImpl& m_manager; TkFamily& m_tkFamily; - const ExtPxAsset& m_pxAsset; + 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; |