tge/engine/lightingSystem/sgMissionLightingFilter.cc
2017-04-17 06:17:10 -06:00

111 lines
3.2 KiB
C++
Executable File

//-----------------------------------------------
// Synapse Gaming - Lighting System
// Copyright © Synapse Gaming 2003
// Written by John Kabus
//-----------------------------------------------
#include "console/consoleTypes.h"
#include "core/bitStream.h"
#include "sim/netConnection.h"
#include "lightingSystem/sgMissionLightingFilter.h"
#include "lightingSystem/sgLighting.h"
IMPLEMENT_CO_DATABLOCK_V1(sgMissionLightingFilterData);
IMPLEMENT_CO_NETOBJECT_V1(sgMissionLightingFilter);
void sgMissionLightingFilterData::initPersistFields()
{
Parent::initPersistFields();
addField("CinematicFilter", TypeBool, Offset(sgCinematicFilter, sgMissionLightingFilterData));
addField("LightingIntensity", TypeF32, Offset(sgLightingIntensity, sgMissionLightingFilterData));
addField("LightingFilter", TypeColorF, Offset(sgLightingFilter, sgMissionLightingFilterData));
addField("CinematicFilterAmount", TypeF32, Offset(sgCinematicFilterAmount, sgMissionLightingFilterData));
addField("CinematicFilterReferenceIntensity", TypeF32, Offset(sgCinematicFilterReferenceIntensity, sgMissionLightingFilterData));
addField("CinematicFilterReferenceColor", TypeColorF, Offset(sgCinematicFilterReferenceColor, sgMissionLightingFilterData));
}
void sgMissionLightingFilterData::packData(BitStream *stream)
{
Parent::packData(stream);
stream->write(sgCinematicFilter);
stream->write(sgLightingIntensity);
stream->write(sgLightingFilter);
stream->write(sgCinematicFilterAmount);
stream->write(sgCinematicFilterReferenceIntensity);
stream->write(sgCinematicFilterReferenceColor);
}
void sgMissionLightingFilterData::unpackData(BitStream *stream)
{
Parent::unpackData(stream);
stream->read(&sgCinematicFilter);
stream->read(&sgLightingIntensity);
stream->read(&sgLightingFilter);
stream->read(&sgCinematicFilterAmount);
stream->read(&sgCinematicFilterReferenceIntensity);
stream->read(&sgCinematicFilterReferenceColor);
}
void sgMissionLightingFilter::initPersistFields()
{
Parent::initPersistFields();
}
void sgMissionLightingFilter::inspectPostApply()
{
Parent::inspectPostApply();
setMaskBits(0xffffffff);
}
bool sgMissionLightingFilter::onAdd()
{
if(!Parent::onAdd())
return false;
mObjBox.min.set( -0.5, -0.5, -0.5 );
mObjBox.max.set( 0.5, 0.5, 0.5 );
resetWorldBox();
setRenderTransform(mObjToWorld);
SimSet *filters = Sim::getsgMissionLightingFilterSet();
if(filters && isClientObject())
filters->addObject(this);
addToScene();
return true;
}
void sgMissionLightingFilter::onRemove()
{
SimSet *filters = Sim::getsgMissionLightingFilterSet();
if(filters && isClientObject())
filters->removeObject(this);
removeFromScene();
Parent::onRemove();
}
U32 sgMissionLightingFilter::packUpdate(NetConnection *con, U32 mask, BitStream *stream)
{
U32 res = Parent::packUpdate(con, mask, stream);
stream->writeAffineTransform(mObjToWorld);
return res;
}
void sgMissionLightingFilter::unpackUpdate(NetConnection *con, BitStream *stream)
{
Parent::unpackUpdate(con, stream);
MatrixF ObjectMatrix;
stream->readAffineTransform(&ObjectMatrix);
setTransform(ObjectMatrix);
}