merged with upstream/OpenSceneGraph-3.6

This commit is contained in:
valid-ptr
2021-03-24 17:45:11 +03:00
committed by konstantin.matveyev
28 changed files with 162 additions and 90 deletions

View File

@@ -63,6 +63,13 @@ class BoundingSphereImpl
* otherwise. */
inline bool valid() const { return _radius>=0.0; }
inline BoundingSphereImpl& operator = (const BoundingSphereImpl& rhs)
{
_center = rhs._center;
_radius = rhs._radius;
return *this;
}
inline bool operator == (const BoundingSphereImpl& rhs) const { return _center==rhs._center && _radius==rhs._radius; }
inline bool operator != (const BoundingSphereImpl& rhs) const { return _center!=rhs._center || _radius!=rhs._radius; }

View File

@@ -121,6 +121,32 @@ class OSG_EXPORT Callback : public virtual Object {
}
}
/** Convenience method to find a nested callback by type. */
template <typename T>
static T* findNestedCallback(osg::Callback* callback)
{
if (!callback)
return NULL;
if (T* cb = dynamic_cast<T*>(callback))
return cb;
return findNestedCallback<T>(callback->getNestedCallback());
}
/** Convenience method to find a nested callback by type. */
template <typename T>
static const T* findNestedCallback(const osg::Callback* callback)
{
if (!callback)
return NULL;
if (const T* cb = dynamic_cast<const T*>(callback))
return cb;
return findNestedCallback<T>(callback->getNestedCallback());
}
protected:
virtual ~Callback() {}

View File

@@ -149,6 +149,15 @@ class VertexAttribAlias
_osgName(osgName),
_declaration(declaration) {}
VertexAttribAlias& operator = (const VertexAttribAlias& rhs)
{
_location = rhs._location;
_glName = rhs._glName;
_osgName = rhs._osgName;
_declaration = rhs._declaration;
return *this;
}
GLuint _location;
std::string _glName;
std::string _osgName;

View File

@@ -53,6 +53,14 @@ class OSG_EXPORT Quat
_v[3]=w;
}
inline Quat( const Quat& rhs )
{
_v[0]=rhs._v[0];
_v[1]=rhs._v[1];
_v[2]=rhs._v[2];
_v[3]=rhs._v[3];
}
inline Quat( const Vec4f& v )
{
_v[0]=v.x();

View File

@@ -1328,12 +1328,12 @@ class OSG_EXPORT State : public Referenced
inline void popModeList(ModeMap& modeMap,const StateSet::ModeList& modeList);
inline void popAttributeList(AttributeMap& attributeMap,const StateSet::AttributeList& attributeList);
inline void popUniformList(UniformMap& uniformMap,const StateSet::UniformList& uniformList);
inline void popDefineList(DefineMap& uniformMap,const StateSet::DefineList& defineList);
inline void popDefineList(DefineMap& defineMap,const StateSet::DefineList& defineList);
inline void applyModeList(ModeMap& modeMap,const StateSet::ModeList& modeList);
inline void applyAttributeList(AttributeMap& attributeMap,const StateSet::AttributeList& attributeList);
inline void applyUniformList(UniformMap& uniformMap,const StateSet::UniformList& uniformList);
inline void applyDefineList(DefineMap& uniformMap,const StateSet::DefineList& defineList);
inline void applyDefineList(DefineMap& defineMap,const StateSet::DefineList& defineList);
inline void applyModeMap(ModeMap& modeMap);
inline void applyAttributeMap(AttributeMap& attributeMap);

View File

@@ -62,9 +62,9 @@
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
#endif

View File

@@ -105,12 +105,12 @@ namespace osgAnimation
// 2. build deduplicated list of keyframes
unsigned int cumul = 0;
VectorType deduplicated;
for(std::vector<unsigned int>::iterator iterator = intervalSizes.begin() ; iterator != intervalSizes.end() ; ++ iterator) {
for(std::vector<unsigned int>::iterator it = intervalSizes.begin() ; it != intervalSizes.end() ; ++ it) {
deduplicated.push_back((*this)[cumul]);
if(*iterator > 1) {
deduplicated.push_back((*this)[cumul + (*iterator) - 1]);
if(*it > 1) {
deduplicated.push_back((*this)[cumul + (*it) - 1]);
}
cumul += *iterator;
cumul += *it;
}
unsigned int count = size() - deduplicated.size();

View File

@@ -50,7 +50,8 @@ namespace osgDB {
The RegisterReaderWriterProxy can be used to automatically
register at runtime a reader/writer with the Registry.
*/
class OSGDB_EXPORT Registry : public osg::Referenced
class OSGDB_EXPORT Registry : osg::depends_on<OpenThreads::Mutex*, osg::Referenced::getGlobalReferencedMutex>,
public osg::Referenced
{
public:

View File

@@ -283,7 +283,9 @@ struct GraphicsWindowFunctionProxy
extern "C" void graphicswindow_##ext(void); \
static osgViewer::GraphicsWindowFunctionProxy graphicswindowproxy_##ext(graphicswindow_##ext);
#if defined(_WIN32)
#if defined(OSG_WINDOWING_SYSTEM_NONE)
#define USE_GRAPHICSWINDOW()
#elif defined(_WIN32)
#define USE_GRAPHICSWINDOW() USE_GRAPICSWINDOW_IMPLEMENTATION(Win32)
#elif defined(__APPLE__)
#if defined(OSG_WINDOWING_SYSTEM_CARBON)

View File

@@ -75,7 +75,7 @@ public:
Widget (const std::string& = "", point_type = 0.0f, point_type = 0.0f);
Widget (const Widget&, const osg::CopyOp&);
META_Object (osgWidget, Widget);
META_Node (osgWidget, Widget);
virtual ~Widget() {
}