doxygen: gameengine/Expressions tagged.
[blender-staging.git] / source / gameengine / Expressions / EmptyValue.cpp
1 /** \file gameengine/Expressions/EmptyValue.cpp
2  *  \ingroup expressions
3  */
4
5 // EmptyValue.cpp: implementation of the CEmptyValue class.
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 "EmptyValue.h"
20 #include "IntValue.h"
21 #include "FloatValue.h"
22 #include "StringValue.h"
23 #include "ErrorValue.h"
24 #include "ListValue.h"
25 #include "VoidValue.h"
26
27 //////////////////////////////////////////////////////////////////////
28 // Construction/Destruction
29 //////////////////////////////////////////////////////////////////////
30
31 CEmptyValue::CEmptyValue()
32 /*
33 pre:
34 effect: constructs a new CEmptyValue
35 */
36 {
37         SetModified(false);
38 }
39
40
41
42 CEmptyValue::~CEmptyValue()
43 /*
44 pre:
45 effect: deletes the object
46 */
47 {
48
49 }
50
51
52
53 CValue * CEmptyValue::Calc(VALUE_OPERATOR op, CValue * val)
54 /*
55 pre:
56 ret: a new object containing the result of applying operator op to this
57 object and val
58 */
59 {
60         return val->CalcFinal(VALUE_EMPTY_TYPE, op, this);
61         
62 }
63
64
65
66 CValue * CEmptyValue::CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue * val)
67 /*
68 pre: the type of val is dtype
69 ret: a new object containing the result of applying operator op to val and
70 this object
71 */
72 {
73         return val->AddRef();
74 }
75
76
77
78 double CEmptyValue::GetNumber()
79 {
80         return 0;
81 }
82
83
84
85 CListValue* CEmptyValue::GetPolySoup()
86 {
87         CListValue* soup = new CListValue();
88         //don't add any poly, while it's an empty value
89         return soup;
90 }
91
92
93
94 bool CEmptyValue::IsInside(CValue* testpoint,bool bBorderInclude)
95 {
96         // empty space is solid, so always inside
97         return true;
98 }
99
100
101
102 double* CEmptyValue::GetVector3(bool bGetTransformedVec)
103
104         assertd(false); // don't get vector from me
105         return ZeroVector();
106 }
107
108
109
110 static STR_String emptyString = STR_String("");
111
112
113 const STR_String & CEmptyValue::GetText()
114 {
115         return emptyString;
116 }
117
118
119
120 CValue* CEmptyValue::GetReplica()
121
122         CEmptyValue* replica = new CEmptyValue(*this);
123         replica->ProcessReplica();
124         return replica;
125 }
126