00001 /* 00002 This file is part of the Virtual Object System of 00003 the Interreality project (http://interreality.org). 00004 00005 Copyright (C) 2002 Reed Hedges 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Lesser General Public 00009 License as published by the Free Software Foundation; either 00010 version 2 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public 00018 License along with this library; if not, write to the Free Software 00019 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 00021 Reed Hedges <reed@zerohour.net> 00022 */ 00023 00024 #ifndef _A3DL_BILLBOARD_HH_ 00025 #define _A3DL_BILLBOARD_HH_ 00026 00027 #if defined(_WIN32) && defined(_MSC_VER) 00028 # ifdef A3DL_EXPORTS 00029 # define A3DL_API __declspec(dllexport) 00030 # else 00031 # define A3DL_API __declspec(dllimport) 00032 # endif 00033 #else 00034 # define A3DL_API 00035 #endif 00036 00037 #include "object3d.hh" 00038 00039 namespace A3DL 00040 { 00041 00042 /** Billboard objects are two dimensional images that have a position in 3D space. The first two 00043 components of the object's scaling property define the X and Y dimensions. The Z scaling is 00044 ignored. The orientation is also ignored: billboard objects always face the viewer, and are 00045 always "right side up". The metaobject type for billboard objects is "object3D.billboard". 00046 Position and scaling properties are as in the "object3D" type, and a "material" property 00047 (containing a texture image or solid color) is added. 00048 00049 You should create new Billboard objects using MetaFactory. After creation, you must call 00050 setPropertyAccessControl() on the new object, as well as setPosition(), setScaling() (even though 00051 the Z scaling factory is ignored, you should supply a value), and setOrientation() (even though 00052 the orientation is irrelevant) -- Object3D requires values for all of these properties to work. 00053 00054 @see Object3D for position, scaling methods, etc. 00055 @see MeshBase for texture (material) related methods. 00056 00057 @author Reed Hedges <reed@zerohour.net> March, 2002. See source file for Copyright. 00058 */ 00059 00060 class A3DL_API Billboard : public virtual Object3D 00061 { 00062 public: 00063 Billboard(MetaObject* superobject); 00064 virtual ~Billboard(); 00065 virtual const string getType(); 00066 static void registerExtenders(); 00067 static MetaObject* new_Billboard(MetaObject* superobject, const string& type); 00068 }; 00069 } 00070 00071 #endif