aboutsummaryrefslogtreecommitdiff
path: root/sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp
diff options
context:
space:
mode:
authorBryan Galdrikian <[email protected]>2017-10-24 15:25:02 -0700
committerBryan Galdrikian <[email protected]>2017-10-24 15:25:02 -0700
commitb0c11962f6012430da3bcaa2727288046b33d648 (patch)
treecf13338fa4fd7072badf64f751f94abeeb437003 /sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp
parentlinux build fix - all configs (diff)
downloadblast-b0c11962f6012430da3bcaa2727288046b33d648.tar.xz
blast-b0c11962f6012430da3bcaa2727288046b33d648.zip
Changes for 1.1.1
See README.md
Diffstat (limited to 'sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp')
-rw-r--r--sdk/extensions/physx/source/physics/NvBlastExtImpactDamageManager.cpp45
1 files changed, 21 insertions, 24 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);