/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/Engine/Core/Physics/SurfaceResource.h
74 строки
3 KB
Jan Krassnigg
Improved code documentation: Core, Texture, Utilities (#1666)
23 сен 2025, 09:56
Не верифицирован
23 сен 2025, 09:56
a9f6901
Код
Авторство
О чём код?
#pragma once #include <Core/CoreDLL.h> #include <Core/Physics/SurfaceResourceDescriptor.h> #include <Core/ResourceManager/Resource.h> #include <Core/World/Declarations.h> #include <Foundation/Containers/DynamicArray.h> #include <Foundation/Reflection/Reflection.h> class ezWorld; class ezUuid; /// \brief Event data for surface resource lifecycle notifications. struct ezSurfaceResourceEvent { enum class Type { Created, Destroyed }; Type m_Type; ezSurfaceResource* m_pSurface = nullptr; }; /// \brief Resource representing a physics surface with material properties and interaction behaviors. /// /// Defines how objects interact with a surface through collision responses, sound effects, /// particle effects, and other configurable behaviors. Supports inheritance from base surfaces /// and provides integration with physics engines through material pointers. class EZ_CORE_DLL ezSurfaceResource : public ezResource { EZ_ADD_DYNAMIC_REFLECTION(ezSurfaceResource, ezResource); EZ_RESOURCE_DECLARE_COMMON_CODE(ezSurfaceResource); EZ_RESOURCE_DECLARE_CREATEABLE(ezSurfaceResource, ezSurfaceResourceDescriptor); public: ezSurfaceResource(); ~ezSurfaceResource(); const ezSurfaceResourceDescriptor& GetDescriptor() const { return m_Descriptor; } static ezEvent<const ezSurfaceResourceEvent&, ezMutex> s_Events; void* m_pPhysicsMaterialPhysX = nullptr; void* m_pPhysicsMaterialJolt = nullptr; /// \brief Spawns the prefab that was defined for the given interaction at the given position and using the configured orientation. /// Returns false, if the interaction type was not defined in this surface or any of its base surfaces bool InteractWithSurface(ezWorld* pWorld, ezGameObjectHandle hObject, const ezVec3& vPosition, const ezVec3& vSurfaceNormal, const ezVec3& vIncomingDirection, const ezTempHashedString& sInteraction, const ezUInt16* pOverrideTeamID, float fImpulseSqr = 0.0f) const; bool IsBasedOn(const ezSurfaceResource* pThisOrBaseSurface) const; bool IsBasedOn(const ezSurfaceResourceHandle hThisOrBaseSurface) const; private: virtual ezResourceLoadDesc UnloadData(Unload WhatToUnload) override; virtual ezResourceLoadDesc UpdateContent(ezStreamReader* Stream) override; virtual void UpdateMemoryUsage(MemoryUsage& out_NewMemoryUsage) override; private: static const ezSurfaceInteraction* FindInteraction(const ezSurfaceResource* pCurSurf, ezUInt64 uiHash, float fImpulseSqr, float& out_fImpulseParamValue); ezSurfaceResourceDescriptor m_Descriptor; struct SurfInt { ezUInt64 m_uiInteractionTypeHash = 0; const ezSurfaceInteraction* m_pInteraction; }; ezDynamicArray<SurfInt> m_Interactions; };