doxygen: gameengine/Expressions tagged.
[blender-staging.git] / source / gameengine / Expressions / ConstExpr.cpp
1 /** \file gameengine/Expressions/ConstExpr.cpp
2  *  \ingroup expressions
3  */
4 // ConstExpr.cpp: implementation of the CConstExpr class.
5
6 /*
7  * Copyright (c) 1996-2000 Erwin Coumans <coockie@acm.org>
8  *
9  * Permission to use, copy, modify, distribute and sell this software
10  * and its documentation for any purpose is hereby granted without fee,
11  * provided that the above copyright notice appear in all copies and
12  * that both that copyright notice and this permission notice appear
13  * in supporting documentation.  Erwin Coumans makes no
14  * representations about the suitability of this software for any
15  * purpose.  It is provided "as is" without express or implied warranty.
16  *
17  */
18
19 #include "Value.h" // for precompiled header
20 #include "ConstExpr.h"
21 #include "VectorValue.h"
22
23 //////////////////////////////////////////////////////////////////////
24 // Construction/Destruction
25 //////////////////////////////////////////////////////////////////////
26
27 CConstExpr::CConstExpr()
28 {
29 }
30
31
32
33 CConstExpr::CConstExpr(CValue* constval) 
34 /*
35 pre:
36 effect: constructs a CConstExpr cointing the value constval
37 */
38 {
39         m_value = constval;
40 //      m_bModified=true;
41 }
42
43
44
45 CConstExpr::~CConstExpr()
46 /*
47 pre:
48 effect: deletes the object
49 */
50 {
51         if (m_value)
52                 m_value->Release();
53 }
54
55
56
57 unsigned char CConstExpr::GetExpressionID()
58 {
59         return CCONSTEXPRESSIONID;
60 }
61
62
63
64 CValue* CConstExpr::Calculate()
65 /*
66 pre:
67 ret: a new object containing the value of the stored CValue
68 */
69 {
70         return m_value->AddRef();
71 }
72
73
74
75 void CConstExpr::ClearModified()
76
77         if (m_value)
78         {
79                 m_value->SetModified(false);
80                 m_value->SetAffected(false);
81         }
82 }
83
84
85
86 double CConstExpr::GetNumber()
87 {
88         return -1;
89 }
90
91
92
93 bool CConstExpr::NeedsRecalculated()
94 {
95         return m_value->IsAffected(); // IsAffected is m_bModified OR m_bAffected !!!
96 }
97
98
99
100 CExpression* CConstExpr::CheckLink(std::vector<CBrokenLinkInfo*>& brokenlinks)
101 {
102 // parent checks if child is still usefull. 
103 // When for example it's value it's deleted flag set
104 // then release Value, and return NULL in case of constexpression
105 // else return this...
106
107         assertd(m_value);
108         if (m_value->IsReleaseRequested())
109         {
110                 AddRef(); //numchanges++;
111                 return Release();
112         }
113         else
114                 return this;
115 }
116
117
118
119 void CConstExpr::BroadcastOperators(VALUE_OPERATOR op)
120 {
121         assertd(m_value);
122         m_value->SetColorOperator(op);
123 }
124
125
126
127 bool CConstExpr::MergeExpression(CExpression *otherexpr)
128 {
129         assertd(false);
130         return false;
131 }