void RunNextTrial() { int currentFinalIndex = (currentInitialTargetId + 1) % targets.Length; if (currentInitialTargetId < targets.Length) { TrialMeasurements lastTrial = null; if (blockMeasurements.trialsData.Count > 0) { lastTrial = blockMeasurements.trialsData[blockMeasurements.trialsData.Count - 1]; } if (task == ExperimentTask.ReciprocalDragging) { currentTrial = new DragTestController(currentInitialTargetId, targets[currentInitialTargetId], targets[currentFinalIndex], this, cursor, lastTrial); } else { currentTrial = new TappingTrialController(currentInitialTargetId, targets[currentInitialTargetId], targets[currentFinalIndex], this, cursor, lastTrial); } currentTrial.StartTrial(); } else { FinishBlockOfTrials(); } }
public TrialController(int theTrialId, TargetBehaviour initialTarget, TargetBehaviour finalTarget, ITrialListener theListener, CursorBehaviour theCursor, TrialMeasurements lastTrial) { this.trialId = theTrialId; this.initialTarget = initialTarget; this.finalTarget = finalTarget; this.listener = theListener; this.cursor = theCursor; _lastTrial = lastTrial; InitializeTrial(); }
public void UpdateOutlierState(TrialMeasurements theTrial) { Vector3 initialTargetPos = theTrial.initialTargetPosition; Vector3 finalTargetPos = theTrial.finalTargetPosition; float expectedAmplitude = (initialTargetPos - finalTargetPos).magnitude; Vector3 initialPos = theTrial.initialPosition; Vector3 finalPos = theTrial.positionActionEnded; float realAmplitude = (initialPos - finalPos).magnitude; theTrial.MarkAsOutlier(realAmplitude < (expectedAmplitude / 2)); }
public TrialMeasurements(int trialId, TargetBehaviour initialTarget, TargetBehaviour finalTarget, TrialMeasurements lastTrial) { this.lastTrial = lastTrial; this.trialId = trialId; this.initialTargetId = initialTarget.targetId; this.finalTargetId = finalTarget.targetId; this.initialTargetPosition = initialTarget.position; this.finalTargetPosition = finalTarget.position; this.initialTime = -1; this.timeActionStarted = -1; this.timeActionEnded = -1; this.trialDuration = -1; }
public TappingTrialController(int theTrialId, TargetBehaviour initialTarget, TargetBehaviour finalTarget, ITrialListener theListener, CursorBehaviour theCursor, TrialMeasurements lastTrial) : base(theTrialId, initialTarget, finalTarget, theListener, theCursor, lastTrial) { }
public void OnTrialEnded(TrialMeasurements measurements) { blockMeasurements.trialsData.Add(measurements); currentInitialTargetId++; RunNextTrial(); }
public DragTestController(int theTrialId, TargetBehaviour initialTarget, TargetBehaviour finalTarget, ITrialListener theListener, CursorBehaviour theCursor, TrialMeasurements lastTrial) : base(theTrialId, initialTarget, finalTarget, theListener, theCursor, lastTrial) { draggableObject = Object.Instantiate(initialTarget.gameObject); var targetBehaviour = draggableObject.GetComponent <TargetBehaviour>(); targetBehaviour.UnhighlightTarget(); targetBehaviour.SetAsDraggableTarget(); Object.Destroy(targetBehaviour); draggableObject.transform.SetParent(cursor.transform); draggableObject.transform.localPosition = Vector3.zero; draggableObject.SetActive(false); }
public virtual void InitializeTrial() { trialData = new TrialMeasurements(trialId, initialTarget, finalTarget, _lastTrial); initialTarget.SetAsNormalTarget(); finalTarget.SetAsNextTarget(); }