1
0
mirror of https://github.com/minetest/irrlicht.git synced 2025-08-05 00:30:39 +02:00
Files
bin
doc
examples
include
lib
media
scripts
source
Irrlicht
Irrlicht.xcodeproj
KHR
aesGladman
bzip2
jpeglib
libpng
lzma
zlib
BuiltInFont.h
C3DSMeshFileLoader.cpp
C3DSMeshFileLoader.h
CAnimatedMeshHalfLife.cpp
CAnimatedMeshHalfLife.h
CAnimatedMeshMD2.cpp
CAnimatedMeshMD2.h
CAnimatedMeshMD3.cpp
CAnimatedMeshMD3.h
CAnimatedMeshSceneNode.cpp
CAnimatedMeshSceneNode.h
CAttributeImpl.h
CAttributes.cpp
CAttributes.h
CB3DMeshFileLoader.cpp
CB3DMeshFileLoader.h
CB3DMeshWriter.cpp
CB3DMeshWriter.h
CBSPMeshFileLoader.cpp
CBSPMeshFileLoader.h
CBillboardSceneNode.cpp
CBillboardSceneNode.h
CBlit.h
CBoneSceneNode.cpp
CBoneSceneNode.h
CBufferRenderNode.h
CBurningShader_Raster_Reference.cpp
CCSMLoader.cpp
CCSMLoader.h
CCameraSceneNode.cpp
CCameraSceneNode.h
CColladaFileLoader.cpp
CColladaFileLoader.h
CColladaMeshWriter.cpp
CColladaMeshWriter.h
CColorConverter.cpp
CColorConverter.h
CCubeSceneNode.cpp
CCubeSceneNode.h
CD3D9Driver.cpp
CD3D9Driver.h
CD3D9HLSLMaterialRenderer.cpp
CD3D9HLSLMaterialRenderer.h
CD3D9MaterialRenderer.h
CD3D9NormalMapRenderer.cpp
CD3D9NormalMapRenderer.h
CD3D9ParallaxMapRenderer.cpp
CD3D9ParallaxMapRenderer.h
CD3D9RenderTarget.cpp
CD3D9RenderTarget.h
CD3D9ShaderMaterialRenderer.cpp
CD3D9ShaderMaterialRenderer.h
CD3D9Texture.cpp
CD3D9Texture.h
CDMFLoader.cpp
CDMFLoader.h
CDefaultGUIElementFactory.cpp
CDefaultGUIElementFactory.h
CDefaultSceneNodeAnimatorFactory.cpp
CDefaultSceneNodeAnimatorFactory.h
CDefaultSceneNodeFactory.cpp
CDefaultSceneNodeFactory.h
CDepthBuffer.cpp
CDepthBuffer.h
CDummyTransformationSceneNode.cpp
CDummyTransformationSceneNode.h
CEmptySceneNode.cpp
CEmptySceneNode.h
CFPSCounter.cpp
CFPSCounter.h
CFileList.cpp
CFileList.h
CFileSystem.cpp
CFileSystem.h
CGLXManager.cpp
CGLXManager.h
CGUIButton.cpp
CGUIButton.h
CGUICheckBox.cpp
CGUICheckBox.h
CGUIColorSelectDialog.cpp
CGUIColorSelectDialog.h
CGUIComboBox.cpp
CGUIComboBox.h
CGUIContextMenu.cpp
CGUIContextMenu.h
CGUIEditBox.cpp
CGUIEditBox.h
CGUIEnvironment.cpp
CGUIEnvironment.h
CGUIFileOpenDialog.cpp
CGUIFileOpenDialog.h
CGUIFont.cpp
CGUIFont.h
CGUIImage.cpp
CGUIImage.h
CGUIImageList.cpp
CGUIImageList.h
CGUIInOutFader.cpp
CGUIInOutFader.h
CGUIListBox.cpp
CGUIListBox.h
CGUIMenu.cpp
CGUIMenu.h
CGUIMeshViewer.cpp
CGUIMeshViewer.h
CGUIMessageBox.cpp
CGUIMessageBox.h
CGUIModalScreen.cpp
CGUIModalScreen.h
CGUIProfiler.cpp
CGUIProfiler.h
CGUIScrollBar.cpp
CGUIScrollBar.h
CGUISkin.cpp
CGUISkin.h
CGUISpinBox.cpp
CGUISpinBox.h
CGUISpriteBank.cpp
CGUISpriteBank.h
CGUIStaticText.cpp
CGUIStaticText.h
CGUITabControl.cpp
CGUITabControl.h
CGUITable.cpp
CGUITable.h
CGUIToolBar.cpp
CGUIToolBar.h
CGUITreeView.cpp
CGUITreeView.h
CGUIWindow.cpp
CGUIWindow.h
CGeometryCreator.cpp
CGeometryCreator.h
CImage.cpp
CImage.h
CImageLoaderBMP.cpp
CImageLoaderBMP.h
CImageLoaderDDS.cpp
CImageLoaderDDS.h
CImageLoaderJPG.cpp
CImageLoaderJPG.h
CImageLoaderPCX.cpp
CImageLoaderPCX.h
CImageLoaderPNG.cpp
CImageLoaderPNG.h
CImageLoaderPPM.cpp
CImageLoaderPPM.h
CImageLoaderPSD.cpp
CImageLoaderPSD.h
CImageLoaderPVR.cpp
CImageLoaderPVR.h
CImageLoaderRGB.cpp
CImageLoaderRGB.h
CImageLoaderTGA.cpp
CImageLoaderTGA.h
CImageLoaderWAL.cpp
CImageLoaderWAL.h
CImageWriterBMP.cpp
CImageWriterBMP.h
CImageWriterJPG.cpp
CImageWriterJPG.h
CImageWriterPCX.cpp
CImageWriterPCX.h
CImageWriterPNG.cpp
CImageWriterPNG.h
CImageWriterPPM.cpp
CImageWriterPPM.h
CImageWriterPSD.cpp
CImageWriterPSD.h
CImageWriterTGA.cpp
CImageWriterTGA.h
CIrrDeviceConsole.cpp
CIrrDeviceConsole.h
CIrrDeviceFB.cpp
CIrrDeviceFB.h
CIrrDeviceLinux.cpp
CIrrDeviceLinux.h
CIrrDeviceOSX.h
CIrrDeviceOSX.mm
CIrrDeviceSDL.cpp
CIrrDeviceSDL.h
CIrrDeviceStub.cpp
CIrrDeviceStub.h
CIrrDeviceWin32.cpp
CIrrDeviceWin32.h
CIrrMeshFileLoader.cpp
CIrrMeshFileLoader.h
CIrrMeshWriter.cpp
CIrrMeshWriter.h
CLMTSMeshFileLoader.cpp
CLMTSMeshFileLoader.h
CLWOMeshFileLoader.cpp
CLWOMeshFileLoader.h
CLightSceneNode.cpp
CLightSceneNode.h
CLimitReadFile.cpp
CLimitReadFile.h
CLogger.cpp
CLogger.h
CMD2MeshFileLoader.cpp
CMD2MeshFileLoader.h
CMD3MeshFileLoader.cpp
CMD3MeshFileLoader.h
CMS3DMeshFileLoader.cpp
CMS3DMeshFileLoader.h
CMY3DHelper.h
CMY3DMeshFileLoader.cpp
CMY3DMeshFileLoader.h
CMemoryFile.cpp
CMemoryFile.h
CMeshCache.cpp
CMeshCache.h
CMeshManipulator.cpp
CMeshManipulator.h
CMeshSceneNode.cpp
CMeshSceneNode.h
CMeshTextureLoader.cpp
CMeshTextureLoader.h
CMetaTriangleSelector.cpp
CMetaTriangleSelector.h
CMountPointReader.cpp
CMountPointReader.h
CNPKReader.cpp
CNPKReader.h
CNSOGLManager.h
CNSOGLManager.mm
CNullDriver.cpp
CNullDriver.h
COBJMeshFileLoader.cpp
COBJMeshFileLoader.h
COBJMeshWriter.cpp
COBJMeshWriter.h
COCTLoader.cpp
COCTLoader.h
COSOperator.cpp
COSOperator.h
COctreeSceneNode.cpp
COctreeSceneNode.h
COctreeTriangleSelector.cpp
COctreeTriangleSelector.h
COgreMeshFileLoader.cpp
COgreMeshFileLoader.h
COpenGLCacheHandler.cpp
COpenGLCacheHandler.h
COpenGLCommon.h
COpenGLCoreCacheHandler.h
COpenGLCoreFeature.h
COpenGLCoreRenderTarget.h
COpenGLCoreTexture.h
COpenGLDriver.cpp
COpenGLDriver.h
COpenGLExtensionHandler.cpp
COpenGLExtensionHandler.h
COpenGLMaterialRenderer.h
COpenGLNormalMapRenderer.cpp
COpenGLNormalMapRenderer.h
COpenGLParallaxMapRenderer.cpp
COpenGLParallaxMapRenderer.h
COpenGLSLMaterialRenderer.cpp
COpenGLSLMaterialRenderer.h
COpenGLShaderMaterialRenderer.cpp
COpenGLShaderMaterialRenderer.h
CPLYMeshFileLoader.cpp
CPLYMeshFileLoader.h
CPLYMeshWriter.cpp
CPLYMeshWriter.h
CPakReader.cpp
CPakReader.h
CParticleAnimatedMeshSceneNodeEmitter.cpp
CParticleAnimatedMeshSceneNodeEmitter.h
CParticleAttractionAffector.cpp
CParticleAttractionAffector.h
CParticleBoxEmitter.cpp
CParticleBoxEmitter.h
CParticleCylinderEmitter.cpp
CParticleCylinderEmitter.h
CParticleFadeOutAffector.cpp
CParticleFadeOutAffector.h
CParticleGravityAffector.cpp
CParticleGravityAffector.h
CParticleMeshEmitter.cpp
CParticleMeshEmitter.h
CParticlePointEmitter.cpp
CParticlePointEmitter.h
CParticleRingEmitter.cpp
CParticleRingEmitter.h
CParticleRotationAffector.cpp
CParticleRotationAffector.h
CParticleScaleAffector.cpp
CParticleScaleAffector.h
CParticleSphereEmitter.cpp
CParticleSphereEmitter.h
CParticleSystemSceneNode.cpp
CParticleSystemSceneNode.h
CProfiler.cpp
CProfiler.h
CQ3LevelMesh.cpp
CQ3LevelMesh.h
CQuake3ShaderSceneNode.cpp
CQuake3ShaderSceneNode.h
CReadFile.cpp
CReadFile.h
CSMFMeshFileLoader.cpp
CSMFMeshFileLoader.h
CSTLMeshFileLoader.cpp
CSTLMeshFileLoader.h
CSTLMeshWriter.cpp
CSTLMeshWriter.h
CSceneCollisionManager.cpp
CSceneCollisionManager.h
CSceneLoaderIrr.cpp
CSceneLoaderIrr.h
CSceneManager.cpp
CSceneManager.h
CSceneNodeAnimatorCameraFPS.cpp
CSceneNodeAnimatorCameraFPS.h
CSceneNodeAnimatorCameraMaya.cpp
CSceneNodeAnimatorCameraMaya.h
CSceneNodeAnimatorCollisionResponse.cpp
CSceneNodeAnimatorCollisionResponse.h
CSceneNodeAnimatorDelete.cpp
CSceneNodeAnimatorDelete.h
CSceneNodeAnimatorFlyCircle.cpp
CSceneNodeAnimatorFlyCircle.h
CSceneNodeAnimatorFlyStraight.cpp
CSceneNodeAnimatorFlyStraight.h
CSceneNodeAnimatorFollowSpline.cpp
CSceneNodeAnimatorFollowSpline.h
CSceneNodeAnimatorRotation.cpp
CSceneNodeAnimatorRotation.h
CSceneNodeAnimatorTexture.cpp
CSceneNodeAnimatorTexture.h
CShadowVolumeSceneNode.cpp
CShadowVolumeSceneNode.h
CSkinnedMesh.cpp
CSkinnedMesh.h
CSkyBoxSceneNode.cpp
CSkyBoxSceneNode.h
CSkyDomeSceneNode.cpp
CSkyDomeSceneNode.h
CSoftware2MaterialRenderer.h
CSoftwareDriver.cpp
CSoftwareDriver.h
CSoftwareDriver2.cpp
CSoftwareDriver2.h
CSoftwareTexture.cpp
CSoftwareTexture.h
CSoftwareTexture2.cpp
CSoftwareTexture2.h
CSphereSceneNode.cpp
CSphereSceneNode.h
CTRFlat.cpp
CTRFlatWire.cpp
CTRGouraud.cpp
CTRGouraud2.cpp
CTRGouraudAlphaNoZ2.cpp
CTRGouraudNoZ2.cpp
CTRGouraudWire.cpp
CTRNormalMap.cpp
CTRParallaxMap.cpp
CTRStencilShadow.cpp
CTRTextureBlend.cpp
CTRTextureDetailMap2.cpp
CTRTextureFlat.cpp
CTRTextureFlatWire.cpp
CTRTextureGouraud.cpp
CTRTextureGouraud.h
CTRTextureGouraud2.cpp
CTRTextureGouraudAdd.cpp
CTRTextureGouraudAdd2.cpp
CTRTextureGouraudAddNoZ2.cpp
CTRTextureGouraudAlpha.cpp
CTRTextureGouraudAlphaNoZ.cpp
CTRTextureGouraudNoZ.cpp
CTRTextureGouraudNoZ2.cpp
CTRTextureGouraudVertexAlpha2.cpp
CTRTextureGouraudWire.cpp
CTRTextureLightMap2_Add.cpp
CTRTextureLightMap2_M1.cpp
CTRTextureLightMap2_M2.cpp
CTRTextureLightMap2_M4.cpp
CTRTextureLightMapGouraud2_M4.cpp
CTRTextureWire2.cpp
CTR_transparent_reflection_2_layer.cpp
CTarReader.cpp
CTarReader.h
CTerrainSceneNode.cpp
CTerrainSceneNode.h
CTerrainTriangleSelector.cpp
CTerrainTriangleSelector.h
CTextSceneNode.cpp
CTextSceneNode.h
CTimer.h
CTriangleBBSelector.cpp
CTriangleBBSelector.h
CTriangleSelector.cpp
CTriangleSelector.h
CVideoModeList.cpp
CVideoModeList.h
CVolumeLightSceneNode.cpp
CVolumeLightSceneNode.h
CWADReader.cpp
CWADReader.h
CWGLManager.cpp
CWGLManager.h
CWaterSurfaceSceneNode.cpp
CWaterSurfaceSceneNode.h
CWriteFile.cpp
CWriteFile.h
CXMLReader.cpp
CXMLReader.h
CXMLReaderImpl.h
CXMLWriter.cpp
CXMLWriter.h
CXMeshFileLoader.cpp
CXMeshFileLoader.h
CZBuffer.cpp
CZBuffer.h
CZipReader.cpp
CZipReader.h
EProfileIDs.h
IAttribute.h
IBurningShader.cpp
IBurningShader.h
IDepthBuffer.h
IImagePresenter.h
ISceneNodeAnimatorFinishing.h
ITriangleRenderer.h
IZBuffer.h
Irrlicht-gcc.cbp
Irrlicht.cpp
Irrlicht.rc
Irrlicht.ruleset
Irrlicht10.0.sln
Irrlicht10.0.vcxproj
Irrlicht10.0.vcxproj.filters
Irrlicht11.0.sln
Irrlicht11.0.vcxproj
Irrlicht11.0.vcxproj.filters
Irrlicht12.0.sln
Irrlicht12.0.vcxproj
Irrlicht12.0.vcxproj.filters
Irrlicht14.0.sln
Irrlicht14.0.vcxproj
Irrlicht14.0.vcxproj.filters
Irrlicht15.0.sln
Irrlicht15.0.vcxproj
Irrlicht15.0.vcxproj.filters
Irrlicht16.0.sln
Irrlicht16.0.vcxproj
Irrlicht16.0.vcxproj.filters
Irrlicht17.0.sln
Irrlicht17.0.vcxproj
Irrlicht17.0.vcxproj.filters
Makefile
Octree.h
S2DVertex.h
S4DVertex.h
SB3DStructs.h
SConstruct
SoftwareDriver2_compile_config.h
SoftwareDriver2_helper.h
builtInFont.bmp
burning_shader_color.cpp
burning_shader_color_fraq.h
burning_shader_compile_fragment_default.h
burning_shader_compile_fragment_end.h
burning_shader_compile_fragment_start.h
burning_shader_compile_start.h
burning_shader_compile_triangle.h
burning_shader_compile_verify.h
dmfsupport.h
glext.h
glxext.h
irrMathFastCompat.h
irrXML.cpp
leakHunter.cpp
os.cpp
os.h
resource.h
source.txt
utf8.cpp
wglext.h
source.txt
tests
tools
changes.txt
readme.txt
irrlicht/source/Irrlicht/CSceneNodeAnimatorCollisionResponse.h
cutealien 3d2a55e788 Replace header guards in source folder to avoid using identifiers reserved by c++
Basically fixing original Bug#427 reported by MArkus Elfring.
Unfortunately there are still more defines (in IrrCompileConfig.h) which also are not nice c++
Lots of files touched for very minor cleanup *sigh*

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6253 dfc29bdd-3216-0410-991c-e03cc46cb475
2021-08-27 15:55:04 +00:00

157 lines
6.1 KiB
C++

// Copyright (C) 2002-2012 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef IRR_C_SCENE_NODE_ANIMATOR_COLLISION_RESPONSE_H_INCLUDED
#define IRR_C_SCENE_NODE_ANIMATOR_COLLISION_RESPONSE_H_INCLUDED
#include "ISceneNodeAnimatorCollisionResponse.h"
namespace irr
{
namespace scene
{
//! Special scene node animator for doing automatic collision detection and response.
/** This scene node animator can be attached to any scene node modifying it in that
way, that it cannot move through walls of the world, is influenced by gravity and
acceleration. This animator is useful for example for first person shooter
games. Attach it for example to a first person shooter camera, and the camera will
behave as the player control in a first person shooter game: The camera stops and
slides at walls, walks up stairs, falls down if there is no floor under it, and so on.
*/
class CSceneNodeAnimatorCollisionResponse : public ISceneNodeAnimatorCollisionResponse
{
public:
//! constructor
CSceneNodeAnimatorCollisionResponse(ISceneManager* scenemanager,
ITriangleSelector* world, ISceneNode* object,
const core::vector3df& ellipsoidRadius = core::vector3df(30,60,30),
const core::vector3df& gravityPerSecond = core::vector3df(0,-100.0f,0),
const core::vector3df& ellipsoidTranslation = core::vector3df(0,0,0),
f32 slidingSpeed = 0.0005f);
//! destructor
virtual ~CSceneNodeAnimatorCollisionResponse();
//! Returns if the attached scene node is falling, which means that
//! there is no blocking wall from the scene node in the direction of
//! the gravity.
virtual bool isFalling() const IRR_OVERRIDE;
//! Sets the radius of the ellipsoid with which collision detection and
//! response is done.
virtual void setEllipsoidRadius(const core::vector3df& radius) IRR_OVERRIDE;
//! Returns the radius of the ellipsoid with which the collision detection and
//! response is done.
virtual core::vector3df getEllipsoidRadius() const IRR_OVERRIDE;
//! Sets the gravity of the environment.
virtual void setGravity(const core::vector3df& gravity) IRR_OVERRIDE;
//! 'Jump' the animator, by adding a jump speed opposite to its gravity
virtual void jump(f32 jumpSpeed) IRR_OVERRIDE;
//! Should the Target react on collision ( default = true )
virtual void setAnimateTarget ( bool enable ) IRR_OVERRIDE;
virtual bool getAnimateTarget () const IRR_OVERRIDE;
//! Returns current vector of gravity.
virtual core::vector3df getGravity() const IRR_OVERRIDE;
//! Sets the translation of the ellipsoid for collision detection.
virtual void setEllipsoidTranslation(const core::vector3df &translation) IRR_OVERRIDE;
//! Returns the translation of the ellipsoid for collision detection.
virtual core::vector3df getEllipsoidTranslation() const IRR_OVERRIDE;
//! Sets a triangle selector holding all triangles of the world with which
//! the scene node may collide.
virtual void setWorld(ITriangleSelector* newWorld) IRR_OVERRIDE;
//! Returns the current triangle selector containing all triangles for
//! collision detection.
virtual ITriangleSelector* getWorld() const IRR_OVERRIDE;
//! animates a scene node
virtual void animateNode(ISceneNode* node, u32 timeMs) IRR_OVERRIDE;
//! Writes attributes of the scene node animator.
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const IRR_OVERRIDE;
//! Reads attributes of the scene node animator.
virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) IRR_OVERRIDE;
//! Returns type of the scene node animator
virtual ESCENE_NODE_ANIMATOR_TYPE getType() const IRR_OVERRIDE { return ESNAT_COLLISION_RESPONSE; }
//! Creates a clone of this animator.
/** Please note that you will have to drop
(IReferenceCounted::drop()) the returned pointer after calling
this. */
virtual ISceneNodeAnimator* createClone(ISceneNode* node, ISceneManager* newManager=0) IRR_OVERRIDE;
//! Set the single node that this animator will act on.
virtual void setTargetNode(ISceneNode * node) IRR_OVERRIDE { setNode(node); }
//! Gets the single node that this animator is acting on.
virtual ISceneNode* getTargetNode(void) const IRR_OVERRIDE { return Object; }
//! Returns true if a collision occurred during the last animateNode()
virtual bool collisionOccurred() const IRR_OVERRIDE { return CollisionOccurred; }
//! Returns the last point of collision.
virtual const core::vector3df & getCollisionPoint() const IRR_OVERRIDE { return CollisionPoint; }
//! Returns the last triangle that caused a collision.
virtual const core::triangle3df & getCollisionTriangle() const IRR_OVERRIDE { return CollisionTriangle; }
virtual const core::vector3df & getCollisionResultPosition(void) const IRR_OVERRIDE { return CollisionResultPosition; }
virtual ISceneNode* getCollisionNode(void) const IRR_OVERRIDE { return CollisionNode; }
//! Sets a callback interface which will be called if a collision occurs.
/** \param callback: collision callback handler that will be called when a collision
occurs. Set this to 0 to disable the callback.
*/
virtual void setCollisionCallback(ICollisionCallback* callback) IRR_OVERRIDE;
private:
void setNode(ISceneNode* node);
core::vector3df Radius;
core::vector3df Gravity;
core::vector3df Translation;
core::vector3df FallingVelocity; // In the direction of Gravity.
core::vector3df LastPosition;
core::triangle3df RefTriangle;
ITriangleSelector* World;
ISceneNode* Object;
ISceneManager* SceneManager;
u32 LastTime;
f32 SlidingSpeed;
core::vector3df CollisionPoint;
core::triangle3df CollisionTriangle;
core::vector3df CollisionResultPosition;
ISceneNode * CollisionNode;
ICollisionCallback* CollisionCallback;
bool Falling;
bool IsCamera;
bool AnimateCameraTarget;
bool CollisionOccurred;
bool FirstUpdate;
};
} // end namespace scene
} // end namespace irr
#endif