00001 00002 // 00003 // Copyright (C) 2006 James M. Lawrence. All rights reserved. 00004 // 00005 // software: esve-1.0.3 00006 // file: esve/engine/dim3/Frame.hxx 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions 00010 // are met: 00011 // 00012 // 1. Redistributions of source code must retain the above copyright 00013 // notice, this list of conditions and the following disclaimer. 00014 // 00015 // 2. The origin of this software must not be misrepresented; you must 00016 // not claim that you wrote the original software. If you use this 00017 // software in a product, an acknowledgment in the product 00018 // documentation would be appreciated but is not required. 00019 // 00020 // 3. Altered source versions must be plainly marked as such, and must 00021 // not be misrepresented as being the original software. 00022 // 00023 // 4. The name of the author may not be used to endorse or promote 00024 // products derived from this software without specific prior written 00025 // permission. 00026 // 00027 // THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY, 00028 // AND WITH NO CLAIM AS TO ITS SUITABILITY FOR ANY PURPOSE. IN NO EVENT 00029 // SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM WHATSOEVER MADE IN CONNECTION 00030 // TO THIS SOFTWARE. 00031 // 00033 00034 #ifndef esve_engine_dim3_Frame_hxx 00035 #define esve_engine_dim3_Frame_hxx 00036 00037 #include <esve/engine/dim3/Transform_Stowed.hxx> 00038 #include <esve/message/Update_Receiver.hxx> 00039 00040 namespace esve { namespace engine { namespace dim3 { 00041 00042 namespace impl { class Frame ; } 00043 00054 00055 class Frame 00056 : virtual public Transform_Stowed, 00057 virtual public message::Update_Receiver 00058 { 00059 public: 00061 virtual 00062 const engine::dim3::Transform & 00063 world_transform() const = 0 ; 00064 00067 virtual void add( Frame & ) = 0 ; 00068 virtual void remove( Frame & ) = 0 ; 00069 virtual void remove_all() = 0 ; 00071 00072 // not encouraged; leave out of doxygen. 00073 virtual void remove_parent() = 0 ; 00074 00075 // mandatory implementation 00076 virtual impl::Frame & frame() = 0 ; 00077 virtual const impl::Frame & frame() const = 0 ; 00078 00079 virtual ~Frame() = 0 ; 00080 00081 protected: 00082 Frame() ; 00083 00084 private: 00085 Frame( const Frame & ) ; 00086 Frame & operator=( const Frame & ) ; 00087 } ; 00088 00089 }}} // namespace esve::engine::dim3 00090 00091 #endif 00092
1.3.4