⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expancillaryrecords.cpp

📁 最新osg包
💻 CPP
字号:
/*  * 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 the 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.*///// Copyright(c) 2008 Skew Matrix Software LLC.//#include "FltExportVisitor.h"#include "DataOutputStream.h"#include "Opcodes.h"#include <osg/MatrixTransform>#include <osg/Notify>namespace flt{/** If the DataOutputStream parameter is NULL, write to the _records    member variable. Otherwise, write to the specified DataOutputStream.    */voidFltExportVisitor::writeComment( const osg::Node& node, DataOutputStream* dos ){    if (dos==NULL)        dos = _records;    // Write all descriptions as Comment records.    unsigned int nd = node.getNumDescriptions();    unsigned int idx=0;    while( idx < nd )    {        const std::string& com = node.getDescription( idx );        unsigned int iLen = com.length() + 5;        if (iLen > 0xffff)        {            // short overrun            std::string warning( "fltexp: writeComment: Descriptions too long, resorts in short overrun. Skipping." );            _fltOpt->getWriteResult().warn( warning );            osg::notify( osg::WARN ) << warning << std::endl;            continue;        }        uint16 length( (uint16)iLen );        dos->writeInt16( (int16) COMMENT_OP );        dos->writeInt16( length );        dos->writeString( com );        idx++;    }}/** If the DataOutputStream parameter is NULL, write to the _records    member variable. Otherwise, write to the specified DataOutputStream.    */voidFltExportVisitor::writeLongID( const std::string& id, DataOutputStream* dos ){    if (dos==NULL)        dos = _records;    uint16 length( 2 + 2 + id.length() + 1 );  // +1 for terminating '\0'    dos->writeInt16( (int16) LONG_ID_OP );    dos->writeUInt16( length );    dos->writeString( id );}voidFltExportVisitor::writeMatrix( const osg::Referenced* ref ){    const osg::RefMatrix* rm = dynamic_cast<const osg::RefMatrix*>( ref );    if (!rm)        return;    uint16 length( 4 + (16 * sizeof(float32)) );    _records->writeInt16( (int16) MATRIX_OP );    _records->writeUInt16( length );    int idx, jdx;    for (idx=0; idx<4; idx++)    {        for (jdx=0; jdx<4; jdx++)        {            _records->writeFloat32( (*rm)( idx, jdx ) );        }    }}voidFltExportVisitor::writeContinuationRecord( const unsigned short length ){    osg::notify( osg::DEBUG_INFO ) << "fltexp: Continuation record length: " << length+4 << std::endl;    _records->writeInt16( (int16) CONTINUATION_OP );    _records->writeUInt16( length+4 );}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -