/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #ifndef PLSHAREDMESH_INC #define PLSHAREDMESH_INC #include "pnKeyedObject/hsKeyedObject.h" #include "pnMessage/plMessage.h" class plGeometrySpan; class plDrawableSpans; class plSceneObject; class hsStream; class hsResMgr; class plMorphDataSet; class plSharedMesh : public hsKeyedObject { public: enum { kDontSaveMorphState = 0x1, // Don't save state (duh). Used for a morph that only has global layers kLayer0GlobalToMod = 0x2 // This mesh's weight for layer 0 should be applied to all meshes on // the same morph mod. }; hsTArrayfSpans; hsTArray fActiveInstances; plMorphDataSet *fMorphSet; UInt8 fFlags; plSharedMesh(); ~plSharedMesh(); void CreateInstance(plSceneObject *so, UInt8 boneIndex); void RemoveInstance(plSceneObject *so); CLASSNAME_REGISTER( plSharedMesh ); GETINTERFACE_ANY( plSharedMesh, hsKeyedObject ); virtual hsBool MsgReceive(plMessage* msg); virtual void Read(hsStream* s, hsResMgr* mgr); virtual void Write(hsStream* s, hsResMgr* mgr); }; class plSharedMeshBCMsg : public plMessage { public: plDrawableSpans *fDraw; plSharedMesh *fMesh; hsBool fIsAdding; plSharedMeshBCMsg(); ~plSharedMeshBCMsg() {} CLASSNAME_REGISTER( plSharedMeshBCMsg ); GETINTERFACE_ANY( plSharedMeshBCMsg, plMessage ); virtual void Read(hsStream* s, hsResMgr* mgr) {} virtual void Write(hsStream* s, hsResMgr* mgr) {} }; #endif