/*==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==*/ #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; iAddReceiver(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); }