forked from 0ad/0ad
janwas
5bf9bca9ef
there are too many W4 and "potentially uninitialized", so those are disabled by 0ad_warning_disable.h. the silly "int x = strlen" and very dangerous "int x = (void*)p" (and vice versa) problems are fixed. This was SVN commit r5526.
95 lines
2.1 KiB
C++
95 lines
2.1 KiB
C++
#include "precompiled.h"
|
|
#include "0ad_warning_disable.h"
|
|
# include "sr_sn_shape.h"
|
|
|
|
//# define SR_USE_TRACE1 // Const/Dest
|
|
# include "sr_trace.h"
|
|
|
|
//=================================== SrSnShapeBase ====================================
|
|
|
|
SrSnShapeBase::SrSnShapeBase ( const char* name ) : SrSn ( SrSn::TypeShape, name )
|
|
{
|
|
SR_TRACE5 ( "Constructor" );
|
|
|
|
_renderlib_data = 0;
|
|
|
|
_changed = 1;
|
|
_render_mode = srRenderModeDefault;
|
|
_overriden_render_mode = -1;
|
|
_can_override_render_mode = 1;
|
|
_resolution = 1.0f; // the meaning depends on the derived node
|
|
|
|
_material_is_overriden = 0;
|
|
}
|
|
|
|
SrSnShapeBase::~SrSnShapeBase ()
|
|
{
|
|
SR_TRACE5 ( "Destructor" );
|
|
delete _renderlib_data;
|
|
}
|
|
|
|
bool SrSnShapeBase::set_renderlib_data ( SrSnShapeBase::RenderLibData* rdata )
|
|
{
|
|
if ( _renderlib_data ) return false;
|
|
_renderlib_data = rdata;
|
|
return true;
|
|
}
|
|
|
|
void SrSnShapeBase::render_mode ( srRenderMode m )
|
|
{
|
|
if ( _render_mode==m ) return;
|
|
_changed = 1;
|
|
_render_mode = m;
|
|
}
|
|
|
|
void SrSnShapeBase::override_render_mode ( srRenderMode m )
|
|
{
|
|
if ( !_can_override_render_mode ) return;
|
|
if ( _overriden_render_mode<0 ) _overriden_render_mode = _render_mode;
|
|
render_mode ( m );
|
|
}
|
|
|
|
void SrSnShapeBase::restore_render_mode ()
|
|
{
|
|
if ( _overriden_render_mode>=0 )
|
|
{ render_mode ( (srRenderMode)_overriden_render_mode );
|
|
_overriden_render_mode = -1;
|
|
}
|
|
}
|
|
|
|
void SrSnShapeBase::override_material ( SrMaterial m )
|
|
{
|
|
if ( !_material_is_overriden ) _overriden_material = _material;
|
|
material ( m );
|
|
_material_is_overriden = 1;
|
|
}
|
|
|
|
void SrSnShapeBase::restore_material ()
|
|
{
|
|
_material_is_overriden = 0;
|
|
material ( _overriden_material );
|
|
}
|
|
|
|
void SrSnShapeBase::resolution ( float r )
|
|
{
|
|
if (_resolution==r) return;
|
|
if ( r<0 ) r=0;
|
|
_changed=1;
|
|
_resolution=r;
|
|
}
|
|
|
|
void SrSnShapeBase::material ( const SrMaterial& m )
|
|
{
|
|
_changed=1;
|
|
_material=m;
|
|
}
|
|
|
|
void SrSnShapeBase::color ( const SrColor& c )
|
|
{
|
|
_changed=1;
|
|
_material.diffuse=c;
|
|
}
|
|
|
|
//======================================= EOF ====================================
|
|
|