Hi, class Compass : public osg::Camera { public: Compass(); Compass( const Compass& copy, osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY ); META_Node( osg, Compass ); void setPlate( osg::MatrixTransform* plate ) {_plateTransform = plate; } void setNeedle( osg::MatrixTransform* needle ) {_needleTransform = needle; } void setMainCamera( osg::Camera* camera ) {_mainCamera = camera; } virtual void traverse( osg::NodeVisitor& nv ); protected: virtual ~Compass(); osg::ref_ptr<osg::MatrixTransform> _plateTransform; osg::ref_ptr<osg::MatrixTransform> _needleTransform; osg::observer_ptr<osg::Camera> _mainCamera; };
Compass::Compass( const Compass& copy, osg::CopyOp copyop ):osg::Camera(copy, copyop), _plateTransform(copy._plateTransform), _needleTransform(copy._needleTransform), _mainCamera(copy._mainCamera) { } void Compass::traverse( osg::NodeVisitor& nv ) { if ( _mainCamera.valid() &&nv.getVisitorType()==osg::NodeVisitor::CULL_VISITOR ) { osg::Matrix matrix = _mainCamera->getViewMatrix(); matrix.setTrans( osg::Vec3() ); osg::Vec3 northVec = osg::Z_AXIS * matrix; northVec.z() = 0.0f; northVec.normalize(); osg::Vec3 axis = osg::Y_AXIS ^ northVec; float angle = atan2(axis.length(), osg::Y_AXIS*northVec);axis.normalize(); if ( _plateTransform.valid() ) _plateTransform->setMatrix( osg::Matrix::rotate(angle, axis) ); } _plateTransform->accept( nv ); _needleTransform->accept( nv ); osg::Camera::traverse( nv ); } compass class created but it is showing linker errors due to missing of library.How can i get that library file in osg. ... Thank you! Cheers, Rambabu ------------------ Read this topic online here: http://forum.openscenegraph.org/viewtopic.php?p=69390#69390 _______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org