private void CheckIsLookingAtMarkable() { var ray = playerCamera.ScreenPointToRay(crosshairImage.transform.position); if (Physics.Raycast(ray, out var hit)) { _markable = hit.collider.gameObject.GetComponent <Markable>(); } }
private TerrainChunk SelectedTerrainWasIn(Markable marked) { foreach (TerrainChunk tc in selections) { if (tc.Contains(marked)) { return(tc); } } return(null); }
public void Run() { Console.WriteLine("--Marker interface pattern--\n"); var markable = new Markable(); var nonMarkable = new object(); var itemsToProcess = new List <object> { markable, nonMarkable }; Process(itemsToProcess); Console.WriteLine(); }
/// <summary> /// Builds the markers using an IMarkable collection and reflection to access the property values /// </summary> public static List <Marker> BuildMarkers(Markable markedObject, string prefix) { if (markedObject == null) { return(new List <Marker>()); } var styleProvider = new MarkStyleProvider(); var markers = new List <Marker>(); foreach (var item in markedObject.MarkItems) { var marker = new Marker(); SetMarkerPosition(item, marker); var property = markedObject.GetType().GetProperty(item.PropertyName); var markAttribute = property?.GetCustomAttributes(typeof(MarkAttribute), false); if (markAttribute != null && markAttribute.Length > 0) { var attribute = (markAttribute[0] as MarkAttribute); var style = styleProvider.GetMarkStyle(attribute.MarkType); marker.ForeColour = style.ForeColour; marker.BackColour = style.BackColour; marker.AlternateBackColour = style.AlternateBackColour; marker.Name = style.Description; marker.Visible = attribute.Visible; if (string.IsNullOrEmpty(prefix) | string.IsNullOrEmpty(attribute?.Description)) { marker.Name = prefix + style.Description; } else { marker.Name = prefix + " - " + style.Description; } } else { marker.Name = item.PropertyName; } // Check if there is an index, if there is it indicates the property is an array if (item.Index < 0) { var value = property.GetValue(markedObject, null); SetValue(markers, marker, value, prefix + item.Prefix); } else { var array = (object[])property.GetValue(markedObject, null); SetValue(markers, marker, array[item.Index], prefix + item.Prefix); } if (item.StartPosition > 0) { markers.Add(marker); } } // Sort the markers in order of their positions markers.Sort((marker1, marker2) => marker1.StartPosition.CompareTo(marker2.StartPosition)); return(markers); }
public static List <Marker> BuildMarkers(Markable markedObject) { return(BuildMarkers(markedObject, string.Empty)); }
public bool Contains(Markable toCheck) { return(terrains.Contains(toCheck)); }
protected override void OnNextStage(StageChangedEventArgs e) { var stage = e.Stage; DisplayText = stage.Cue?.Trim(); SubtitleText = stage.Subtitle?.Trim(); if (stage.Marker != null) { /* Record marker */ Markable?.Mark(stage.Marker.Value); var sessionTime = Session.SessionTime; /* Handle events */ switch (stage.Marker) { case MarkerDefinitions.ParadigmStartMarker: Result.ParadigmStartTime = sessionTime; ParadigmStarted = true; SpellerController.Start(); HintButton(); break; case MarkerDefinitions.ParadigmEndMarker: Result.ParadigmEndTime = sessionTime; break; case MarkerDefinitions.TrialStartMarker: { var trial = new SpellerParadigm.Result.Trial(); var activedButton = _activatedButton = UpdateCursor(GazePointHandler.CurrentPosition); if (activedButton != null) { trial.ActivedButtons = new SpellerParadigm.Result.Button(activedButton.Key).SingletonArray(); } trial.StartTime = CurrentTime; _trial = trial; SelectedButton = null; DisplayText = null; TrialCancelled = false; if (activedButton != null) { _detector.Active(activedButton.BorderRect); } break; } case MarkerDefinitions.TrialEndMarker: { var hintButton = HintedButton; HintButton(TrialCancelled ? 1 : 2); var trial = _trial; var detectorResult = _detector.GetResult(Buttons); _detector.Reset(); _trial = null; trial.Cancelled = TrialCancelled; trial.EndTime = CurrentTime; if (!trial.Cancelled && ComputeTrialResult(Buttons, Functions.Constant(detectorResult), hintButton, out var button, out var correct)) { trial.Correct = correct; if (button != null) { trial.SelectedButton = new SpellerParadigm.Result.Button(button.Key); } else if (!Paradigm.Config.Test.AlwaysCorrectFeedback) { SystemSounds.Exclamation.Play(); } } CheckStop(); Result.Trials.Add(trial); TrialTrigger?.Reset(); break; } } } }
protected override void OnNextStage(StageChangedEventArgs e) { var stage = e.Stage; if (TrialCancelled && stage.Marker != null && stage.Marker == SpellerMarkerDefinitions.SubTrialMarker) { e.Action = StageAction.Skip; return; } DisplayText = stage.Cue?.Trim(); SubtitleText = stage.Subtitle?.Trim(); if (stage.Marker != null) { /* Record marker */ Markable?.Mark(stage.Marker.Value); var sessionTime = Session.SessionTime; /* Handle events */ switch (stage.Marker) { case MarkerDefinitions.ExperimentStartMarker: Result.ExperimentStartTime = sessionTime; ExperimentStarted = true; SpellerController.Start(); HintButton(); break; case MarkerDefinitions.ExperimentEndMarker: Result.ExperimentEndTime = sessionTime; break; case MarkerDefinitions.TrialStartMarker: { var trial = new P300Trial { SubTrials = new List <P300Trial.SubTrial>((int)(Experiment.Config.Test.SubTrialCount + 1)) }; UpdateCursor(GazePointHandler.CurrentPosition); var activedButtons = _activedButtons; if (activedButtons != null) { var buttons = new LinkedList <SpellerExperiment.Result.Button>(); foreach (var activedButton in activedButtons) { if (activedButton != null) { buttons.AddLast(new SpellerExperiment.Result.Button(activedButton.Key)); } } trial.ActivedButtons = buttons; } trial.StartTime = CurrentTime; _trial = trial; if (_p300Detector != null) { _p300Detector.Actived = true; } SelectedButton = null; DisplayText = null; TrialCancelled = false; break; } case MarkerDefinitions.TrialEndMarker: { var hintButton = HintedButton; HintButton(TrialCancelled ? 1 : 2); var trial = _trial; _trial = null; trial.Cancelled = TrialCancelled; trial.EndTime = CurrentTime; if (_p300Detector != null) { _p300Detector.Actived = false; } if (!trial.Cancelled && ComputeTrialResult(_activedButtons, _p300Detector == null ? null : (Func <int>)_p300Detector.Compute, hintButton, out var button, out var correct)) { trial.Correct = correct; if (button == null) { SystemSounds.Exclamation.Play(); } else { trial.SelectedButton = new SpellerExperiment.Result.Button(button.Key); } } CheckStop(); Result.Trials.Add(trial); TrialTrigger?.Reset(); break; } case SpellerMarkerDefinitions.SubTrialMarker: { var activedButtons = _activedButtons; var randomBoolSequences = _randomBoolSequences; if (activedButtons != null) { var flags = new bool[activedButtons.Length]; for (var i = 0; i < activedButtons.Length; i++) { var button = activedButtons[i]; if (button != null) { button.State = (flags[i] = randomBoolSequences[i].Next()) ? 1 : 0; } } _trial.SubTrials.Add(new P300Trial.SubTrial { Timestamp = CurrentTime, Flags = flags }); } break; } } } }
private void OnNewObjectMarked(Markable _markable) { StartCoroutine(AddToScore(_markable.pointsForMarking)); }
protected override void OnNextStage(StageChangedEventArgs e) { var stage = e.Stage; DisplayText = stage.Cue?.Trim(); SubtitleText = stage.Subtitle?.Trim(); if (stage.Marker != null) { /* Record marker */ Markable?.Mark(stage.Marker.Value); var sessionTime = Session.SessionTime; /* Handle events */ switch (stage.Marker) { case MarkerDefinitions.BaselineStartMarker: if (_hybridSsvepIdentifier != null) { _initializer = _hybridSsvepIdentifier?.CreateInitializer(); _biosignalStreamer.AttachConsumer(_initializer); } break; case MarkerDefinitions.BaselineEndMarker: if (_initializer != null) { _biosignalStreamer.DetachConsumer(_initializer); _initializer.Initialize(); _initializer = null; } SpellerController.CalibrationComplete(); break; case MarkerDefinitions.ParadigmStartMarker: Result.ParadigmStartTime = sessionTime; ParadigmStarted = true; SpellerController.Start(); HintButton(); break; case MarkerDefinitions.ParadigmEndMarker: Result.ParadigmEndTime = sessionTime; break; case MarkerDefinitions.TrialStartMarker: { var trial = new SsvepTrial { TargetFrequencyIndex = HintedButton?.State }; var activedButtons = _activedButtons = UpdateCursor(GazePointHandler.CurrentPosition); if (activedButtons != null) { var buttons = new LinkedList <SpellerParadigm.Result.Button>(); foreach (var activedButton in activedButtons) { if (activedButton != null) { buttons.AddLast(new SsvepButton(activedButton.Key, activedButton.State)); } } trial.ActivedButtons = buttons; } trial.StartTime = CurrentTime; _trial = trial; if (_hybridSsvepIdentifier != null) { _hybridSsvepIdentifier.IsActive = true; } SelectedButton = null; DisplayText = null; TrialCancelled = false; break; } case MarkerDefinitions.TrialEndMarker: { var hintButton = HintedButton; if (Paradigm.Config.Test.AlwaysCorrectFeedback) { SelectedButton = hintButton; SelectionFeedbackCorrect = true; } HintButton(TrialCancelled ? 1 : 2); var trial = _trial; _trial = null; trial.Cancelled = TrialCancelled; trial.EndTime = CurrentTime; if (_hybridSsvepIdentifier != null) { _hybridSsvepIdentifier.IsActive = false; } if (!trial.Cancelled && ComputeTrialResult(_activedButtons, _hybridSsvepIdentifier == null ? null : (Func <IdentificationResult>)_hybridSsvepIdentifier.Identify, hintButton, out var button, out var correct)) { trial.Correct = correct; if (button != null) { trial.SelectedFrequencyIndex = button.State; trial.SelectedButton = new SsvepButton(button.Key, button.State); } else if (!Paradigm.Config.Test.AlwaysCorrectFeedback) { SystemSounds.Exclamation.Play(); } } CheckStop(); Result.Trials.Add(trial); TrialTrigger?.Reset(); break; } } } }
public void Fire_EVT_MarkedNewObject(Markable _markedObject) { EVT_MarkedNewObject(_markedObject); }