diff options
Diffstat (limited to 'source/gameengine/Expressions/EXP_VectorValue.h')
-rw-r--r-- | source/gameengine/Expressions/EXP_VectorValue.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/source/gameengine/Expressions/EXP_VectorValue.h b/source/gameengine/Expressions/EXP_VectorValue.h new file mode 100644 index 00000000000..d87d5097156 --- /dev/null +++ b/source/gameengine/Expressions/EXP_VectorValue.h @@ -0,0 +1,94 @@ +/* + * VectorValue.h: interface for the CVectorValue class. + * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org> + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Erwin Coumans makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + */ + +/** \file EXP_VectorValue.h + * \ingroup expressions + */ + +#ifndef __EXP_VECTORVALUE_H__ +#define __EXP_VECTORVALUE_H__ + +#include "EXP_Value.h" + +#define KX_X 0 +#define KX_Y 1 +#define KX_Z 2 + + +class CVectorValue : public CPropValue +{ + //PLUGIN_DECLARE_SERIAL(CVectorValue,CValue) + +public: + //void Transform(rcMatrix4x4 mat); + virtual void SetValue(CValue* newval); + void SetVector(double newvec[]); + void Configure(CValue* menuvalue); + virtual double* GetVector3(bool bGetTransformedVec=false); + virtual double GetNumber(); + virtual int GetValueType(); + + CValue* Calc(VALUE_OPERATOR op, CValue *val) { + return val->CalcFinal(VALUE_VECTOR_TYPE, op, this); + } + + CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val); + + + CVectorValue(double vec[3], const char *name,AllocationTYPE alloctype=CValue::HEAPVALUE); + CVectorValue() {}; + + CVectorValue(double vec[3], AllocationTYPE alloctype=CValue::HEAPVALUE); + CVectorValue(float x,float y,float z, AllocationTYPE alloctype = CValue::HEAPVALUE); + virtual ~CVectorValue(); + //virtual bool ExportT3D(File *txtfile,bool bNoName=false); + void AddConfigurationData(CValue* menuvalue); + + + + virtual CValue* GetReplica(); + virtual const STR_String & GetText(); + +#if 0 + void SnapPoint(float num,int snap) + { + if (num > 0) num += ((float)snap / 2); + else num -= ((float)snap / 2); + num = (long)(((long)(num / snap)) * snap); + }; + + void SnapPosition(const double snapvec[]) + { + + if (snapvec[KX_X] >= 1) + SnapPoint(m_vec[KX_X],snapvec[KX_X]); + if (snapvec[KX_Y] >= 1) + SnapPoint(m_vec[KX_Y],snapvec[KX_Y]); + if (snapvec[KX_Z] >= 1) + SnapPoint(m_vec[KX_Z],snapvec[KX_Z]); + + } +#endif + +protected: + double m_vec[3]; + double m_transformedvec[3]; + + +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("GE:CVectorValue") +#endif +}; + +#endif /* __EXP_VECTORVALUE_H__ */ |