diff --git a/include/Engine/Rendering/ModelJob.h b/include/Engine/Rendering/ModelJob.h index dc4c8cb5..085db98e 100644 --- a/include/Engine/Rendering/ModelJob.h +++ b/include/Engine/Rendering/ModelJob.h @@ -121,12 +121,17 @@ struct ModelJob : RenderJob FillPercentage = fillPercentage; IsShielded = isShielded; + + if (world->HasComponent(Entity, "Unpickable")) { + NotPickable = true; + } + if (model->IsSkinned()) { Skeleton = Model->m_RawModel->m_Skeleton; if (Skeleton != nullptr) { - EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID); + if(Skeleton->BlendTrees.find(entityWrapper) != Skeleton->BlendTrees.end()) { BlendTree = Skeleton->BlendTrees.at(entityWrapper); @@ -164,6 +169,7 @@ struct ModelJob : RenderJob float FillPercentage = 0.0; bool IsShielded; bool Shadow; + bool NotPickable = false; void CalculateHash() override { diff --git a/resources/Schema/Components.xsd b/resources/Schema/Components.xsd index bc6da932..7210ad3f 100644 --- a/resources/Schema/Components.xsd +++ b/resources/Schema/Components.xsd @@ -68,4 +68,5 @@ + \ No newline at end of file diff --git a/resources/Schema/Components/Unpickable.xml b/resources/Schema/Components/Unpickable.xml new file mode 100644 index 00000000..07fe9a90 --- /dev/null +++ b/resources/Schema/Components/Unpickable.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/resources/Schema/Components/Unpickable.xsd b/resources/Schema/Components/Unpickable.xsd new file mode 100644 index 00000000..114886a8 --- /dev/null +++ b/resources/Schema/Components/Unpickable.xsd @@ -0,0 +1,11 @@ + + + + + + + + Makes the entity unpickable + + + \ No newline at end of file diff --git a/resources/Schema/Types/Entity.xsd b/resources/Schema/Types/Entity.xsd index c0ac15aa..91592163 100644 --- a/resources/Schema/Types/Entity.xsd +++ b/resources/Schema/Types/Entity.xsd @@ -71,6 +71,7 @@ + diff --git a/src/Engine/Rendering/PickingPass.cpp b/src/Engine/Rendering/PickingPass.cpp index 820c184e..f6343101 100644 --- a/src/Engine/Rendering/PickingPass.cpp +++ b/src/Engine/Rendering/PickingPass.cpp @@ -76,6 +76,11 @@ void PickingPass::Draw(RenderScene& scene) auto modelJob = std::dynamic_pointer_cast(job); if (modelJob) { + if(modelJob->NotPickable) { + continue; + } + + int pickColor[2] = { m_ColorCounter[0], m_ColorCounter[1] }; PickingInfo pickInfo;