Initial revision
[blender.git] / source / gameengine / Expressions / Operator2Expr.h
1 /*
2  * Operator2Expr.h: interface for the COperator2Expr 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
16 #if !defined _OPERATOR2EXPR_H
17 #define _OPERATOR2EXPR_H
18
19
20 #include "Expression.h"
21 #include "Value.h"      // Added by ClassView
22
23
24 class COperator2Expr : public CExpression  
25 {
26         //PLUGIN_DECLARE_SERIAL_EXPRESSION (COperator2Expr,CExpression)
27
28 public:
29         virtual bool MergeExpression(CExpression* otherexpr);
30         virtual unsigned char GetExpressionID() { return COPERATOR2EXPRESSIONID;};
31         virtual void BroadcastOperators(VALUE_OPERATOR op);
32         CExpression* CheckLink(std::vector<CBrokenLinkInfo*>& brokenlinks);
33         //virtual bool IsInside(float x,float y,float z,bool bBorderInclude=true);
34         //virtual bool IsLeftInside(float x,float y,float z,bool bBorderInclude);
35         //virtual bool IsRightInside(float x,float y,float z,bool bBorderInclude);
36         bool NeedsRecalculated();
37         void    ClearModified() { 
38                 if (m_lhs)
39                         m_lhs->ClearModified();
40                 if (m_rhs)
41                         m_rhs->ClearModified();
42         }
43         virtual CValue* Calculate();
44         COperator2Expr(VALUE_OPERATOR op, CExpression *lhs, CExpression *rhs);
45         COperator2Expr();
46         virtual ~COperator2Expr();
47
48         
49 protected:
50         CExpression * m_rhs;
51         CExpression * m_lhs;
52         CValue* m_cached_calculate; // cached result
53         
54 private:
55         VALUE_OPERATOR m_op;
56         
57 };
58
59 #endif // !defined _OPERATOR2EXPR_H