--User changes

-Attempt to preserve xaos when adding xforms. Note this is not an exact copy, but just a preservation of some values based on position.
 -Add some acceleration to the changing of spinner values when dragging the right mouse button to adjust.
 -Make the pivot be the center of the viewable area when doing drag/rotate/scale with the right mouse button.
 --Clamp minimum scale to 10
 --Draw a line from the mouse position to the pivot.
 -Keep a cache of the last added final xform with each flame so that it can be quickly added, removed, then added back for testing its effect.
 --This is not saved with the xml file and is solely for interactive editing.

--Bug fixes
 -File filtering in open and save dialogs were broken.
 -Right clicking on integer spin boxes was causing the context menu to pop up, when it should be supressed just like double spin boxes.
 -Deleting xforms was still broken.

--Code changes
 -Refactor the code for adding and pasting xforms into a single global static function called AddXformsWithXaos().
This commit is contained in:
Person
2018-08-10 18:06:04 -07:00
parent 26c558a2f5
commit dee4304bf2
13 changed files with 173 additions and 62 deletions

View File

@ -179,6 +179,7 @@ public:
CopyCont(m_EmberMotionElements, ember.m_EmberMotionElements);
m_Solo = ember.m_Solo;
m_CachedFinal = ember.m_CachedFinal;
return *this;
}
@ -1724,9 +1725,6 @@ public:
//The list of motion elements for the top-level flame params
vector<EmberMotion<T>> m_EmberMotionElements;
//Index of xform to have non-zero opacity, while all others have zero. This is an interactive rendering parameter and is not saved to Xml. -1 means solo is not used.
intmax_t m_Solo = -1;
private:
/// <summary>
/// The type of scaling used when resizing.
@ -1810,6 +1808,13 @@ private:
for (size_t k = 0; k < size; k++)
xform->*m += coefs[k] * embers[k].GetTotalXform(i)->*m;
}
public:
//Index of xform to have non-zero opacity, while all others have zero. This is an interactive rendering parameter and is not saved to Xml. -1 means solo is not used.
intmax_t m_Solo = -1;
//Cached copy of the final xform which makes it easy to add and remove the final repeatedly during editing without losing information. Used only with interactive rendering.
Xform<T> m_CachedFinal;
};
/// <summary>