Retour
Version Originale

./aip/1.8aipmod/include/IBoneSceneNode.h :

// Copyright (C) 2002-2011 Nikolaus Gebhardt

// This file is part of the "Irrlicht Engine".

// For conditions of distribution and use, see copyright notice in irrlicht.h


#ifndef __I_BONE_SCENE_NODE_H_INCLUDED__
#define __I_BONE_SCENE_NODE_H_INCLUDED__

#include "ISceneNode.h"

namespace irr
{
namespace scene
{

	//! Enumeration for different bone animation modes

	enum E_BONE_ANIMATION_MODE
	{
		//! The bone is usually animated, unless it's parent is not animated

		EBAM_AUTOMATIC=0,

		//! The bone is animated by the skin, if it's parent is not animated then animation will resume from this bone onward

		EBAM_ANIMATED,

		//! The bone is not animated by the skin

		EBAM_UNANIMATED,

		//! Not an animation mode, just here to count the available modes

		EBAM_COUNT

	};

	enum E_BONE_SKINNING_SPACE
	{
		//! local skinning, standard

		EBSS_LOCAL=0,

		//! global skinning

		EBSS_GLOBAL,

		EBSS_COUNT
	};

	//! Names for bone animation modes

	const c8* const BoneAnimationModeNames[] =
	{
		"automatic",
		"animated",
		"unanimated",
		0,
	};


	//! Interface for bones used for skeletal animation.

	/** Used with ISkinnedMesh and IAnimatedMeshSceneNode. */
	class IBoneSceneNode : public ISceneNode
	{
	public:

		IBoneSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id=-1) :
			ISceneNode(parent, mgr, id),positionHint(-1),scaleHint(-1),rotationHint(-1) { }

		//! Get the name of the bone

		/** \deprecated Use getName instead. */
		virtual const c8* getBoneName() const { return getName(); }

		//! Get the index of the bone

		virtual u32 getBoneIndex() const = 0;

		//! Sets the animation mode of the bone.

		/** \return True if successful. (Unused) */
		virtual bool setAnimationMode(E_BONE_ANIMATION_MODE mode) = 0;

		//! Gets the current animation mode of the bone

		virtual E_BONE_ANIMATION_MODE getAnimationMode() const = 0;

		//! Get the axis aligned bounding box of this node

		virtual const core::aabbox3d<f32>& getBoundingBox() const = 0;

		//! Returns the relative transformation of the scene node.

		//virtual core::matrix4 getRelativeTransformation() const = 0;


		//! The animation method.

		virtual void OnAnimate(u32 timeMs) =0;

		//! The render method.

		/** Does nothing as bones are not visible. */
		virtual void render() { }

		//! How the relative transformation of the bone is used

		virtual void setSkinningSpace( E_BONE_SKINNING_SPACE space ) =0;

		//! How the relative transformation of the bone is used

		virtual E_BONE_SKINNING_SPACE getSkinningSpace() const =0;

		//! Updates the absolute position based on the relative and the parents position

		virtual void updateAbsolutePositionOfAllChildren()=0;

		s32 positionHint;
		s32 scaleHint;
		s32 rotationHint;
	};


} // end namespace scene

} // end namespace irr


#endif

Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
23 invités en ligne
Aucun membre connecté
RSS Feed