You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.2 KiB
126 lines
3.2 KiB
/*==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 <http://www.gnu.org/licenses/>. |
|
|
|
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 plPostEffectMod_inc |
|
#define plPostEffectMod_inc |
|
|
|
#include "pnModifier/plSingleModifier.h" |
|
|
|
#include "hsMatrix44.h" |
|
#include "hsBitVector.h" |
|
|
|
class plSceneNode; |
|
class plPageTreeMgr; |
|
class plMessage; |
|
class plRenderTarget; |
|
class plRenderRequest; |
|
class plViewTransform; |
|
|
|
class plPostEffectMod : public plSingleModifier |
|
{ |
|
public: |
|
enum plPostEffectModStates { |
|
kEnabled = 0 |
|
}; |
|
|
|
enum { |
|
kNodeRef = 0x0 |
|
}; |
|
protected: |
|
|
|
hsBitVector fState; |
|
|
|
hsScalar fHither; |
|
hsScalar fYon; |
|
|
|
hsScalar fFovX; |
|
hsScalar fFovY; |
|
|
|
plKey fNodeKey; |
|
plPageTreeMgr* fPageMgr; |
|
|
|
plRenderTarget* fRenderTarget; |
|
plRenderRequest* fRenderRequest; |
|
|
|
hsMatrix44 fDefaultW2C, fDefaultC2W; |
|
|
|
|
|
virtual hsBool IEval(double secs, hsScalar del, UInt32 dirty); // called only by owner object's Eval() |
|
|
|
void ISetupRenderRequest(); |
|
void IDestroyRenderRequest(); |
|
void IUpdateRenderRequest(); |
|
|
|
void IRegisterForRenderMsg(hsBool on); |
|
void ISubmitRequest(); |
|
|
|
void IAddToPageMgr(plSceneNode* node); |
|
void IRemoveFromPageMgr(plSceneNode* node); |
|
|
|
void ISetEnable(hsBool on); |
|
hsBool IIsEnabled() const; |
|
|
|
public: |
|
plPostEffectMod(); |
|
virtual ~plPostEffectMod(); |
|
|
|
CLASSNAME_REGISTER( plPostEffectMod ); |
|
GETINTERFACE_ANY( plPostEffectMod, plSingleModifier ); |
|
|
|
|
|
virtual hsBool MsgReceive(plMessage* pMsg); |
|
|
|
virtual void Read(hsStream* s, hsResMgr* mgr); |
|
virtual void Write(hsStream* s, hsResMgr* mgr); |
|
|
|
void GetDefaultWorldToCamera( hsMatrix44 &w2c, hsMatrix44 &c2w ); |
|
|
|
// Export only |
|
void SetNodeKey(plKey key) { fNodeKey = key; } |
|
plKey GetNodeKey() const { return fNodeKey; } |
|
|
|
void SetHither(hsScalar h) { fHither = h; } |
|
void SetYon(hsScalar y) { fYon = y; } |
|
void SetFovX(hsScalar f) { fFovX = f; } |
|
void SetFovY(hsScalar f) { fFovY = f; } |
|
|
|
hsScalar GetHither() const { return fHither; } |
|
hsScalar GetYon() const { return fYon; } |
|
hsScalar GetFovX() const { return fFovX; } |
|
hsScalar GetFovY() const { return fFovY; } |
|
|
|
plPageTreeMgr* GetPageMgr() const { return fPageMgr; } |
|
|
|
const plViewTransform& GetViewTransform(); |
|
|
|
// If translating from a scene object, send WorldToLocal() and LocalToWorld(), in that order |
|
void SetWorldToCamera( hsMatrix44 &w2c, hsMatrix44 &c2w ); |
|
|
|
// Very bad |
|
void EnableLightsOnRenderRequest( void ); |
|
}; |
|
|
|
#endif // plPostEffectMod_inc
|
|
|