00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef MOBJECT_MOBJECT_H
00025 #define MOBJECT_MOBJECT_H
00026
00027 #include "pre.hpp"
00028
00029
00030 #include "proc/lumiera.hpp"
00031 #include "proc/mobject/builder/buildertool.hpp"
00032 #include "proc/mobject/placement.hpp"
00033 #include "proc/asset.hpp"
00034
00035 #include <boost/noncopyable.hpp>
00036 #include <boost/operators.hpp>
00037 #include <list>
00038
00039
00040 using std::list;
00041
00042 #include "proc/assetmanager.hpp"
00043 using proc_interface::IDA;
00044
00045 using proc_interface::AssetManager;
00046
00047 namespace mobject
00048 {
00049 using lumiera::P;
00050
00051 namespace session
00052 {
00053 class MObjectFactory;
00054 }
00055
00056
00063 class MObject
00064 : public Buildable,
00065 boost::noncopyable,
00066 boost::equality_comparable< MObject >
00067 {
00068 protected:
00069 typedef lumiera::Time Time;
00070
00071
00072 Time length;
00073
00074 MObject() {}
00075 virtual ~MObject() {};
00076
00077 friend class session::MObjectFactory;
00078
00079
00080 public:
00081 static session::MObjectFactory create;
00082
00084 virtual bool isValid() const =0;
00085
00086 virtual Time& getLength() =0;
00087
00088 virtual bool operator== (const MObject& oo) const =0;
00089
00090 };
00091
00092
00093
00094 typedef Placement<MObject> PMO;
00095
00096
00097
00098 }
00099 #endif