svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r20849:20855
[blender.git] / source / gameengine / Expressions / VectorValue.h
1 /*
2  * VectorValue.h: interface for the CVectorValue class.
3  * $Id$
4  * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
5  *
6  * Permission to use, copy, modify, distribute and sell this software
7  * and its documentation for any purpose is hereby granted without fee,
8  * provided that the above copyright notice appear in all copies and
9  * that both that copyright notice and this permission notice appear
10  * in supporting documentation.  Erwin Coumans makes no
11  * representations about the suitability of this software for any
12  * purpose.  It is provided "as is" without express or implied warranty.
13  *
14  */
15 #if !defined _VECTORVALUE_H
16 #define _VECTORVALUE_H
17
18 #include "Value.h"
19
20 #define KX_X 0
21 #define KX_Y 1
22 #define KX_Z 2
23
24
25 class CVectorValue : public CPropValue  
26 {
27         //PLUGIN_DECLARE_SERIAL(CVectorValue,CValue)
28
29 public:
30         //void Transform(rcMatrix4x4 mat);
31         virtual void SetValue(CValue* newval);
32         void SetVector(double newvec[]);
33         void Configure(CValue* menuvalue);
34         virtual double* GetVector3(bool bGetTransformedVec=false);
35         virtual double          GetNumber();
36         
37         CValue*         Calc(VALUE_OPERATOR op, CValue *val) {
38                 return val->CalcFinal(VALUE_VECTOR_TYPE, op, this);
39         }
40         
41         CValue*         CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
42         
43         
44         CVectorValue(double vec[],const char *name,AllocationTYPE alloctype=CValue::HEAPVALUE);
45         CVectorValue() {};
46
47         CVectorValue(double vec[],AllocationTYPE alloctype=CValue::HEAPVALUE);
48         CVectorValue(float x,float y,float z, AllocationTYPE alloctype = CValue::HEAPVALUE);
49         virtual ~CVectorValue();
50         //virtual bool ExportT3D(File *txtfile,bool bNoName=false);
51         void AddConfigurationData(CValue* menuvalue);
52         
53
54
55         virtual CValue* GetReplica();
56         virtual const STR_String & GetText();
57
58 /*
59         void                    SnapPoint(float num,int snap)
60         {
61                 if (num > 0) num += ((float)snap / 2);
62                 else num -= ((float)snap / 2);
63                 num = (long)(((long)(num / snap)) * snap);
64         };
65
66         void SnapPosition(const double snapvec[])
67         {
68                 
69                 if (snapvec[KX_X] >= 1)
70                         SnapPoint(m_vec[KX_X],snapvec[KX_X]);
71                 if (snapvec[KX_Y] >= 1)
72                         SnapPoint(m_vec[KX_Y],snapvec[KX_Y]);
73                 if (snapvec[KX_Z] >= 1)
74                         SnapPoint(m_vec[KX_Z],snapvec[KX_Z]);
75                         
76         }
77 */
78         
79 protected:
80         double                          m_vec[3];
81         double                          m_transformedvec[3];
82 };
83
84 #endif // !defined _VECTORVALUE_H
85