protected void UpdatePosOnlySnapOn(object sender)
{
// update positions
var endTransf = this.endHandles.Select(x => (x.Transform as MatrixTransform3D)).ToArray();
var endMatrices = endTransf.Select(x => x.Value).ToArray();
var pos_NEW = endMatrices.Select(x => x.ToMatrix().TranslationVector).ToArray();
int n = pos_NEW.Count();
int i;
for (i = 0; i < n; i++)
{
Vector3 diff = pos_NEW[i] - this.pos_current[i];
Vector3D diffA = AdjustForSnap(diff.ToVector3D());
this.pos[i] = this.pos_current[i] + diffA.ToVector3();
}
// update sender
// ENDPOINT handles
for (i = 0; i < n; i++)
{
if (sender == this.endHandles[i])
{
var T = Matrix3DExtensions.Translate3D(pos[i].ToVector3D());
this.endHandles[i].Transform = new MatrixTransform3D(T);
var child = (HelixToolkit.SharpDX.Wpf.GeometryModel3D) this.Children[this.endH_indInChildren[i]];
if (child != null)
{
child.Transform = new MatrixTransform3D(T);
}
}
}
}