// Ryzom - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#ifndef CL_FX_STICK_MODE_H
#define CL_FX_STICK_MODE_H
#include "nel/misc/string_mapper.h"
namespace NLGEORGES
{
class UFormElm;
}
/**
* \author Matthieu 'Trap' Besson
* \author Nevrax France
* \date November 2003
*/
class CFXStickMode
{
public:
enum TStickMode
{
Spawn = 0,
UserBone,
Follow,
FollowNoRotation,
OrientedTowardTargeter,
UserBoneOrientedTowardTargeter,
StaticMatrix,
StaticObjectCastRay = StaticMatrix, // cast ray for object such as towers (static once created)
UserBoneRay,
SpawnPermanent // spawn and delegate to fx manager when the fx is stopped
};
public:
TStickMode Mode;
NLMISC::TStringId UserBoneName; // bone to which the fx must be sticked when StickBone == UserBone
public:
// Constructor
CFXStickMode() : Mode(Follow), UserBoneName(0) {}
/// Build the stick mode from an external script.
bool build(const NLGEORGES::UFormElm &item, const std::string &prefix = "");
/// Save and Load
void serial(class NLMISC::IStream &f) throw(NLMISC::EStream);
};
#endif