This file is indexed.

/usr/include/osg/ProxyNode is in libopenscenegraph-dev 3.2.0~rc1-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
 *
 * This library is open source and may be redistributed and/or modified under
 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
 * (at your option) any later version.  The full license is in LICENSE file
 * included with this distribution, and on the openscenegraph.org website.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * OpenSceneGraph Public License for more details.
*/

#ifndef OSG_ProxyNode
#define OSG_ProxyNode 1

#include <osg/Group>

namespace osg {

/** ProxyNode.
*/
class OSG_EXPORT ProxyNode : public Group
{
    public :

        ProxyNode();

        /** Copy constructor using CopyOp to manage deep vs shallow copy.*/
        ProxyNode(const ProxyNode&,const CopyOp& copyop=CopyOp::SHALLOW_COPY);

        META_Node(osg, ProxyNode);

        typedef osg::BoundingSphere::vec_type vec_type;
        typedef osg::BoundingSphere::value_type value_type;

        virtual void traverse(NodeVisitor& nv);

        virtual bool addChild(Node *child);
        virtual bool addChild(Node *child, const std::string& filename);

        virtual bool removeChildren(unsigned int pos,unsigned int numChildrenToRemove);


        /** Set the optional database osgDB::Options object to use when loading children.*/
        void setDatabaseOptions(osg::Referenced* options) { _databaseOptions = options; }

        /** Get the optional database osgDB::Options object used when loading children.*/
        osg::Referenced* getDatabaseOptions() { return _databaseOptions.get(); }

        /** Get the optional database osgDB::Options object used when loading children.*/
        const osg::Referenced* getDatabaseOptions() const { return _databaseOptions.get(); }


        /** Set the database path to prepend to children's filenames.*/
        void setDatabasePath(const std::string& path);
        /** Get the database path used to prepend to children's filenames.*/
        inline const std::string& getDatabasePath() const { return _databasePath; }

        void setFileName(unsigned int childNo, const std::string& filename) { expandFileNameListTo(childNo); _filenameList[childNo].first=filename; }
        const std::string& getFileName(unsigned int childNo) const { return _filenameList[childNo].first; }
        unsigned int getNumFileNames() const { return _filenameList.size(); }

        /** Return the DatabaseRequest object used by the DatabasePager to keep track of file load requests
          * being carried out on behalf of the DatabasePager.
          * Note, in normal OSG usage you should not set this value yourself, as this will be managed by
          * the osgDB::DatabasePager.*/
        osg::ref_ptr<osg::Referenced>& getDatabaseRequest(unsigned int childNo) { return _filenameList[childNo].second; }

        /** Return the const DatabaseRequest object.*/
        const osg::ref_ptr<osg::Referenced>& getDatabaseRequest(unsigned int childNo) const { return _filenameList[childNo].second; }


        /** Modes which control how the center of object should be determined when computing which child is active.*/
        enum CenterMode
        {
            USE_BOUNDING_SPHERE_CENTER,
            USER_DEFINED_CENTER,
            UNION_OF_BOUNDING_SPHERE_AND_USER_DEFINED
        };

        /** Set how the center of object should be determined when computing which child is active.*/
        void setCenterMode(CenterMode mode) { _centerMode=mode; }

        /** Get how the center of object should be determined when computing which child is active.*/
        CenterMode getCenterMode() const { return _centerMode; }

        /** Modes which control how the proxynode external reference are loaded.*/
        enum LoadingExternalReferenceMode
        {
            LOAD_IMMEDIATELY,
            DEFER_LOADING_TO_DATABASE_PAGER,
            NO_AUTOMATIC_LOADING
        };

        /** Set how the child loading is done.*/
        void setLoadingExternalReferenceMode(LoadingExternalReferenceMode mode) { _loadingExtReference=mode; }

        /** Get the loading mode.*/
        LoadingExternalReferenceMode getLoadingExternalReferenceMode() const { return _loadingExtReference; }

        /** Sets the object-space point which defines the center of the osg::ProxyNode.
            Center is affected by any transforms in the hierarchy above the osg::ProxyNode.*/
        inline void setCenter(const vec_type& center) { if (_centerMode!=UNION_OF_BOUNDING_SPHERE_AND_USER_DEFINED) { _centerMode=USER_DEFINED_CENTER; } _userDefinedCenter = center; }

        /** Return the ProxyNode center point. */
        inline const vec_type& getCenter() const { if ((_centerMode==USER_DEFINED_CENTER)||(_centerMode==UNION_OF_BOUNDING_SPHERE_AND_USER_DEFINED)) return _userDefinedCenter; else return getBound().center(); }


        /** Set the object-space reference radius of the volume enclosed by the ProxyNode.
          * Used to determine the bounding sphere of the ProxyNode in the absence of any children.*/
        inline void setRadius(value_type radius) { _radius = radius; }

        /** Get the object-space radius of the volume enclosed by the ProxyNode.*/
        inline value_type getRadius() const { return _radius; }

        virtual BoundingSphere computeBound() const;

    protected :

        virtual ~ProxyNode() {}

        void expandFileNameListTo(unsigned int pos);

        typedef std::pair< std::string, osg::ref_ptr<osg::Referenced> >  FileNameDatabaseRequestPair;
        typedef std::vector<FileNameDatabaseRequestPair>                 FileNameDatabaseRequestList;

        FileNameDatabaseRequestList     _filenameList;
        ref_ptr<Referenced>             _databaseOptions;
        std::string                     _databasePath;

        LoadingExternalReferenceMode    _loadingExtReference;

        CenterMode                      _centerMode;
        vec_type                        _userDefinedCenter;
        value_type                      _radius;

};

}

#endif