--User changes

-Allow for continuous update during interactive rendering.

--Code changes
 -Make some variation related functions const where appropriate.
 -Use auto keyword more.
This commit is contained in:
mfeemster
2015-06-28 17:48:26 -07:00
parent e8af1050b3
commit 770ff4622c
17 changed files with 91 additions and 68 deletions

View File

@ -879,8 +879,8 @@ public:
if (tempParVar != nullptr && (parVar->ParamCount() == tempParVar->ParamCount()))//This check will should always be true, but just check to be absolutely sure to avoid clobbering memory.
{
ParamWithName<T>* params = parVar->Params();
ParamWithName<T>* tempParams = tempParVar->Params();
auto params = parVar->Params();
auto tempParams = tempParVar->Params();
for (l = 0; l < parVar->ParamCount(); l++)
{

View File

@ -529,7 +529,7 @@ private:
if (parVar)
{
ParamWithName<T>* params = parVar->Params();
auto params = parVar->Params();
for (j = 0; j < parVar->ParamCount(); j++)
{

View File

@ -547,18 +547,18 @@ public:
if (second != nullptr && first.size() == c.size())
{
second->Clear();
ParamWithName<T>* secondParams = second->Params();
auto secondParams = second->Params();
//Iterate through each of the source variations.
for (size_t i = 0; i < first.size(); i++)
{
ParametricVariation<T>* firstVar = first[i];
auto firstVar = first[i];
//Make sure the source variation at this index is the same type as the variation being written to.
if (firstVar->VariationId() == second->VariationId())
{
size_t size = firstVar->ParamCount();
ParamWithName<T>* firstParams = firstVar->Params();
auto firstParams = firstVar->Params();
//Multiply each parameter of the variation at this index by the coefficient at this index, and add
//the result to the corresponding parameter in second.

View File

@ -607,7 +607,9 @@ FilterAndAccum:
AccumOnly:
if (m_ProcessState == FILTER_DONE || forceOutput)
{
if (m_Callback && !m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 0, 2, 0))//Original only allowed stages 0 and 1. Add 2 to mean final accum.
//Original only allowed stages 0 and 1. Add 2 to mean final accum.
//Do not update state/progress on forced output because it will be immediately overwritten.
if (m_Callback && !forceOutput && !m_Callback->ProgressFunc(m_Ember, m_ProgressParameter, 0, 2, 0))
{
Abort();
success = RENDER_ABORT;

View File

@ -1232,7 +1232,7 @@ public:
/// Abstract copy function. Derived classes must implement.
/// </summary>
/// <returns>A copy of this object</returns>
virtual Variation<T>* Copy() = 0;
virtual Variation<T>* Copy() const = 0;
/// <summary>
/// Create a new Variation<float>, store it in the pointer reference passed in and
@ -1695,7 +1695,7 @@ public:
/// </summary>
/// <param name="name">The name to search for</param>
/// <returns>A pointer to the parameter value if the name matched, else false.</returns>
T* GetParam(const char* name)
T* GetParam(const char* name) const
{
for (auto& param : m_Params)
if (!_stricmp(param.Name().c_str(), name))
@ -1825,8 +1825,8 @@ public:
/// <summary>
/// Accessors.
/// </summary>
ParamWithName<T>* Params() { return &m_Params[0]; }
size_t ParamCount() { return m_Params.size(); }
const ParamWithName<T>* Params() const { return &m_Params[0]; }
size_t ParamCount() const { return m_Params.size(); }
const vector<ParamWithName<T>>& ParamsVec() const { return m_Params; }
protected:
@ -1898,7 +1898,7 @@ protected:
{ \
} \
\
virtual Variation<T>* Copy() override \
virtual Variation<T>* Copy() const override \
{ \
return new name<T>(*this); \
} \
@ -1925,7 +1925,7 @@ protected:
{ \
} \
\
virtual Variation<T>* Copy() override \
virtual Variation<T>* Copy() const override \
{ \
return new name<T>(*this); \
} \
@ -2011,7 +2011,7 @@ protected:
CopyParamVals(var.ParamsVec()); /* Copy values from var's vector and precalc. */ \
} \
\
virtual Variation<T>* Copy() override \
virtual Variation<T>* Copy() const override \
{ \
return new name<T>(*this); \
} \
@ -2042,7 +2042,7 @@ protected:
CopyParamVals(var.ParamsVec()); /* Copy values from var's vector and precalc. */ \
} \
\
virtual Variation<T>* Copy() override \
virtual Variation<T>* Copy() const override \
{ \
return new name<T>(*this); \
} \

View File

@ -375,7 +375,7 @@ public:
/// </summary>
/// <param name="index">The index in the list to retrieve</param>
/// <returns>A pointer to the variation at the index if in range, else nullptr.</returns>
Variation<T>* GetVariation(size_t index) { return index < m_Variations.size() ? m_Variations[index] : nullptr; }
const Variation<T>* GetVariation(size_t index) const { return index < m_Variations.size() ? m_Variations[index] : nullptr; }
/// <summary>
/// Get a pointer to the variation of a specified type at the specified index.
@ -383,7 +383,7 @@ public:
/// <param name="index">The index in the list to retrieve</param>
/// <param name="varType">The type of variation to retrieve</param>
/// <returns>A pointer to the variation of the specified type at the index if in range, else nullptr.</returns>
Variation<T>* GetVariation(size_t index, eVariationType varType)
const Variation<T>* GetVariation(size_t index, eVariationType varType) const
{
if (varType == VARTYPE_REG)
return index < m_RegVariations.size() ? m_RegVariations[index] : nullptr;
@ -402,15 +402,15 @@ public:
/// <param name="index">The index in the list to make a copy of</param>
/// <param name="weight">The weight to assign the new copy. Default: 1</param>
/// <returns>A pointer to the variation at the index if in range, else nullptr.</returns>
Variation<T>* GetVariationCopy(size_t index, T weight = 1) { return MakeCopyWithWeight(GetVariation(index), weight); }
Variation<T>* GetVariationCopy(size_t index, eVariationType varType, T weight = 1) { return MakeCopyWithWeight(GetVariation(index, varType), weight); }
Variation<T>* GetVariationCopy(size_t index, T weight = 1) const { return MakeCopyWithWeight(GetVariation(index), weight); }
Variation<T>* GetVariationCopy(size_t index, eVariationType varType, T weight = 1) const { return MakeCopyWithWeight(GetVariation(index, varType), weight); }
/// <summary>
/// Get a pointer to the variation with the specified ID.
/// </summary>
/// <param name="id">The ID to search for</param>
/// <returns>A pointer to the variation if found, else nullptr.</returns>
Variation<T>* GetVariation(eVariationId id)
const Variation<T>* GetVariation(eVariationId id) const
{
for (uint i = 0; i < m_Variations.size() && m_Variations[i] != nullptr; i++)
if (id == m_Variations[i]->VariationId())
@ -426,14 +426,14 @@ public:
/// <param name="id">The id of the variation in the list to make a copy of</param>
/// <param name="weight">The weight to assign the new copy. Default: 1</param>
/// <returns>A pointer to the variation with a matching ID, else nullptr.</returns>
Variation<T>* GetVariationCopy(eVariationId id, T weight = 1) { return MakeCopyWithWeight(GetVariation(id), weight); }
Variation<T>* GetVariationCopy(eVariationId id, T weight = 1) const { return MakeCopyWithWeight(GetVariation(id), weight); }
/// <summary>
/// Get a pointer to the variation with the specified name.
/// </summary>
/// <param name="name">The name to search for</param>
/// <returns>A pointer to the variation if found, else nullptr.</returns>
Variation<T>* GetVariation(const string& name)
const Variation<T>* GetVariation(const string& name) const
{
for (uint i = 0; i < m_Variations.size() && m_Variations[i] != nullptr; i++)
if (!_stricmp(name.c_str(), m_Variations[i]->Name().c_str()))
@ -449,7 +449,7 @@ public:
/// <param name="name">The name of the variation in the list to make a copy of</param>
/// <param name="weight">The weight to assign the new copy. Default: 1</param>
/// <returns>A pointer to the variation with a matching name, else nullptr.</returns>
Variation<T>* GetVariationCopy(const string& name, T weight = 1) { return MakeCopyWithWeight(GetVariation(name), weight); }
Variation<T>* GetVariationCopy(const string& name, T weight = 1) const { return MakeCopyWithWeight(GetVariation(name), weight); }
/// <summary>
/// Get a parametric variation at the specified index.
@ -457,14 +457,14 @@ public:
/// </summary>
/// <param name="index">The index in the parametric variations list to retrieve</param>
/// <returns>The parametric variation at the index specified if in range, else nullptr.</returns>
ParametricVariation<T>* GetParametricVariation(size_t index) { return index < m_ParametricVariations.size() ? m_ParametricVariations[index] : nullptr; }
const ParametricVariation<T>* GetParametricVariation(size_t index) const { return index < m_ParametricVariations.size() ? m_ParametricVariations[index] : nullptr; }
/// <summary>
/// Get a parametric variation with the specified name.
/// </summary>
/// <param name="name">The name of the variation in the parametric variations list to retrieve</param>
/// <returns>The parametric variation with a matching name, else nullptr.</returns>
ParametricVariation<T>* GetParametricVariation(const string& name)
const ParametricVariation<T>* GetParametricVariation(const string& name) const
{
for (uint i = 0; i < m_ParametricVariations.size() && m_ParametricVariations[i] != nullptr; i++)
if (!_stricmp(name.c_str(), m_ParametricVariations[i]->Name().c_str()))
@ -490,11 +490,11 @@ public:
/// <summary>
/// Accessors.
/// </summary>
size_t Size() { return m_Variations.size(); }
size_t RegSize() { return m_RegVariations.size(); }
size_t PreSize() { return m_PreVariations.size(); }
size_t PostSize() { return m_PostVariations.size(); }
size_t ParametricSize() { return m_ParametricVariations.size(); }
size_t Size() const { return m_Variations.size(); }
size_t RegSize() const { return m_RegVariations.size(); }
size_t PreSize() const { return m_PreVariations.size(); }
size_t PostSize() const { return m_PostVariations.size(); }
size_t ParametricSize() const { return m_ParametricVariations.size(); }
private:
/// <summary>
@ -504,7 +504,7 @@ private:
/// <param name="var">The variation to copy</param>
/// <param name="weight">The weight to assign it</param>
/// <returns>A pointer to the new variation copy if success, else nullptr.</returns>
Variation<T>* MakeCopyWithWeight(Variation<T>* var, T weight)
Variation<T>* MakeCopyWithWeight(const Variation<T>* var, T weight) const
{
if (var)
{

View File

@ -766,9 +766,9 @@ public:
//Now apply the motion func to the params if needed.
if (motParVar != nullptr)
{
ParametricVariation<T>* parVar = dynamic_cast<ParametricVariation<T>*>(var);
ParamWithName<T>* params = parVar->Params();
ParamWithName<T>* motParams = motParVar->Params();
auto parVar = dynamic_cast<ParametricVariation<T>*>(var);
auto params = parVar->Params();
auto motParams = motParVar->Params();
for (size_t k = 0; k < motParVar->ParamCount(); k++)
{

View File

@ -1154,9 +1154,9 @@ private:
//Only correct names if it came from an outside source. Names originating from this library are always considered correct.
string s = fromEmber ? string(CCX(curAtt->name)) : GetCorrectedVariationName(m_BadVariationNames, curAtt);
if (Variation<T>* var = m_VariationList.GetVariation(s))
if (auto var = m_VariationList.GetVariation(s))
{
Variation<T>* varCopy = var->Copy();
auto varCopy = var->Copy();
Atof(attStr, varCopy->m_Weight);
xform.AddVariation(varCopy);