/******************************************************************************** * ReactPhysics3D physics library, http://code.google.com/p/reactphysics3d/ * * Copyright (c) 2010-2012 Daniel Chappuis * ********************************************************************************* * * * This software is provided 'as-is', without any express or implied warranty. * * In no event will the authors be held liable for any damages arising from the * * use of this software. * * * * Permission is granted to anyone to use this software for any purpose, * * including commercial applications, and to alter it and redistribute it * * freely, subject to the following restrictions: * * * * 1. The origin of this software must not be misrepresented; you must not claim * * that you wrote the original software. If you use this software in a * * product, an acknowledgment in the product documentation would be * * appreciated but is not required. * * * * 2. Altered source versions must be plainly marked as such, and must not be * * misrepresented as being the original software. * * * * 3. This notice may not be removed or altered from any source distribution. * * * ********************************************************************************/ #ifndef CONFIGURATION_H #define CONFIGURATION_H // Libraries #include #include #include #include "decimal.h" // Windows platform #if defined(WIN32) ||defined(_WIN32) || defined(_WIN64) ||defined(__WIN32__) || defined(__WINDOWS__) #define WINDOWS_OS #elif defined(__APPLE__) // Apple platform #define APPLE_OS #elif defined(__linux__) || defined(linux) || defined(__linux) // Linux platform #define LINUX_OS #endif // Namespace reactphysics3d namespace reactphysics3d { // ------------------- Type definitions ------------------- // typedef unsigned int uint; typedef long unsigned int luint; typedef short unsigned int bodyindex; typedef std::pair bodyindexpair; // ------------------- Constants ------------------- // const reactphysics3d::decimal DECIMAL_SMALLEST = - std::numeric_limits::max(); // Maximum decimal value const reactphysics3d::decimal DECIMAL_LARGEST = std::numeric_limits::max(); // Machine epsilon const reactphysics3d::decimal MACHINE_EPSILON = std::numeric_limits::epsilon(); // Infinity const reactphysics3d::decimal DECIMAL_INFINITY = std::numeric_limits::infinity(); // Pi constant const reactphysics3d::decimal PI = 3.14159265; // Default internal constant timestep in seconds const reactphysics3d::decimal DEFAULT_TIMESTEP = 1.0 / 60.0; // True if the deactivation (sleeping) of inactive bodies is enabled const bool DEACTIVATION_ENABLED = true; // // Object margin for collision detection in cm (For GJK-EPA Algorithm) const reactphysics3d::decimal OBJECT_MARGIN = 0.04; // Friction coefficient const reactphysics3d::decimal FRICTION_COEFFICIENT = 0.4; // Distance threshold for two contact points for a valid persistent contact const reactphysics3d::decimal PERSISTENT_CONTACT_DIST_THRESHOLD = 0.02; // Maximum number of bodies const int NB_MAX_BODIES = 100000; // Maximum number of constraints const int NB_MAX_CONSTRAINTS = 100000; // Number of iterations when solving a LCP problem const uint DEFAULT_LCP_ITERATIONS = 15; // Number of iterations when solving a LCP problem for error correction const uint DEFAULT_LCP_ITERATIONS_ERROR_CORRECTION = 5; // True if the error correction projection (first order world) is active in the constraint solver const bool ERROR_CORRECTION_PROJECTION_ENABLED = true; // Contacts with penetration depth (in meters) larger that this use error correction with projection const reactphysics3d::decimal PENETRATION_DEPTH_THRESHOLD_ERROR_CORRECTION = 0.20; } #endif