substitutions -- Implementation of special substitution statements on datablock fields.

This commit is contained in:
Marc Chapman 2017-07-26 20:18:27 +01:00
parent 9391fcad4e
commit 0b84fccdd2
12 changed files with 464 additions and 4 deletions

View file

@ -20,6 +20,10 @@
// IN THE SOFTWARE.
//-----------------------------------------------------------------------------
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
// Copyright (C) 2015 Faust Logic, Inc.
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
#ifndef _CONSOLEOBJECT_H_
#define _CONSOLEOBJECT_H_
@ -492,6 +496,7 @@ public:
setDataFn( NULL ),
getDataFn( NULL )
{
doNotSubstitute = keepClearSubsOnly = false;
}
StringTableEntry pFieldname; ///< Name of the field.
@ -509,6 +514,8 @@ public:
TypeValidator *validator; ///< Validator, if any.
SetDataNotify setDataFn; ///< Set data notify Fn
GetDataNotify getDataFn; ///< Get data notify Fn
bool doNotSubstitute;
bool keepClearSubsOnly;
WriteDataNotify writeDataFn; ///< Function to determine whether data should be written or not.
};
typedef Vector<Field> FieldList;
@ -1054,6 +1061,9 @@ public:
static ConsoleObject* __findObject( const char* ) { return NULL; }
static const char* __getObjectId( ConsoleObject* ) { return ""; }
protected:
static bool disableFieldSubstitutions(const char* in_pFieldname);
static bool onlyKeepClearSubstitutions(const char* in_pFieldname);
};
#define addNamedField(fieldName,type,className) addField(#fieldName, type, Offset(fieldName,className))