configure.ac simgear/environment/visual_enviro.cxx simgear/ephemeris/ephemeris.cxx simgear/ephemeris/ephemeris.hxx simgear/ephemeris/stardata.cxx simgear/ephemeris/stardata.hxx simgear/math/SGMatrix.hxx simgear/math/SGQuat.hxx simgear/math/SGVec3.hxx simgear/math/SGVec4.hxx simgear/scene/Makefile.am simgear/scene/material/mat.cxx simgear/scene/material/mat.hxx simgear/scene/material/matlib.cxx simgear/scene/material/matlib.hxx simgear/scene/material/matmodel.cxx simgear/scene/material/matmodel.hxx simgear/scene/model/Makefile.am simgear/scene/model/animation.cxx simgear/scene/model/animation.hxx simgear/scene/model/custtrans.hxx simgear/scene/model/model.cxx simgear/scene/model/model.hxx simgear/scene/model/modellib.cxx simgear/scene/model/modellib.hxx simgear/scene/model/personality.cxx simgear/scene/model/personality.hxx simgear/scene/model/placement.cxx simgear/scene/model/placement.hxx simgear/scene/model/placementtrans.cxx simgear/scene/model/placementtrans.hxx simgear/scene/model/shadanim.cxx simgear/scene/model/shadowvolume.hxx simgear/scene/sky/cloud.cxx simgear/scene/sky/cloud.hxx simgear/scene/sky/cloudfield.cxx simgear/scene/sky/dome.cxx simgear/scene/sky/dome.hxx simgear/scene/sky/moon.cxx simgear/scene/sky/moon.hxx simgear/scene/sky/newcloud.cxx simgear/scene/sky/oursun.cxx simgear/scene/sky/oursun.hxx simgear/scene/sky/sky.cxx simgear/scene/sky/sky.hxx simgear/scene/sky/sphere.cxx simgear/scene/sky/sphere.hxx simgear/scene/sky/stars.cxx simgear/scene/sky/stars.hxx simgear/scene/tgdb/apt_signs.cxx simgear/scene/tgdb/apt_signs.hxx simgear/scene/tgdb/leaf.cxx simgear/scene/tgdb/leaf.hxx simgear/scene/tgdb/obj.cxx simgear/scene/tgdb/obj.hxx simgear/scene/tgdb/pt_lights.cxx simgear/scene/tgdb/pt_lights.hxx simgear/scene/tgdb/userdata.cxx simgear/scene/tgdb/userdata.hxx simgear/scene/tgdb/vasi.hxx simgear/screen/jpgfactory.cxx simgear/screen/tr.cxx simgear/structure/Makefile.am simgear/threads/SGThread.hxx Added Files: simgear/scene/util/Makefile.am simgear/scene/util/SGDebugDrawCallback.hxx simgear/scene/util/SGNodeMasks.hxx simgear/scene/util/SGStateAttributeVisitor.hxx simgear/scene/util/SGTextureStateAttributeVisitor.hxx simgear/scene/util/SGUpdateVisitor.hxx Removed Files: simgear/screen/ssgEntityArray.cxx simgear/screen/ssgEntityArray.hxx simgear/structure/ssgSharedPtr.hxx Big BLOB on the way to OSG.
98 lines
2.4 KiB
C++
98 lines
2.4 KiB
C++
// userdata.hxx -- two classes for populating ssg user data slots in association
|
|
// with our implimenation of random surface objects.
|
|
//
|
|
// Written by David Megginson, started December 2001.
|
|
//
|
|
// Copyright (C) 2001 - 2003 Curtis L. Olson - http://www.flightgear.org/~curt
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License as
|
|
// published by the Free Software Foundation; either version 2 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program 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 GNU
|
|
// General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
// $Id$
|
|
|
|
|
|
#ifndef _SG_USERDATA_HXX
|
|
#define _SG_USERDATA_HXX
|
|
|
|
#include <simgear/compiler.h>
|
|
|
|
#include STL_STRING
|
|
|
|
#include <plib/sg.h>
|
|
|
|
#include <osg/Referenced>
|
|
#include <osg/Geometry>
|
|
#include <osg/Group>
|
|
|
|
SG_USING_STD(string);
|
|
|
|
class SGMaterial;
|
|
class SGMatModel;
|
|
class SGMatModelGroup;
|
|
class SGModelLib;
|
|
class SGPropertyNode;
|
|
|
|
|
|
/**
|
|
* the application must call sgUserDataInit() and specify the
|
|
* following values (needed by the model loader callback at draw time)
|
|
* before drawing any scenery.
|
|
*/
|
|
void sgUserDataInit( SGModelLib *m, const string &r,
|
|
SGPropertyNode *p, double t );
|
|
|
|
|
|
/**
|
|
* User data for populating leaves when they come in range.
|
|
*/
|
|
class SGLeafUserData : public osg::Referenced
|
|
{
|
|
public:
|
|
bool is_filled_in;
|
|
osg::Geometry *leaf;
|
|
SGMaterial *mat;
|
|
osg::Group *branch;
|
|
float sin_lat;
|
|
float cos_lat;
|
|
float sin_lon;
|
|
float cos_lon;
|
|
|
|
void setup_triangle( int i );
|
|
};
|
|
|
|
|
|
/**
|
|
* User data for populating triangles when they come in range.
|
|
*/
|
|
class SGTriUserData : public osg::Referenced
|
|
{
|
|
public:
|
|
bool is_filled_in;
|
|
float * p1;
|
|
float * p2;
|
|
float * p3;
|
|
osg::Vec3 center;
|
|
double area;
|
|
SGMatModelGroup * object_group;
|
|
osg::Group * branch;
|
|
SGLeafUserData * leafData;
|
|
unsigned int seed;
|
|
|
|
void fill_in_triangle();
|
|
void add_object_to_triangle(SGMatModel * object);
|
|
void makeWorldMatrix (sgMat4 ROT, double hdg_deg );
|
|
};
|
|
|
|
#endif // _SG_USERDATA_HXX
|