/// <summary> /// Alternate constructor for dependency injection /// </summary> public GridIndexController(IViewAgent va, IConfigurationAgent ca, IPositioner p) { viewAgent = va; configAgent = ca; positioner = p; positioner.StatusChanged += OnPositionerStatusChanged; }
/// <summary> /// Calculate new position based on cursor in drag mode and move brick. /// </summary> void MoveToCursor(DragableBrick brick, Vector3 mousePosition) { if (lastMousePosition != mousePosition) { lastMousePosition = mousePosition; IPositioner positioner = GetPositioner(brick); lastProposedPosition = positioner.GetPosition(mousePosition, ToolsManager.instance.snapToGridButton.isSelected, 0.5f); if (!isJoined && lastProposedPosition.isJoined) { AudioSource.PlayClipAtPoint(Preferences.instance.joinBrickSound, UnityEngine.Camera.main.transform.position); dragableBrick.FlashBrick(); } isJoined = lastProposedPosition.isJoined; var moveVector = lastProposedPosition.position - brick.transform.position; if (moveVector.magnitude > 1) { lastProposedPosition.position = brick.transform.position + moveVector.normalized; } brick.transform.position = lastProposedPosition.position; brick.transform.rotation = lastProposedPosition.rotation; } }
public TiltCorrection(IPositioner _pos, Position _Pos1, Position _Pos2, Position _Pos3, double _Offset) { mPositioner = _pos; F = _Pos1.Copy; G = _Pos2.Copy; H = _Pos3.Copy; offset = _Offset; ReCalculatePlane(); }
public override enExperimentStatus Configure(IExperiment parent, string resultsFilePath) { if (status != enExperimentStatus.Running) { this.parent = parent; ResultsFilePath = Path.Combine(resultsFilePath, Name); ; ResultsFileName = "ExpScanArray - " + Name + ".dat"; IPositioner pos = Settings.Positioners[Settings.Positioner]; if (Settings.Tilt) { pos = Settings.Positioners[Settings.TiltPositioner]; Tilt = new TiltCorrection(pos, Settings.Pos1, Settings.Pos2, Settings.Pos3, Settings.Offset); Tilt.PositionStore = PositionStore; } Scanner = new ScannerArray(Settings.ScannerMode, pos, Settings.Lengths, Settings.Increments, Settings.Speeds, Settings.ReverseSpeeds, Settings.PreMovementHook, Settings.PostMovementHook, Tilt, Settings.XDelay, Settings.YDelay, Settings.ZDelay, log); Scanner.Initialize(); //safety check: if the tilt correction is in use, a scan in Z direction is not a good idea. if ((Math.Abs(Settings.Increments.Z) > 0) && (Math.Abs(Settings.Lengths.Z) > 0) && (Math.Abs(Settings.Increments.Z) <= Math.Abs(Settings.Lengths.Z)) && (Settings.Tilt)) { //todo: describe error return enExperimentStatus.Error; } // create ScanData container scanData = new ScanData(); scanData.experimentName = Name; reverseScanX = Settings.Increments.X < 0; reverseScanY = Settings.Increments.Y < 0; scanData.setScanDimensions(Scanner.NumScanPoints[0], Scanner.NumScanPoints[1]); // Current Positioner pos Position startPos = new Position(); if(pos.GetAbsolutePosition(ref startPos) != enuPositionerStatus.Ready) return enExperimentStatus.Error; // set scanData dimensions scanData.X0 = Math.Min(startPos.X, (Scanner.NumScanPoints[0] - 1) * Settings.Increments.X); scanData.Y0 = Math.Min(startPos.Y, (Scanner.NumScanPoints[1] - 1) * Settings.Increments.Y); scanData.X1 = Math.Max(startPos.X, (Scanner.NumScanPoints[0] - 1) * Settings.Increments.X); scanData.Y1 = Math.Max(startPos.Y, (Scanner.NumScanPoints[1] - 1) * Settings.Increments.Y); status = enExperimentStatus.Idle; return status; } return enExperimentStatus.Error; }
public CloudSpace(double width, double height) { Width = width; Height = height; _collisionMapWidth = (int)Width; _collisionMapHeight = (int)Height; CloudCenter = new Point(width / 2, height / 2); _positioner = new SpiralPositioner(new Size(Width, Height)); _pen = new Pen(Brushes.Purple, 1); _pen.Freeze(); }
//absolute global position as returned by all positioners public Position CurrentAbsolutePosition() { Position pos = new Position(0, 0, 0); Position ipos = new Position(0, 0, 0); var positioners = hwStore.Where(x => typeof(IPositioner).IsAssignableFrom(x.Value.GetType())).Select(x => x); foreach (var iterator in positioners) { IPositioner positioner = iterator.Value as IPositioner; positioner.GetAbsolutePosition(ref ipos); pos = pos.Sum(ipos); } return(pos); }
public ScannerArc(IPositioner _pos, Position _parameters, Position _speeds, Position _revspeeds, Position _premove, Position _postmove, TiltCorrection _tilt, LogHelper log) { this.log = log; mPositioner = _pos; mRadius = _parameters.X; mRadIncr = _parameters.Y; mAngIncr = _parameters.Z; mSpeeds = _speeds; mReverseSpeeds = _revspeeds; mPreMove = _premove; mPostMove = _postmove; mTilt = _tilt; }
public enuFeedbackStatusFlags Initialize() { mPositioner = Settings.Positioners[Settings.Positioner]; if (mPositioner != null) { if (mPositioner.GetPositionerStatus == enuPositionerStatus.Ready) { mSensor = Settings.TransducerChannels[Settings.Channel]; if (mSensor != null) { if (mSensor.Status == enuTChannelStatus.OK) { mSensor.Averaging = Settings.Averaging; abortFlag = false; PID = new PIDController(log); PID.Settings = Settings.PIDController; if (PID.Error == 0) { mStatus = enuFeedbackStatusFlags.Ready; } else { log.Add("Could not initialize PID controller, check PID controller settings!", "ERROR"); } } else { log.Add("Could not initialize sensor, check transudcer settings!", "ERROR"); } } else { log.Add("Could not initialize sensor, check feedbackcontroller settings!", "ERROR"); } } else { log.Add("Could not initialize positioner, check positioner settings!", "ERROR"); } } else { log.Add("Could not initialize positioner, check feedback controller settings!", "ERROR"); } return(mStatus); }
public void GridIndexTestInitialize() { // stub out a view agent and view DS viewAgent = MockRepository.GenerateStub <IViewAgent>(); viewDS = new CCViewDS(); // when the controller calls viewAgent.get return this DS viewAgent.Stub(x => x.Get()).Return(viewDS); // stub out a config agent configAgent = MockRepository.GenerateStub <IConfigurationAgent>(); // stub out a positioner positioner = MockRepository.GenerateStub <IPositioner>(); // create the controller gridIndexingController = new GridIndexController(viewAgent, configAgent, positioner); }
public override enExperimentStatus Configure(IExperiment parent, string resultsFilePath) { if (status != enExperimentStatus.Running) { this.parent = parent; ResultsFilePath = Path.Combine(resultsFilePath, Name);; ResultsFileName = "ExpScanArc - " + Name + ".dat"; IPositioner pos = Settings.Positioners[Settings.Positioner]; if (Settings.Tilt) { pos = Settings.Positioners[Settings.TiltPositioner]; Tilt = new TiltCorrection(pos, Settings.Pos1, Settings.Pos2, Settings.Pos3, Settings.Offset); Tilt.PositionStore = PositionStore; } Position Parameters = new Position(Settings.Radius, Settings.RadiusIncrement, Settings.AngularIncrement); //we just create a scanner object and it is dealing with the rest Scanner = new ScannerArc(pos, Parameters, Settings.Speeds, Settings.ReverseSpeeds, Settings.PreMovementHook, Settings.PostMovementHook, Tilt, log); Scanner.Initialize(); // create ScanData container scanData = new ScanDataFreeform(); scanData.experimentName = Name; // reset Position Counter currentPosIDX = 0; // Current Positioner pos Position currentPos = new Position(); if (Scanner.Position(ref currentPos) != enuPositionerStatus.Ready) { return(enExperimentStatus.Error); } currentXPos = currentPos.X; currentYPos = currentPos.Y; status = enExperimentStatus.Idle; return(status); } return(enExperimentStatus.Error); }
/// <summary> /// Start dragging. /// </summary> /// <param name="eventData">Event data.</param> void StartDrag(PointerEventData eventData) { //save start position and rotaton to be able to revert move action oldPosition = dragableBrick.transform.position; oldRotation = dragableBrick.transform.rotation; LMBRelesed = !Input.GetMouseButton((int)MouseButton.LeftMouse); isDragging = true; SelectionManager.instance.TurnOffSelectionEffect(); IPositioner positioner = GetPositioner(dragableBrick); var dragPoint = eventData == null ? dragableBrick.transform.position : eventData.pointerPressRaycast.worldPosition; positioner.StartMoving(dragableBrick, dragPoint); if (OnStartMove != null) { OnStartMove(dragableBrick); } }
private void Awake() { positioner = GameObject.FindGameObjectWithTag("Positioner"); iPositioner = positioner.GetComponent <IPositioner>(); }
/// <summary> /// Base Constructor /// </summary> public GridIndexController(Navigator navigator) : base(navigator) { viewAgent = new CCViewAgent(); configAgent = new CCConfigurationAgent(); positioner = new CCPositioner(); }
private void Awake() { flipCard = GetComponent <FlipCardAnimation>(); positioner = GameObject.FindGameObjectWithTag("Positioner").GetComponent <IPositioner>(); actionsHolder = GameObject.FindGameObjectWithTag("ActionsHolder"); }
public CircularCloudLayouter(Point center) { this.center = center; positioner = new ArchimedeanPositioner(1, 1); }
public CloudSpace(double width, double height, IRandomizer randomizer = null) : this(width, height) { _randomizer = randomizer ?? new CryptoRandomizer(); _positioner = new SpiralPositioner(new Size(Width, Height)); }