111 lines
3.2 KiB
C++
Executable File
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);
|
|
}
|
|
|
|
|