// This file is a part of the Framsticks GDK. // Copyright (C) 1999-2014 Maciej Komosinski and Szymon Ulatowski. See LICENSE.txt for details. // Refer to http://www.framsticks.com/ for further information. #ifndef _3DOBJECT_H_ #define _3DOBJECT_H_ #include #include class Pt3D_Ext: public DestrBase { public: Pt3D p; Pt3D_Ext(double x,double y,double z):p(x,y,z) {} Pt3D_Ext():p(0,0,0) {} Pt3D_Ext(const Pt3D &i):p(i) {} #define STATRICKCLASS Pt3D_Ext PARAMPROCDEF(p_new); PARAMPROCDEF(p_newFromVector); PARAMPROCDEF(p_clone); PARAMGETDEF(length); PARAMPROCDEF(p_addvec); PARAMPROCDEF(p_subvec); PARAMPROCDEF(p_scale); PARAMPROCDEF(p_rotate); PARAMPROCDEF(p_revrotate); PARAMPROCDEF(p_normalize); PARAMGETDEF(toString); PARAMGETDEF(toVector); PARAMPROCDEF(p_set); PARAMPROCDEF(p_set3); PARAMPROCDEF(p_get); #undef STATRICKCLASS static ParamInterface* getInterface(); static ExtObject makeStaticObject(Pt3D* p); static ExtObject makeDynamicObject(Pt3D_Ext* p); static Pt3D_Ext* fromObject(const ExtValue& v); static Param& getStaticParam(); static ParamEntry* getStaticParamtab(); }; class Orient_Ext: public DestrBase { public: Orient o; Orient_Ext():o(Orient_1) {} Orient_Ext(const Orient& other):o(other) {} #define STATRICKCLASS Orient_Ext PARAMPROCDEF(p_new); PARAMPROCDEF(p_newFromVector); PARAMPROCDEF(p_clone); PARAMGETDEF(toString); PARAMGETDEF(toVector); PARAMGETDEF(x); PARAMGETDEF(y); PARAMGETDEF(z); PARAMPROCDEF(p_rotate3); PARAMPROCDEF(p_rotate); PARAMPROCDEF(p_revrotate); PARAMPROCDEF(p_lookat); PARAMPROCDEF(p_normalize); PARAMPROCDEF(p_between2); PARAMPROCDEF(p_betweenOV); PARAMPROCDEF(p_set); PARAMPROCDEF(p_reset); PARAMPROCDEF(p_localToWorld); PARAMPROCDEF(p_worldToLocal); #undef STATRICKCLASS static ParamInterface* getInterface(); static ExtObject makeStaticObject(Orient* p); static ExtObject makeDynamicObject(Orient_Ext* p); static Orient_Ext* fromObject(const ExtValue& v); static Param& getStaticParam(); static ParamEntry* getStaticParamtab(); }; class ReferenceObj: public DestrBase { public: ExtValue *value; ExtObject obj; int prop; ReferenceObj(ExtValue *val):value(val) {} ReferenceObj() {} ReferenceObj(const ExtObject &o,int p):value(0),obj(o),prop(p) {} ReferenceObj(const ExtObject &o,const SString &p); #define STATRICKCLASS ReferenceObj PARAMPROCDEF(p_newS); PARAMPROCDEF(p_newO); PARAMPROCDEF(p_copyFrom); PARAMGETDEF(toString); PARAMGETDEF(value); PARAMSETDEF(value); #undef STATRICKCLASS static ParamInterface* getInterface(); static ExtObject makeDynamicObject(ReferenceObj* r); static ReferenceObj* fromObject(const ExtValue& v); static Param& getStaticParam(); static ParamEntry* getStaticParamtab(); }; #endif