Added preliminary support for writing VolumeSettings to disk from within Present3D in response to pressing and releasing 'Ctrl-S'.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14363 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -292,11 +292,11 @@ public:
|
||||
useTabbedDragger(false),
|
||||
useTrackballDragger(false),
|
||||
region_in_pixel_coords(false),
|
||||
alphaValue("1.0"),
|
||||
cutoffValue("0.1"),
|
||||
exteriorTransparencyFactorValue(""),
|
||||
sampleDensityValue("0.005"),
|
||||
sampleRatioValue("1.0"),
|
||||
alphaValue(),
|
||||
cutoffValue(),
|
||||
exteriorTransparencyFactorValue(),
|
||||
sampleDensityValue(),
|
||||
sampleRatioValue(),
|
||||
colorSpaceOperation(osg::NO_COLOR_SPACE_OPERATION),
|
||||
colorModulate(1.0f,1.0f,1.0f,1.0f),
|
||||
technique(osgVolume::VolumeSettings::RayTraced)
|
||||
|
||||
@@ -40,6 +40,7 @@ class SampleDensityProperty;
|
||||
class SampleDensityWhenMovingProperty;
|
||||
class TransparencyProperty;
|
||||
class ExteriorTransparencyFactorProperty;
|
||||
class VolumeSettings;
|
||||
|
||||
class OSGVOLUME_EXPORT PropertyVisitor
|
||||
{
|
||||
@@ -49,24 +50,24 @@ class OSGVOLUME_EXPORT PropertyVisitor
|
||||
|
||||
virtual ~PropertyVisitor() {}
|
||||
|
||||
virtual void apply(Property&) {}
|
||||
virtual void apply(Property&);
|
||||
virtual void apply(CompositeProperty&);
|
||||
virtual void apply(SwitchProperty&);
|
||||
virtual void apply(TransferFunctionProperty&) {}
|
||||
virtual void apply(ScalarProperty&) {}
|
||||
virtual void apply(IsoSurfaceProperty&) {}
|
||||
virtual void apply(AlphaFuncProperty&) {}
|
||||
virtual void apply(MaximumIntensityProjectionProperty&) {}
|
||||
virtual void apply(LightingProperty&) {}
|
||||
virtual void apply(SampleRatioProperty&) {}
|
||||
virtual void apply(SampleRatioWhenMovingProperty&) {}
|
||||
virtual void apply(SampleDensityProperty&) {}
|
||||
virtual void apply(SampleDensityWhenMovingProperty&) {}
|
||||
virtual void apply(TransparencyProperty&) {}
|
||||
virtual void apply(ExteriorTransparencyFactorProperty&) {}
|
||||
virtual void apply(TransferFunctionProperty&);
|
||||
virtual void apply(ScalarProperty&);
|
||||
virtual void apply(IsoSurfaceProperty&);
|
||||
virtual void apply(AlphaFuncProperty&);
|
||||
virtual void apply(MaximumIntensityProjectionProperty&);
|
||||
virtual void apply(LightingProperty&);
|
||||
virtual void apply(SampleRatioProperty&);
|
||||
virtual void apply(SampleRatioWhenMovingProperty&);
|
||||
virtual void apply(SampleDensityProperty&);
|
||||
virtual void apply(SampleDensityWhenMovingProperty&);
|
||||
virtual void apply(TransparencyProperty&);
|
||||
virtual void apply(ExteriorTransparencyFactorProperty&);
|
||||
virtual void apply(VolumeSettings&);
|
||||
|
||||
bool _traverseOnlyActiveChildren;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -82,6 +83,7 @@ class OSGVOLUME_EXPORT Property : public osg::Object
|
||||
META_Object(osgVolume, Property);
|
||||
|
||||
virtual void accept(PropertyVisitor& pv) { pv.apply(*this); }
|
||||
virtual void traverse(PropertyVisitor& pv) {}
|
||||
|
||||
protected:
|
||||
|
||||
@@ -101,6 +103,16 @@ class OSGVOLUME_EXPORT CompositeProperty : public Property
|
||||
|
||||
virtual void accept(PropertyVisitor& pv) { pv.apply(*this); }
|
||||
|
||||
virtual void traverse(PropertyVisitor& pv)
|
||||
{
|
||||
for(Properties::iterator itr = _properties.begin();
|
||||
itr != _properties.end();
|
||||
++itr)
|
||||
{
|
||||
(*itr)->accept(pv);
|
||||
}
|
||||
}
|
||||
|
||||
void clear();
|
||||
|
||||
typedef std::vector< osg::ref_ptr<Property> > Properties;
|
||||
@@ -139,6 +151,22 @@ class OSGVOLUME_EXPORT SwitchProperty : public CompositeProperty
|
||||
|
||||
virtual void accept(PropertyVisitor& pv) { pv.apply(*this); }
|
||||
|
||||
virtual void traverse(PropertyVisitor& pv)
|
||||
{
|
||||
if (pv._traverseOnlyActiveChildren)
|
||||
{
|
||||
if (_activeProperty>=0 && static_cast<unsigned int>(_activeProperty)<=getNumProperties())
|
||||
{
|
||||
_properties[_activeProperty]->accept(pv);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CompositeProperty::traverse(pv);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Set which child property is active.
|
||||
* -1 disables all children.*/
|
||||
void setActiveProperty(int i) { _activeProperty = i; }
|
||||
@@ -411,7 +439,6 @@ class OSGVOLUME_EXPORT CollectPropertiesVisitor : public osgVolume::PropertyVisi
|
||||
|
||||
CollectPropertiesVisitor(bool traverseOnlyActiveChildren=true);
|
||||
|
||||
virtual void apply(Property&);
|
||||
virtual void apply(TransferFunctionProperty&);
|
||||
virtual void apply(ScalarProperty&);
|
||||
virtual void apply(IsoSurfaceProperty& iso);
|
||||
|
||||
@@ -31,6 +31,7 @@ class OSGVOLUME_EXPORT VolumeSettings : public Property
|
||||
META_Object(osgVolume, VolumeSettings);
|
||||
|
||||
virtual void accept(PropertyVisitor& pv);
|
||||
virtual void traverse(PropertyVisitor& pv);
|
||||
|
||||
enum Technique
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user