diff options
author | Hans Lambermont <hans@lambermont.dyndns.org> | 2002-10-12 15:37:38 +0400 |
---|---|---|
committer | Hans Lambermont <hans@lambermont.dyndns.org> | 2002-10-12 15:37:38 +0400 |
commit | 12315f4d0e0ae993805f141f64cb8c73c5297311 (patch) | |
tree | 59b45827cd8293cfb727758989c7a74b40183974 /source/gameengine/Expressions/ConstExpr.cpp |
Initial revisionv2.25
Diffstat (limited to 'source/gameengine/Expressions/ConstExpr.cpp')
-rw-r--r-- | source/gameengine/Expressions/ConstExpr.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/source/gameengine/Expressions/ConstExpr.cpp b/source/gameengine/Expressions/ConstExpr.cpp new file mode 100644 index 00000000000..c8b4c311b7c --- /dev/null +++ b/source/gameengine/Expressions/ConstExpr.cpp @@ -0,0 +1,132 @@ +// ConstExpr.cpp: implementation of the CConstExpr 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. + * + */ + + + +#include "Value.h" // for precompiled header + +#include "ConstExpr.h" +#include "VectorValue.h" + + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CConstExpr::CConstExpr() +{ +} + + + +CConstExpr::CConstExpr(CValue* constval) +/* +pre: +effect: constructs a CConstExpr cointing the value constval +*/ +{ + m_value = constval; +// m_bModified=true; +} + + + +CConstExpr::~CConstExpr() +/* +pre: +effect: deletes the object +*/ +{ + if (m_value) + m_value->Release(); +} + + + +unsigned char CConstExpr::GetExpressionID() +{ + return CCONSTEXPRESSIONID; +} + + + +CValue* CConstExpr::Calculate() +/* +pre: +ret: a new object containing the value of the stored CValue +*/ +{ + return m_value->AddRef(); +} + + + +void CConstExpr::ClearModified() +{ + if (m_value) + { + m_value->SetModified(false); + m_value->SetAffected(false); + } +} + + + +float CConstExpr::GetNumber() +{ + return -1; +} + + + +bool CConstExpr::NeedsRecalculated() +{ + return m_value->IsAffected(); // IsAffected is m_bModified OR m_bAffected !!! +} + + + +CExpression* CConstExpr::CheckLink(std::vector<CBrokenLinkInfo*>& brokenlinks) +{ +// parent checks if child is still usefull. +// When for example it's value it's deleted flag set +// then release Value, and return NULL in case of constexpression +// else return this... + + assertd(m_value); + if (m_value->IsReleaseRequested()) + { + AddRef(); //numchanges++; + return Release(); + } + else + return this; +} + + + +void CConstExpr::BroadcastOperators(VALUE_OPERATOR op) +{ + assertd(m_value); + m_value->SetColorOperator(op); +} + + + +bool CConstExpr::MergeExpression(CExpression *otherexpr) +{ + assertd(false); + return false; +} |