public void Update(ISpread <Blob> availableBlobs) { var hits = TouchUtils.GetBlobHits(Id, availableBlobs); switch (Phase) { case TransformPhase.Idle: if (hits.Count > 0 && TouchUtils.IsAnyNew(hits)) { StartTransformtation(hits); } break; case TransformPhase.Transforming: var pCount = Blobs.Count(); TouchUtils.UpdateBlobs(availableBlobs, Blobs, Id); TouchUtils.AddNewHits(hits.ToSpread(), Blobs); if (pCount != Blobs.SliceCount) { PBlobs.SliceCount = 0; } if (Blobs.SliceCount == 0) { StopTransformation(); } break; } }
protected override void ProcessTransformation(int index) { var value = TouchUtils.CalculateTransform(TransformStates[index], TransformType.Translate); TransformStates[index].PDelta = value; TransformStates[index].TransformationValue += value; }