Email exchange: On 29.09.2017 14:35 Edouard DUPIN wrote: Hello, I have fork your physic engine and update it to fit better with my 3d game engine and my framework. I do many change: - on assert policy (I do not like it) - the back-end use of the vector3D and quaternion, that I have already an other implementation... - Log management - Other build system (lutin) - organisation of doxygen (all in the header) - remove dependency of the STL (in progress) - some bugs ... - ... And I have a problem with the licence. You use BSD-3 that is a good point, but this licence does not force the user to send your their modification. Then I ask you to permit me to change the licence of the FORK in MPL-2 that have the benefit to force developer to publish the modification and permit to use the software in a proprietary application without contamination. Best regards Edouard DUPIN https://github.com/HeeroYui https://github.com/atria-soft https://github.com/musicdsp answers from chappuis.daniel@XXXXXXX.yyy Hello, I am glad that you have found the ReactPhysics3D library to be useful. You said that you have found bugs. Maybe I have already found and fixed some of them but do not hesitate to report them here (https://github.com/DanielChappuis/reactphysics3d/issues) if not done yet. Concerning the license. The library is not under the BSD-3 license but under the zlib license (https://opensource.org/licenses/Zlib). With this license, it is allowed to use the software in a proprietary application without contamination. Regarding your request to change the license to the MPL-2, you can do it with the following condition : You need to add the following text in all the source files of ReactPhysics3D where the license will change. It must always be clear where the original code is coming from. --------------- TEXT TO ADD TO THE LICENSE IN EACH FILE ------------------------- Original ReactPhysics3D C++ library by Daniel Chappuis <http://www.reactphysics3d.com/> This code is re-licensed with permission from ReactPhysics3D author. --------------------------------------------------------------------------------- For example, you can see here how the flow/react library (java port of ReactPhysics3D) has been re-licensed from ReactPhysics3D (https://github.com/flow/react/blob/develop/src/main/java/com/flowpowered/react/constraint/ContactPoint.java) I hope it fits your needs. Best Regards, Daniel Chappuis
56 lines
2.5 KiB
C++
56 lines
2.5 KiB
C++
/** @file
|
|
* Original ReactPhysics3D C++ library by Daniel Chappuis <http://www.reactphysics3d.com/> This code is re-licensed with permission from ReactPhysics3D author.
|
|
* @author Daniel CHAPPUIS
|
|
* @author Edouard DUPIN
|
|
* @copyright 2010-2016, Daniel Chappuis
|
|
* @copyright 2017, Edouard DUPIN
|
|
* @license MPL v2.0 (see license file)
|
|
*/
|
|
#pragma once
|
|
|
|
#include <ephysics/collision/shapes/ConvexShape.hpp>
|
|
#include <ephysics/body/CollisionBody.hpp>
|
|
#include <ephysics/mathematics/mathematics.hpp>
|
|
|
|
namespace ephysics {
|
|
/**
|
|
* @brief This class represents a cone collision shape centered at the
|
|
* origin and alligned with the Y axis. The cone is defined
|
|
* by its height and by the radius of its base. The center of the
|
|
* cone is at the half of the height. The "transform" of the
|
|
* corresponding rigid body gives an orientation and a position
|
|
* to the cone. This collision shape uses an extra margin distance around
|
|
* it for collision detection purpose. The default margin is 4cm (if your
|
|
* units are meters, which is recommended). In case, you want to simulate small
|
|
* objects (smaller than the margin distance), you might want to reduce the margin
|
|
* by specifying your own margin distance using the "margin" parameter in the
|
|
* constructor of the cone shape. Otherwise, it is recommended to use the
|
|
* default margin distance by not using the "margin" parameter in the constructor.
|
|
*/
|
|
class ConeShape : public ConvexShape {
|
|
protected :
|
|
float m_radius; //!< Radius of the base
|
|
float m_halfHeight; //!< Half height of the cone
|
|
float m_sinTheta; //!< sine of the semi angle at the apex point
|
|
/// Private copy-constructor
|
|
ConeShape(const ConeShape& _shape) = delete;
|
|
/// Private assignment operator
|
|
ConeShape& operator=(const ConeShape& _shape) = delete;
|
|
virtual vec3 getLocalSupportPointWithoutMargin(const vec3& _direction, void** _cachedCollisionData) const override;
|
|
bool testPointInside(const vec3& _localPoint, ProxyShape* _proxyShape) const override;
|
|
bool raycast(const Ray& _ray, RaycastInfo& _raycastInfo, ProxyShape* _proxyShape) const override;
|
|
size_t getSizeInBytes() const override;
|
|
public :
|
|
/// Constructor
|
|
ConeShape(float _radius, float _height, float _margin = OBJECT_MARGIN);
|
|
/// Return the radius
|
|
float getRadius() const;
|
|
/// Return the height
|
|
float getHeight() const;
|
|
|
|
void setLocalScaling(const vec3& _scaling) override;
|
|
void getLocalBounds(vec3& _min, vec3& _max) const override;
|
|
void computeLocalInertiaTensor(etk::Matrix3x3& _tensor, float _mass) const override;
|
|
};
|
|
}
|