feat(physics): wire physx sdk into build
This commit is contained in:
44
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenClearDefines.h
vendored
Normal file
44
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenClearDefines.h
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
#undef OMNI_PVD_CLASS_BEGIN
|
||||
#undef OMNI_PVD_CLASS_DERIVED_BEGIN
|
||||
#undef OMNI_PVD_CLASS_UNTYPED_BEGIN
|
||||
#undef OMNI_PVD_CLASS_UNTYPED_DERIVED_BEGIN
|
||||
#undef OMNI_PVD_CLASS_END
|
||||
#undef OMNI_PVD_ENUM_BEGIN
|
||||
#undef OMNI_PVD_ENUM_END
|
||||
#undef OMNI_PVD_ATTRIBUTE
|
||||
#undef OMNI_PVD_ATTRIBUTE_ARRAY_FIXED_SIZE
|
||||
#undef OMNI_PVD_ATTRIBUTE_ARRAY_VARIABLE_SIZE
|
||||
#undef OMNI_PVD_ATTRIBUTE_STRING
|
||||
#undef OMNI_PVD_ATTRIBUTE_UNIQUE_LIST
|
||||
#undef OMNI_PVD_ATTRIBUTE_FLAG
|
||||
#undef OMNI_PVD_ENUM_VALUE_EXPLICIT
|
||||
#undef OMNI_PVD_ENUM_VALUE
|
||||
455
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenCreateRegistrationStruct.h
vendored
Normal file
455
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenCreateRegistrationStruct.h
vendored
Normal file
@@ -0,0 +1,455 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
//
|
||||
// The macro logic in this header (and the headers CmOmniPvdAutoGenRegisterData.h and
|
||||
// and CmOmniPvdAutoGenSetData.h) is meant as a helper to automatically generate a
|
||||
// structure that stores all PVD class and attribute handles for a module, handles the
|
||||
// registration logic and adds methods for object creation, setting attribute
|
||||
// values etc. At the core of the generation logic is a user defined header file
|
||||
// that describes the classes and attributes as follows:
|
||||
//
|
||||
// OMNI_PVD_CLASS_BEGIN(MyClass1)
|
||||
// OMNI_PVD_ATTRIBUTE(MyClass1, myAttr1, PxReal, OmniPvdDataType::eFLOAT32)
|
||||
// OMNI_PVD_ATTRIBUTE(MyClass1, myAttr2, PxReal, OmniPvdDataType::eFLOAT32)
|
||||
// OMNI_PVD_CLASS_END(MyClass1)
|
||||
//
|
||||
// OMNI_PVD_CLASS_UNTYPED_BEGIN(MyClass2)
|
||||
// OMNI_PVD_ATTRIBUTE(MyClass2, myAttr1, PxU32, OmniPvdDataType::eUINT32)
|
||||
// OMNI_PVD_CLASS_END(MyClass2)
|
||||
//
|
||||
// The structure to create from this description will look somewhat like this:
|
||||
//
|
||||
// struct MyModulePvdObjectsDescriptor
|
||||
// {
|
||||
//
|
||||
// struct PvdMyClass1
|
||||
// {
|
||||
// typedef MyClass1 ObjectType;
|
||||
// static OmniPvdObjectHandle getObjectHandle(const ObjectType& objectRef) { return reinterpret_cast<OmniPvdObjectHandle>(&objectRef); }
|
||||
//
|
||||
// OmniPvdClassHandle classHandle;
|
||||
//
|
||||
// void createInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef) const
|
||||
// {
|
||||
// writer.createObject(contextHandle, classHandle, getObjectHandle(objectRef), NULL);
|
||||
// }
|
||||
//
|
||||
// static void destroyInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef)
|
||||
// {
|
||||
// writer.destroyObject(contextHandle, getObjectHandle(objectRef));
|
||||
// }
|
||||
//
|
||||
// OmniPvdAttributeHandle myAttr1;
|
||||
// void set_myAttr1_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const PxReal& value) const
|
||||
// {
|
||||
// writer.setAttribute(contextHandle, getObjectHandle(objectRef), myAttr1, reinterpret_cast<const uint8_t*>(&value), getOmniPvdDataTypeSize<OmniPvdDataType::eFLOAT32>());
|
||||
// }
|
||||
//
|
||||
// OmniPvdAttributeHandle myAttr2;
|
||||
// void set_myAttr2_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const PxReal& value) const
|
||||
// {
|
||||
// writer.setAttribute(contextHandle, getObjectHandle(objectRef), myAttr2, reinterpret_cast<const uint8_t*>(&value), getOmniPvdDataTypeSize<OmniPvdDataType::eFLOAT32>());
|
||||
// }
|
||||
// };
|
||||
// PvdMyClass1 pvdMyClass1;
|
||||
//
|
||||
//
|
||||
// struct PvdMyClass2
|
||||
// {
|
||||
// typedef OmniPvdObjectHandle ObjectType;
|
||||
// static OmniPvdObjectHandle getObjectHandle(const ObjectType& objectHandle) { return objectHandle; }
|
||||
//
|
||||
// OmniPvdClassHandle classHandle;
|
||||
//
|
||||
// void createInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef) const
|
||||
// {
|
||||
// writer.createObject(contextHandle, classHandle, getObjectHandle(objectRef), NULL);
|
||||
// }
|
||||
//
|
||||
// static void destroyInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef)
|
||||
// {
|
||||
// writer.destroyObject(contextHandle, getObjectHandle(objectRef));
|
||||
// }
|
||||
//
|
||||
// OmniPvdAttributeHandle myAttr1;
|
||||
// void set_myAttr1_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const PxU32& value) const
|
||||
// {
|
||||
// writer.setAttribute(contextHandle, getObjectHandle(objectRef), myAttr1, reinterpret_cast<const uint8_t*>(&value), getOmniPvdDataTypeSize<OmniPvdDataType::eUINT32>());
|
||||
// }
|
||||
// };
|
||||
// PvdMyClass2 pvdMyClass2;
|
||||
//
|
||||
//
|
||||
// void myRegisterDataMethod(OmniPvdWriter& writer)
|
||||
// {
|
||||
// pvdMyClass1.classHandle = writer.registerClass("MyClass1");
|
||||
// pvdMyClass1.myAttr1 = writer.registerAttribute(pvdMyClass1.classHandle, "myAttr1", OmniPvdDataType::eFLOAT32, 1);
|
||||
// pvdMyClass1.myAttr2 = writer.registerAttribute(pvdMyClass1.classHandle, "myAttr2", OmniPvdDataType::eFLOAT32, 1);
|
||||
//
|
||||
// pvdMyClass2.classHandle = writer.registerClass("MyClass2");
|
||||
// pvdMyClass2.myAttr1 = writer.registerAttribute(pvdMyClass2.classHandle, "myAttr1", OmniPvdDataType::eUINT32, 1);
|
||||
// }
|
||||
//
|
||||
// };
|
||||
//
|
||||
// Assuming the class and attribute definitions are in a file called MyModulePvdObjectDefinitions.h,
|
||||
// the described structure can be generated like this:
|
||||
//
|
||||
// struct MyModulePvdObjectsDescriptor
|
||||
// {
|
||||
//
|
||||
// #include "CmOmniPvdAutoGenCreateRegistrationStruct.h"
|
||||
// #include "MyModulePvdObjectDefinitions.h"
|
||||
// #include "CmOmniPvdAutoGenClearDefines.h"
|
||||
//
|
||||
// // custom registration data related members that are not auto-generated can go here, for example
|
||||
//
|
||||
//
|
||||
// void myRegisterDataMethod(OmniPvdWriter& writer)
|
||||
// {
|
||||
// #define OMNI_PVD_WRITER_VAR writer
|
||||
//
|
||||
// #include "CmOmniPvdAutoGenRegisterData.h"
|
||||
// #include "MyModulePvdObjectDefinitions.h"
|
||||
// #include "CmOmniPvdAutoGenClearDefines.h"
|
||||
//
|
||||
// // custom registration code that is not auto-generated can go here too
|
||||
//
|
||||
// #undef OMNI_PVD_WRITER_VAR
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// As can be seen, CmOmniPvdAutoGenCreateRegistrationStruct.h is responsible for generating the structs,
|
||||
// members and setter methods. CmOmniPvdAutoGenRegisterData.h is responsible for generating the registration
|
||||
// code (note that defining OMNI_PVD_WRITER_VAR is important in this context since it is used inside
|
||||
// CmOmniPvdAutoGenRegisterData.h)
|
||||
//
|
||||
// Note that it is the user's responsibility to include the necessary headers before applying these helpers
|
||||
// (for example, OmniPvdDefines.h etc.).
|
||||
//
|
||||
// Last but not least, the helpers in CmOmniPvdAutoGenSetData.h provide a way to use this structure to
|
||||
// set values of attributes, create class instances etc. An example usage is shown below:
|
||||
//
|
||||
// OmniPvdContextHandle contextHandle; // assuming this holds the context the objects belong to
|
||||
// MyClass1 myClass1Instance;
|
||||
// PxReal value; // assuming this holds the value to set the attribute to
|
||||
//
|
||||
// OMNI_PVD_CREATE(contextHandle, MyClass1, myClass1Instance);
|
||||
// OMNI_PVD_SET(contextHandle, MyClass1, myAttr1, myClass1Instance, value);
|
||||
//
|
||||
// To use these helper macros, the following things need to be defined before including CmOmniPvdAutoGenSetData.h:
|
||||
//
|
||||
// #define OMNI_PVD_GET_WRITER(writer)
|
||||
// OmniPvdWriter* writer = GetPvdWriterForMyModule();
|
||||
//
|
||||
// #define OMNI_PVD_GET_REGISTRATION_DATA(regData)
|
||||
// MyModulePvdObjectsDescriptor* regData = GetPvdObjectsDescForMyModule();
|
||||
//
|
||||
// #include "CmOmniPvdAutoGenSetData.h"
|
||||
//
|
||||
// GetPvdWriterForMyModule() and GetPvdObjectsDescForMyModule() just stand for the logic the user needs
|
||||
// to provide to access the OmniPvdWriter object and the generated description structure. In the given example,
|
||||
// the variables "writer" and "regData" need to be assigned but the code to do so will be user specific.
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_INTERNALS \
|
||||
\
|
||||
OmniPvdClassHandle classHandle; \
|
||||
\
|
||||
void createInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef) const \
|
||||
{ \
|
||||
writer.createObject(contextHandle, classHandle, getObjectHandle(objectRef), NULL); \
|
||||
} \
|
||||
\
|
||||
static void destroyInstance(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef) \
|
||||
{ \
|
||||
writer.destroyObject(contextHandle, getObjectHandle(objectRef)); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a PVD class.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_CLASS_END
|
||||
//
|
||||
// classID: name of the class to register in PVD (note: has to be an existing C++ class)
|
||||
//
|
||||
#define OMNI_PVD_CLASS_BEGIN(classID) \
|
||||
\
|
||||
struct Pvd##classID \
|
||||
{ \
|
||||
typedef classID ObjectType; \
|
||||
\
|
||||
static OmniPvdObjectHandle getObjectHandle(const ObjectType& objectRef) { return reinterpret_cast<OmniPvdObjectHandle>(&objectRef); } \
|
||||
\
|
||||
OMNI_PVD_CLASS_INTERNALS
|
||||
|
||||
|
||||
//
|
||||
// Define a PVD class that is derived from another class.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_CLASS_END
|
||||
//
|
||||
// classID: see OMNI_PVD_CLASS_BEGIN
|
||||
// baseClassID: the name of the class to derive from
|
||||
//
|
||||
#define OMNI_PVD_CLASS_DERIVED_BEGIN(classID, baseClassID) OMNI_PVD_CLASS_BEGIN(classID)
|
||||
|
||||
|
||||
//
|
||||
// Define a PVD class.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_CLASS_END
|
||||
//
|
||||
// classID: name of the class to register in PVD (note: the class does not need to match an actually existing
|
||||
// class but still needs to follow C++ naming conventions)
|
||||
//
|
||||
#define OMNI_PVD_CLASS_UNTYPED_BEGIN(classID) \
|
||||
\
|
||||
struct Pvd##classID \
|
||||
{ \
|
||||
typedef OmniPvdObjectHandle ObjectType; \
|
||||
\
|
||||
static OmniPvdObjectHandle getObjectHandle(const ObjectType& objectHandle) { return objectHandle; } \
|
||||
\
|
||||
OMNI_PVD_CLASS_INTERNALS
|
||||
|
||||
|
||||
//
|
||||
// Define a PVD class that is derived from another class.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_CLASS_END
|
||||
//
|
||||
// classID: see OMNI_PVD_CLASS_UNTYPED_BEGIN
|
||||
// baseClassID: the name of the class to derive from
|
||||
//
|
||||
#define OMNI_PVD_CLASS_UNTYPED_DERIVED_BEGIN(classID, baseClassID) OMNI_PVD_CLASS_UNTYPED_BEGIN(classID)
|
||||
|
||||
|
||||
//
|
||||
// See OMNI_PVD_CLASS_BEGIN for more info.
|
||||
//
|
||||
#define OMNI_PVD_CLASS_END(classID) \
|
||||
\
|
||||
}; \
|
||||
Pvd##classID pvd##classID;
|
||||
|
||||
|
||||
//
|
||||
// Define a PVD enum class.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_ENUM_END
|
||||
//
|
||||
// enumID: name of the enum class (has to follow C++ naming conventions)
|
||||
//
|
||||
#define OMNI_PVD_ENUM_BEGIN(enumID) \
|
||||
\
|
||||
struct Pvd##enumID \
|
||||
{ \
|
||||
OmniPvdClassHandle classHandle;
|
||||
|
||||
|
||||
//
|
||||
// See OMNI_PVD_ENUM_BEGIN
|
||||
//
|
||||
#define OMNI_PVD_ENUM_END(enumID) OMNI_PVD_CLASS_END(enumID)
|
||||
|
||||
|
||||
//
|
||||
// Define a simple PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// classID: name of the class to add the attribute to (see OMNI_PVD_CLASS_BEGIN)
|
||||
// attributeID: name of the attribute (has to follow C++ naming conventions)
|
||||
// valueType: attribute data type (int, float etc.)
|
||||
// pvdDataType: PVD attribute data type (see OmniPvdDataType)
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE(classID, attributeID, valueType, pvdDataType) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
void set_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const valueType& value) const \
|
||||
{ \
|
||||
PX_ASSERT(sizeof(valueType) == getOmniPvdDataTypeSize<pvdDataType>()); \
|
||||
writer.setAttribute(contextHandle, getObjectHandle(objectRef), attributeID, reinterpret_cast<const uint8_t*>(&value), getOmniPvdDataTypeSize<pvdDataType>()); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a fixed size multi-value PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// The attribute is a fixed size array of values of the given pvd data type.
|
||||
//
|
||||
// entryCount: number of entries the array will hold.
|
||||
//
|
||||
// See OMNI_PVD_ATTRIBUTE for the other parameters. Note that valueType is
|
||||
// expected to hold a type that matches the size of the whole array, i.e.,
|
||||
// sizeof(valueType) == entryCount * getOmniPvdDataTypeSize<pvdDataType>()
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE_ARRAY_FIXED_SIZE(classID, attributeID, valueType, pvdDataType, entryCount) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
void set_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const valueType& value) const \
|
||||
{ \
|
||||
const uint32_t byteSize = static_cast<uint32_t>(sizeof(valueType)); \
|
||||
PX_ASSERT(byteSize == (entryCount * getOmniPvdDataTypeSize<pvdDataType>())); \
|
||||
writer.setAttribute(contextHandle, getObjectHandle(objectRef), attributeID, reinterpret_cast<const uint8_t*>(&value), byteSize); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a variable size multi-value PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// The attribute is a variable size array of values of the given pvd data type.
|
||||
//
|
||||
// See OMNI_PVD_ATTRIBUTE for a parameter description. Note that valueType is expected
|
||||
// to define the type of a single array element, for example, int for an integer array.
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE_ARRAY_VARIABLE_SIZE(classID, attributeID, valueType, pvdDataType) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
void set_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const valueType* values, uint32_t valueCount) const \
|
||||
{ \
|
||||
const uint32_t byteSize = valueCount * getOmniPvdDataTypeSize<pvdDataType>(); \
|
||||
writer.setAttribute(contextHandle, getObjectHandle(objectRef), attributeID, reinterpret_cast<const uint8_t*>(values), byteSize); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a string PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// See OMNI_PVD_ATTRIBUTE for a parameter description.
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE_STRING(classID, attributeID) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
void set_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const char* values, uint32_t valueCount) const \
|
||||
{ \
|
||||
const uint32_t byteSize = valueCount; \
|
||||
writer.setAttribute(contextHandle, getObjectHandle(objectRef), attributeID, reinterpret_cast<const uint8_t*>(values), byteSize); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a unique list PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// See OMNI_PVD_ATTRIBUTE for a parameter description. Note that valueType is expected
|
||||
// to define the class the list will hold pointers to. If it shall hold pointers to
|
||||
// instances of class MyClass, then the valueType is MyClass.
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE_UNIQUE_LIST(classID, attributeID, valueType) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
\
|
||||
void addTo_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const valueType& value) const \
|
||||
{ \
|
||||
const OmniPvdObjectHandle objHandle = reinterpret_cast<OmniPvdObjectHandle>(&value); \
|
||||
const uint8_t* ptr = reinterpret_cast<const uint8_t*>(&objHandle); \
|
||||
writer.addToUniqueListAttribute(contextHandle, getObjectHandle(objectRef), attributeID, ptr, sizeof(OmniPvdObjectHandle)); \
|
||||
} \
|
||||
\
|
||||
void removeFrom_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const valueType& value) const \
|
||||
{ \
|
||||
const OmniPvdObjectHandle objHandle = reinterpret_cast<OmniPvdObjectHandle>(&value); \
|
||||
const uint8_t* ptr = reinterpret_cast<const uint8_t*>(&objHandle); \
|
||||
writer.removeFromUniqueListAttribute(contextHandle, getObjectHandle(objectRef), attributeID, ptr, sizeof(OmniPvdObjectHandle)); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define a flag PVD attribute.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_CLASS_BEGIN, OMNI_PVD_CLASS_END
|
||||
// sequence
|
||||
//
|
||||
// enumType: the enum type this attribute refers to
|
||||
// enumID: the name of the enum class that describes the enum (see OMNI_PVD_ENUM_BEGIN)
|
||||
//
|
||||
// See OMNI_PVD_ATTRIBUTE for the other parameters.
|
||||
//
|
||||
#define OMNI_PVD_ATTRIBUTE_FLAG(classID, attributeID, enumType, enumID) \
|
||||
\
|
||||
OmniPvdAttributeHandle attributeID; \
|
||||
void set_##attributeID##_(OmniPvdWriter& writer, OmniPvdContextHandle contextHandle, const ObjectType& objectRef, const enumType& value) const \
|
||||
{ \
|
||||
writer.setAttribute(contextHandle, getObjectHandle(objectRef), attributeID, reinterpret_cast<const uint8_t*>(&value), sizeof(enumType)); \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Define an enum entry.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_ENUM_BEGIN, OMNI_PVD_ENUM_END
|
||||
// sequence
|
||||
//
|
||||
// enumID: name of the enum class to add an entry to (see OMNI_PVD_ENUM_BEGIN)
|
||||
// enumEntryID: the name of the enum entry to add to the enum class (has to follow C++ naming conventions)
|
||||
// value: the enum value
|
||||
//
|
||||
#define OMNI_PVD_ENUM_VALUE_EXPLICIT(enumID, enumEntryID, value)
|
||||
|
||||
|
||||
//
|
||||
// Define an enum entry.
|
||||
//
|
||||
// Note: needs to be placed between a OMNI_PVD_ENUM_BEGIN, OMNI_PVD_ENUM_END
|
||||
// sequence
|
||||
//
|
||||
// See OMNI_PVD_ENUM_VALUE_EXPLICIT for a description of the parameters. This shorter form expects the enum to
|
||||
// have a C++ definition of the form:
|
||||
//
|
||||
// struct <enumID>
|
||||
// {
|
||||
// enum Enum
|
||||
// {
|
||||
// <enumEntryID> = ...
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// such that the value can be derived using: <enumID>::<enumEntryID>
|
||||
//
|
||||
#define OMNI_PVD_ENUM_VALUE(enumID, enumEntryID) \
|
||||
\
|
||||
OMNI_PVD_ENUM_VALUE_EXPLICIT(enumID, enumEntryID, enumID::enumEntryID)
|
||||
102
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenRegisterData.h
vendored
Normal file
102
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenRegisterData.h
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
//
|
||||
// The macro logic in this header will generate the PVD class/attribute registration
|
||||
// code based on a class/attribute definition file. OMNI_PVD_WRITER_VAR needs to be
|
||||
// defined before including this header. OMNI_PVD_WRITER_VAR has to represent the
|
||||
// variable that holds a reference to a OmniPvdWriter instance. See
|
||||
// CmOmniPvdAutoGenCreateRegistrationStruct.h for a more detailed overview of the
|
||||
// whole approach. The various parameters are described there too.
|
||||
//
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_BEGIN(classID) \
|
||||
\
|
||||
pvd##classID.classHandle = OMNI_PVD_WRITER_VAR.registerClass(#classID);
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_DERIVED_BEGIN(classID, baseClassID) \
|
||||
\
|
||||
pvd##classID.classHandle = OMNI_PVD_WRITER_VAR.registerClass(#classID, pvd##baseClassID.classHandle);
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_UNTYPED_BEGIN(classID) OMNI_PVD_CLASS_BEGIN(classID)
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_UNTYPED_DERIVED_BEGIN(classID, baseClassID) OMNI_PVD_CLASS_DERIVED_BEGIN(classID, baseClassID)
|
||||
|
||||
|
||||
#define OMNI_PVD_CLASS_END(classID)
|
||||
|
||||
|
||||
#define OMNI_PVD_ENUM_BEGIN(enumID) OMNI_PVD_CLASS_BEGIN(enumID)
|
||||
|
||||
|
||||
#define OMNI_PVD_ENUM_END(enumID) OMNI_PVD_CLASS_END(enumID)
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE(classID, attributeID, valueType, pvdDataType) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerAttribute(pvd##classID.classHandle, #attributeID, pvdDataType, 1);
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE_ARRAY_FIXED_SIZE(classID, attributeID, valueType, pvdDataType, entryCount) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerAttribute(pvd##classID.classHandle, #attributeID, pvdDataType, entryCount);
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE_ARRAY_VARIABLE_SIZE(classID, attributeID, valueType, pvdDataType) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerAttribute(pvd##classID.classHandle, #attributeID, pvdDataType, 0);
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE_STRING(classID, attributeID) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerAttribute(pvd##classID.classHandle, #attributeID, OmniPvdDataType::eSTRING, 1);
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE_UNIQUE_LIST(classID, attributeID, valueType) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerUniqueListAttribute(pvd##classID.classHandle, #attributeID, OmniPvdDataType::eOBJECT_HANDLE);
|
||||
|
||||
|
||||
#define OMNI_PVD_ATTRIBUTE_FLAG(classID, attributeID, enumType, enumID) \
|
||||
\
|
||||
pvd##classID.attributeID = OMNI_PVD_WRITER_VAR.registerFlagsAttribute(pvd##classID.classHandle, #attributeID, pvd##enumID.classHandle);
|
||||
|
||||
|
||||
#define OMNI_PVD_ENUM_VALUE_EXPLICIT(enumID, enumEntryID, value) \
|
||||
\
|
||||
OMNI_PVD_WRITER_VAR.registerEnumValue(pvd##enumID.classHandle, #enumEntryID, value);
|
||||
|
||||
|
||||
#define OMNI_PVD_ENUM_VALUE(enumID, enumEntryID) \
|
||||
\
|
||||
OMNI_PVD_ENUM_VALUE_EXPLICIT(enumID, enumEntryID, enumID::enumEntryID)
|
||||
282
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenSetData.h
vendored
Normal file
282
engine/third_party/physx/source/common/include/omnipvd/CmOmniPvdAutoGenSetData.h
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
//
|
||||
// This header provides macros to register PVD object instances, to set PVD attribute
|
||||
// values etc. This only works in combination with a registration structure that was
|
||||
// defined using the logic in CmOmniPvdAutoGenCreateRegistrationStruct.h.
|
||||
// OMNI_PVD_GET_WRITER and OMNI_PVD_GET_REGISTRATION_DATA have to be defined before
|
||||
// including this header. These two macros need to fetch and assign the pointer to
|
||||
// the OmniPvdWriter instance and the registration structure instance respectively.
|
||||
// See CmOmniPvdAutoGenCreateRegistrationStruct.h for a more detailed overview of the
|
||||
// whole approach.
|
||||
//
|
||||
|
||||
|
||||
#if PX_SUPPORT_OMNI_PVD
|
||||
|
||||
//
|
||||
// It is recommended to use this macro when multiple PVD attributes get written
|
||||
// in one go since the writer and registration structure is then fetched once only.
|
||||
//
|
||||
// Note: has to be paired with OMNI_PVD_WRITE_SCOPE_END
|
||||
//
|
||||
// writer: a pointer to the OmniPvdWriter instance will get assigned to a variable
|
||||
// named "writer"
|
||||
// regData: a pointer to the registration structure instance will get assigned to
|
||||
// a variable named "regData"
|
||||
//
|
||||
// General usage would look like this:
|
||||
//
|
||||
// OMNI_PVD_WRITE_SCOPE_BEGIN(writer, regData)
|
||||
// OMNI_PVD_SET_EXPLICIT(writer, regData, ...)
|
||||
// OMNI_PVD_SET_EXPLICIT(writer, regData, ...)
|
||||
// ...
|
||||
// OMNI_PVD_WRITE_SCOPE_END
|
||||
//
|
||||
#define OMNI_PVD_WRITE_SCOPE_BEGIN(writer, regData) \
|
||||
\
|
||||
OMNI_PVD_GET_WRITER(writer) \
|
||||
if (writer != NULL) \
|
||||
{ \
|
||||
OMNI_PVD_GET_REGISTRATION_DATA(regData)
|
||||
|
||||
//
|
||||
// See OMNI_PVD_WRITE_SCOPE_BEGIN for more info.
|
||||
//
|
||||
#define OMNI_PVD_WRITE_SCOPE_END \
|
||||
\
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Create a PVD object instance using the provided pointers to the writer and registration
|
||||
// structure instance.
|
||||
//
|
||||
// See OMNI_PVD_SET_EXPLICIT and OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_CREATE_EXPLICIT(writer, regData, contextHandle, classID, objectRef) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.createInstance(*writer, contextHandle, objectRef);
|
||||
|
||||
|
||||
//
|
||||
// Create a PVD object instance.
|
||||
//
|
||||
// Note: if attribute values are to be set directly after the object instance registration,
|
||||
// it is recommended to use OMNI_PVD_WRITE_SCOPE_BEGIN & OMNI_PVD_CREATE_EXPLICIT etc. instead
|
||||
//
|
||||
// See OMNI_PVD_SET_EXPLICIT and OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_CREATE(contextHandle, classID, objectRef) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_CREATE_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, objectRef); \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Destroy a PVD object instance using the provided pointer to the writer instance.
|
||||
//
|
||||
// See OMNI_PVD_SET_EXPLICIT and OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_DESTROY_EXPLICIT(writer, regData, contextHandle, classID, objectRef) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.destroyInstance(*writer, contextHandle, objectRef);
|
||||
|
||||
|
||||
//
|
||||
// Destroy a PVD object instance.
|
||||
//
|
||||
// See OMNI_PVD_SET_EXPLICIT and OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_DESTROY(contextHandle, classID, objectRef) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_DESTROY_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, objectRef); \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Set a PVD attribute value using the provided pointers to the writer and registration
|
||||
// structure instance.
|
||||
//
|
||||
// writer: the variable named "writer" has to hold a pointer to the OmniPvdWriter instance
|
||||
// regData: the variable named "regData" has to hold a pointer to the registration
|
||||
// structure
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the other parameters.
|
||||
//
|
||||
#define OMNI_PVD_SET_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.set_##attributeID##_(*writer, contextHandle, objectRef, valueRef);
|
||||
|
||||
|
||||
//
|
||||
// Set a PVD attribute value.
|
||||
//
|
||||
// Note: if multiple attribute values should get set in a row, it is recommended
|
||||
// to use OMNI_PVD_WRITE_SCOPE_BEGIN & OMNI_PVD_SET_EXPLICIT etc. instead
|
||||
//
|
||||
// contextHandle: the handle of the context the object instance belongs to
|
||||
// classID: the name of the class (as defined in OMNI_PVD_CLASS_BEGIN() etc.) the attribute
|
||||
// belongs to
|
||||
// attributeID: the name of the attribute (as defined in OMNI_PVD_ATTRIBUTE() etc.) to set the
|
||||
// value for
|
||||
// objectRef: reference to the class instance to set the attribute for (for untyped classes this shall be
|
||||
// a reference to a OmniPvdObjectHandle. For typed classes, the pointer value will be used as the
|
||||
// object handle value).
|
||||
// valueRef: a reference to a variable that holds the value to set the attribute to
|
||||
//
|
||||
#define OMNI_PVD_SET(contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_SET_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Set PVD array attribute values (variable size array) using the provided pointers to the writer and registration
|
||||
// structure instance.
|
||||
//
|
||||
// valuesPtr: pointer to the array data to set the attribute to
|
||||
// valueCount: number of entries in valuePtr
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the other parameters.
|
||||
//
|
||||
#define OMNI_PVD_SET_ARRAY_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valuesPtr, valueCount) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.set_##attributeID##_(*writer, contextHandle, objectRef, valuesPtr, valueCount);
|
||||
|
||||
|
||||
//
|
||||
// Set PVD array attribute values (variable size array).
|
||||
//
|
||||
// Note: if multiple attribute values should get set in a row, it is recommended
|
||||
// to use OMNI_PVD_WRITE_SCOPE_BEGIN & OMNI_PVD_SET_EXPLICIT etc. instead
|
||||
//
|
||||
// See OMNI_PVD_SET_ARRAY_EXPLICIT for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_SET_ARRAY(contextHandle, classID, attributeID, objectRef, valuesPtr, valueCount) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_SET_ARRAY_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, attributeID, objectRef, valuesPtr, valueCount) \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Add an entry to a PVD unique list attribute using the provided pointers to the writer and registration
|
||||
// structure instance.
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_ADD_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.addTo_##attributeID##_(*writer, contextHandle, objectRef, valueRef);
|
||||
|
||||
|
||||
//
|
||||
// Add an entry to a PVD unique list attribute.
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_ADD(contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_ADD_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Remove an entry from a PVD unique list attribute using the provided pointers to the writer and registration
|
||||
// structure instance.
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_REMOVE_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
PX_ASSERT(writer); \
|
||||
PX_ASSERT(regData); \
|
||||
regData->pvd##classID.removeFrom_##attributeID##_(*writer, contextHandle, objectRef, valueRef);
|
||||
|
||||
|
||||
//
|
||||
// Remove an entry from a PVD unique list attribute.
|
||||
//
|
||||
// See OMNI_PVD_SET for a description of the parameters.
|
||||
//
|
||||
#define OMNI_PVD_REMOVE(contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
\
|
||||
{ \
|
||||
OMNI_PVD_WRITE_SCOPE_BEGIN(pvdWriter, pvdRegData) \
|
||||
OMNI_PVD_REMOVE_EXPLICIT(pvdWriter, pvdRegData, contextHandle, classID, attributeID, objectRef, valueRef) \
|
||||
OMNI_PVD_WRITE_SCOPE_END \
|
||||
}
|
||||
|
||||
|
||||
#else
|
||||
|
||||
|
||||
#define OMNI_PVD_WRITE_SCOPE_BEGIN(writer, regData)
|
||||
#define OMNI_PVD_WRITE_SCOPE_END
|
||||
#define OMNI_PVD_CREATE_EXPLICIT(writer, regData, contextHandle, classID, objectRef)
|
||||
#define OMNI_PVD_CREATE(contextHandle, classID, objectRef)
|
||||
#define OMNI_PVD_DESTROY_EXPLICIT(writer, regData, contextHandle, classID, objectRef)
|
||||
#define OMNI_PVD_DESTROY(contextHandle, classID, objectRef)
|
||||
#define OMNI_PVD_SET_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
#define OMNI_PVD_SET(contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
#define OMNI_PVD_SET_ARRAY_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valuesPtr, valueCount)
|
||||
#define OMNI_PVD_SET_ARRAY(contextHandle, classID, attributeID, objectRef, valuesPtr, valueCount)
|
||||
#define OMNI_PVD_ADD_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
#define OMNI_PVD_ADD(contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
#define OMNI_PVD_REMOVE_EXPLICIT(writer, regData, contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
#define OMNI_PVD_REMOVE(contextHandle, classID, attributeID, objectRef, valueRef)
|
||||
|
||||
|
||||
#endif // PX_SUPPORT_OMNI_PVD
|
||||
72
engine/third_party/physx/source/common/include/windows/CmWindowsLoadLibrary.h
vendored
Normal file
72
engine/third_party/physx/source/common/include/windows/CmWindowsLoadLibrary.h
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
#ifndef CM_WINDOWS_LOADLIBRARY_H
|
||||
#define CM_WINDOWS_LOADLIBRARY_H
|
||||
|
||||
#include "foundation/PxPreprocessor.h"
|
||||
#include "foundation/windows/PxWindowsInclude.h"
|
||||
#include "common/windows/PxWindowsDelayLoadHook.h"
|
||||
|
||||
namespace physx
|
||||
{
|
||||
namespace Cm
|
||||
{
|
||||
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
|
||||
|
||||
PX_INLINE HMODULE WINAPI loadLibrary(const char* name)
|
||||
{
|
||||
return ::LoadLibraryA( name );
|
||||
};
|
||||
|
||||
PX_INLINE FARPROC WINAPI physXCommonDliNotePreLoadLibrary(const char* libraryName, const physx::PxDelayLoadHook* delayLoadHook)
|
||||
{
|
||||
if(!delayLoadHook)
|
||||
{
|
||||
return (FARPROC)loadLibrary(libraryName);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(strstr(libraryName, "PhysXFoundation"))
|
||||
{
|
||||
return (FARPROC)Cm::loadLibrary(delayLoadHook->getPhysXFoundationDllName());
|
||||
}
|
||||
|
||||
if(strstr(libraryName, "PhysXCommon"))
|
||||
{
|
||||
return (FARPROC)Cm::loadLibrary(delayLoadHook->getPhysXCommonDllName());
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
} // namespace Cm
|
||||
} // namespace physx
|
||||
|
||||
|
||||
#endif // CM_WINDOWS_LOADLIBRARY_H
|
||||
69
engine/third_party/physx/source/common/include/windows/CmWindowsModuleUpdateLoader.h
vendored
Normal file
69
engine/third_party/physx/source/common/include/windows/CmWindowsModuleUpdateLoader.h
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||||
// contributors may be used to endorse or promote products derived
|
||||
// from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// Copyright (c) 2008-2025 NVIDIA Corporation. All rights reserved.
|
||||
// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
|
||||
// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
|
||||
|
||||
|
||||
#ifndef CM_WINDOWS_MODULEUPDATELOADER_H
|
||||
#define CM_WINDOWS_MODULEUPDATELOADER_H
|
||||
|
||||
#include "foundation/PxPreprocessor.h"
|
||||
#include "foundation/windows/PxWindowsInclude.h"
|
||||
#include "common/PxPhysXCommonConfig.h"
|
||||
|
||||
|
||||
namespace physx
|
||||
{
|
||||
namespace Cm
|
||||
{
|
||||
|
||||
#if PX_X64
|
||||
#define UPDATE_LOADER_DLL_NAME "PhysXUpdateLoader64.dll"
|
||||
#else
|
||||
#define UPDATE_LOADER_DLL_NAME "PhysXUpdateLoader.dll"
|
||||
#endif
|
||||
|
||||
class PX_PHYSX_COMMON_API CmModuleUpdateLoader
|
||||
{
|
||||
public:
|
||||
CmModuleUpdateLoader(const char* updateLoaderDllName);
|
||||
|
||||
~CmModuleUpdateLoader();
|
||||
|
||||
// Loads the given module through the update loader. Loads it from the path if
|
||||
// the update loader doesn't find the requested module. Returns NULL if no
|
||||
// module found.
|
||||
HMODULE LoadModule(const char* moduleName, const char* appGUID);
|
||||
|
||||
protected:
|
||||
HMODULE mUpdateLoaderDllHandle;
|
||||
FARPROC mGetUpdatedModuleFunc;
|
||||
};
|
||||
} // namespace Cm
|
||||
} // namespace physx
|
||||
|
||||
|
||||
#endif // CM_WINDOWS_MODULEUPDATELOADER_H
|
||||
Reference in New Issue
Block a user