-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
99 changed files
with
22,500 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
build/ | ||
imgui.ini | ||
settings.ini | ||
.vscode/ | ||
CMakeSettings.json | ||
out/ | ||
.vs/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
### Version 2.3.0 | ||
- Polygon creation now computes the convex hull. Vertices no longer need to be ordered. | ||
- The convex hull code will merge vertices closer than dm_linearSlop. This may lead to failure on very small polygons. | ||
- Added b2MotorJoint. | ||
- Bug fixes. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2019 Erin Catto | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
![Box2D Logo](https://box2d.org/images/logo.svg) | ||
|
||
# Build Status | ||
[![Build Status](https://travis-ci.org/erincatto/box2d.svg?branch=master)](https://travis-ci.org/erincatto/box2d) | ||
|
||
# Box2D | ||
|
||
Box2D is a 2D physics engine for games. | ||
|
||
## Contributing | ||
|
||
Please do not submit pull requests with new features or core library changes. Instead, please file an issue first for discussion. For bugs, I prefer detailed bug reports over pull requests. | ||
|
||
## Features | ||
|
||
### Collision | ||
- Continuous collision detection | ||
- Contact callbacks: begin, end, pre-solve, post-solve | ||
- Convex polygons and circles | ||
- Multiple shapes per body | ||
- One-shot contact manifolds | ||
- Dynamic tree broadphase | ||
- Efficient pair management | ||
- Fast broadphase AABB queries | ||
- Collision groups and categories | ||
|
||
### Physics | ||
- Continuous physics with time of impact solver | ||
- Persistent body-joint-contact graph | ||
- Island solution and sleep management | ||
- Contact, friction, and restitution | ||
- Stable stacking with a linear-time solver | ||
- Revolute, prismatic, distance, pulley, gear, mouse joint, and other joint types | ||
- Joint limits, motors, and friction | ||
- Momentum decoupled position correction | ||
- Fairly accurate reaction forces/impulses | ||
|
||
### System | ||
- Small block and stack allocators | ||
- Centralized tuning parameters | ||
- Highly portable C++ with no use of STL containers | ||
|
||
### Testbed | ||
- OpenGL with GLFW | ||
- Graphical user interface with imgui | ||
- Extensible test framework | ||
- Support for loading world dumps | ||
|
||
## Building | ||
- Install [CMake](https://cmake.org/) | ||
- Ensure CMake is in the user `PATH` | ||
- Visual Studio: run `build.bat` from the command prompt | ||
- Otherwise: run `build.sh` from a bash shell | ||
- Results are in the build sub-folder | ||
- On Windows you can open box2d.sln | ||
|
||
## Building Box2D - Using vcpkg | ||
You can download and install Box2D using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager: | ||
|
||
- git clone https://github.com/Microsoft/vcpkg.git | ||
- cd vcpkg | ||
- ./bootstrap-vcpkg.sh | ||
- ./vcpkg integrate install | ||
- ./vcpkg install box2d | ||
|
||
The Box2D port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. | ||
|
||
Note: vcpkg support is not provided by the Box2D project | ||
|
||
## Building for Xcode | ||
- Install [CMake](https://cmake.org) | ||
- Add Cmake to the path in .zprofile (the default Terminal shell is zsh) | ||
- export PATH="/Applications/CMake.app/Contents/bin:$PATH" | ||
- mkdir build | ||
- cd build | ||
- cmake -G Xcode .. | ||
- open box2d.xcodeproj | ||
- Select the testbed scheme | ||
- Edit the scheme to set a custom working directory, make this be in box2d/testbed | ||
- You can now build and run the testbed | ||
|
||
## Documentation | ||
- [Manual](https://box2d.org/documentation/) | ||
- [reddit](https://www.reddit.com/r/box2d/) | ||
- [Discord](https://discord.gg/NKYgCBP) | ||
|
||
## License | ||
Box2D is developed by Erin Catto, and uses the [MIT license](https://en.wikipedia.org/wiki/MIT_License). | ||
|
||
## Sponsorship | ||
Support development of Box2D through [Github Sponsors](https://github.com/sponsors/erincatto) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
// MIT License | ||
|
||
// Copyright (c) 2019 Erin Catto | ||
|
||
// Permission is hereby granted, free of charge, to any person obtaining a copy | ||
// of this software and associated documentation files (the "Software"), to deal | ||
// in the Software without restriction, including without limitation the rights | ||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
// copies of the Software, and to permit persons to whom the Software is | ||
// furnished to do so, subject to the following conditions: | ||
|
||
// The above copyright notice and this permission notice shall be included in all | ||
// copies or substantial portions of the Software. | ||
|
||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
// SOFTWARE. | ||
|
||
#ifndef B2_BLOCK_ALLOCATOR_H | ||
#define B2_BLOCK_ALLOCATOR_H | ||
|
||
#include "box2d/b2_settings.h" | ||
|
||
const int32 b2_blockSizeCount = 14; | ||
|
||
struct b2Block; | ||
struct b2Chunk; | ||
|
||
/// This is a small object allocator used for allocating small | ||
/// objects that persist for more than one time step. | ||
/// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp | ||
class b2BlockAllocator | ||
{ | ||
public: | ||
b2BlockAllocator(); | ||
~b2BlockAllocator(); | ||
|
||
/// Allocate memory. This will use b2Alloc if the size is larger than b2_maxBlockSize. | ||
void* Allocate(int32 size); | ||
|
||
/// Free memory. This will use b2Free if the size is larger than b2_maxBlockSize. | ||
void Free(void* p, int32 size); | ||
|
||
void Clear(); | ||
|
||
private: | ||
|
||
b2Chunk* m_chunks; | ||
int32 m_chunkCount; | ||
int32 m_chunkSpace; | ||
|
||
b2Block* m_freeLists[b2_blockSizeCount]; | ||
}; | ||
|
||
#endif |
Oops, something went wrong.