/***************************************************************************
*                                                                          *
*  Copyright (C) Golaem S.A.  All Rights Reserved.                         *
*                                                                          *
****************************************************************************/

#pragma once

#ifdef __clang__
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
#pragma clang diagnostic ignored "-Wunused-local-typedef"
#endif

#ifndef _MSC_VER
#pragma GCC system_header
#endif

#ifndef _MSC_VER
#undef GrayScale
#undef CursorShape
#undef FontChange
#undef KeyRelease
#undef KeyPress
#undef FocusIn
#undef FocusOut
#undef Size
#undef Unsorted
#undef None
#undef Status
#undef Bool
#undef Expose
#endif

// To prevent error: "'UINT32_MAX' was not declared in this scope", glmTypes.h
// is included first in glmMaya.h (due to stdint.h being included in Maya)

#include <math.h>
#include <cmath> // labs, isfinite, isnan, signbit, needs to be called before the rest of physX, because physX will do a "#define isfinite	std::isfinite" but "isfinite" is also declared in cmath

//PhysX inclusion
#include <foundation/PxPreprocessor.h> //ensure PX_LINUX is defined first
#include <PxPhysicsAPI.h>
#include <foundation/PxVec3.h>
#include <foundation/PxQuat.h>

#include <extensions/PxDefaultErrorCallback.h>
#include <extensions/PxCollectionExt.h>
#include <extensions/PxFixedJoint.h>
#include <geometry/PxHeightFieldSample.h>

#include <extensions/PxDefaultAllocator.h>

//Inclusions to allow the use of GPU acceleration (gpu lib, delay hook to use different dll names)
#include <gpu/PxGpu.h>
#include "common/windows/PxWindowsDelayLoadHook.h"
#include "pvd/windows/PxWindowsPvdDelayLoadHook.h"

#ifdef __clang__
#pragma clang diagnostic pop
#endif

#ifdef isfinite
#undef isfinite
#endif
