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.
106 lines
2.5 KiB
106 lines
2.5 KiB
14 years ago
|
/*==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==*/
|
||
|
#include "cyDraw.h"
|
||
|
|
||
|
#include "plgDispatch.h"
|
||
|
#include "hsBitVector.h"
|
||
|
#include "../pnMessage/plEnableMsg.h"
|
||
|
|
||
|
cyDraw::cyDraw(plKey sender, plKey recvr)
|
||
|
{
|
||
|
SetSender(sender);
|
||
|
AddRecvr(recvr);
|
||
|
fNetForce = false;
|
||
|
}
|
||
|
|
||
|
// setters
|
||
|
void cyDraw::SetSender(plKey &sender)
|
||
|
{
|
||
|
fSender = sender;
|
||
|
}
|
||
|
|
||
|
void cyDraw::AddRecvr(plKey &recvr)
|
||
|
{
|
||
|
if ( recvr != nil )
|
||
|
fRecvr.Append(recvr);
|
||
|
}
|
||
|
|
||
|
|
||
|
void cyDraw::SetNetForce(hsBool state)
|
||
|
{
|
||
|
// set our flag
|
||
|
fNetForce = state;
|
||
|
}
|
||
|
|
||
|
|
||
|
void cyDraw::EnableT(hsBool state)
|
||
|
{
|
||
|
// must have a receiver!
|
||
|
if ( fRecvr.Count() > 0 )
|
||
|
{
|
||
|
// create message
|
||
|
plEnableMsg* pMsg = TRACKED_NEW plEnableMsg;
|
||
|
// check if this needs to be network forced to all clients
|
||
|
if (fNetForce )
|
||
|
{
|
||
|
// set the network propagate flag to make sure it gets to the other clients
|
||
|
pMsg->SetBCastFlag(plMessage::kNetPropagate);
|
||
|
pMsg->SetBCastFlag(plMessage::kNetForce);
|
||
|
}
|
||
|
if ( fSender )
|
||
|
pMsg->SetSender(fSender);
|
||
|
|
||
|
// add all our receivers to the message receiver list
|
||
|
int i;
|
||
|
for ( i=0; i<fRecvr.Count(); i++ )
|
||
|
{
|
||
|
pMsg->AddReceiver(fRecvr[i]);
|
||
|
}
|
||
|
// set the interface to the draw
|
||
|
pMsg->SetCmd(plEnableMsg::kDrawable);
|
||
|
pMsg->AddType(plEnableMsg::kDrawable);
|
||
|
|
||
|
pMsg->SetBCastFlag(plMessage::kPropagateToModifiers);
|
||
|
|
||
|
// which way are we doin' it?
|
||
|
if ( state )
|
||
|
pMsg->SetCmd(plEnableMsg::kEnable);
|
||
|
else
|
||
|
pMsg->SetCmd(plEnableMsg::kDisable);
|
||
|
plgDispatch::MsgSend( pMsg ); // whoosh... off it goes
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void cyDraw::Enable()
|
||
|
{
|
||
|
EnableT(true);
|
||
|
}
|
||
|
|
||
|
void cyDraw::Disable()
|
||
|
{
|
||
|
EnableT(false);
|
||
|
}
|