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.
53 lines
1.6 KiB
53 lines
1.6 KiB
|
|
#ifndef hsGMatStateInline_inc |
|
#define hsGMatStateInline_inc |
|
|
|
#include "hsGMatState.h" |
|
#include "hsStream.h" |
|
|
|
void hsGMatState::Read(hsStream* s) |
|
{ |
|
fBlendFlags = s->ReadSwap32(); |
|
fClampFlags = s->ReadSwap32(); |
|
fShadeFlags = s->ReadSwap32(); |
|
fZFlags = s->ReadSwap32(); |
|
fMiscFlags = s->ReadSwap32(); |
|
} |
|
|
|
void hsGMatState::Write(hsStream* s) |
|
{ |
|
s->WriteSwap32(fBlendFlags); |
|
s->WriteSwap32(fClampFlags); |
|
s->WriteSwap32(fShadeFlags); |
|
s->WriteSwap32(fZFlags); |
|
s->WriteSwap32(fMiscFlags); |
|
} |
|
|
|
void hsGMatState::Clear(const hsGMatState& state) |
|
{ |
|
fBlendFlags &= ~state.fBlendFlags; |
|
fClampFlags &= ~state.fClampFlags; |
|
fShadeFlags &= ~state.fShadeFlags; |
|
fZFlags &= ~state.fZFlags; |
|
fMiscFlags &= ~state.fMiscFlags; |
|
} |
|
|
|
void hsGMatState::Composite(const hsGMatState& want, const hsGMatState& on, const hsGMatState& off) |
|
{ |
|
fBlendFlags = want.fBlendFlags & ~off.fBlendFlags; |
|
if( !(fBlendFlags & (kBlendMask & ~(kBlendAlpha|kBlendAntiAlias))) ) |
|
fBlendFlags |= on.fBlendFlags; |
|
|
|
fClampFlags = (want.fClampFlags | on.fClampFlags) & ~off.fClampFlags; |
|
|
|
fShadeFlags = (want.fShadeFlags | on.fShadeFlags) & ~off.fShadeFlags; |
|
#if 0 // This restriction is only valid for glide - handle in glideDevice |
|
if( fBlendFlags & (kBlendAntiAlias | kBlendAlpha) ) |
|
fShadeFlags &= ~(kShadeSpecularAlpha | kShadeSpecularHighlight); |
|
#endif // This restriction is only valid for glide - handle in glideDevice |
|
|
|
fZFlags = (want.fZFlags | on.fZFlags) & ~off.fZFlags; |
|
fMiscFlags = (want.fMiscFlags | on.fMiscFlags) & ~off.fMiscFlags; |
|
} |
|
|
|
#endif // hsGMatStateInline_inc
|
|
|