public void Initialize(int Size) { // Initialize vr components render = new RenderSubsystem(this, new StaticCamera(Size), Size); update = new UpdateSubsystem(this); // Load virtual world if (protName == null) { GetStimulus(); } else { GetStimulus(protName); } // Initialize Photodiode & Kalman filter if (vRProtocol.usePhotodiode) { pd = new Photodiode(vRProtocol.portPhotodiode); pd.StartPhotodiode(); } kft = new KalmanFilterTrack <MovementData>(false, vRProtocol.twoFlies, pd); // Initialize data acquisition objects if (vRProtocol.usePulsePal) { pp = new PulsePal <MovementData>(vRProtocol.portPulsePal); pp.StartPulsePal(); } if (vRProtocol.useCam1) { cam1 = new uEyeCamera(0, vRProtocol.paramsPathCam1, vRProtocol.trackCam1, vRProtocol.dispCam1, 0, vRProtocol.fpsCam1, null); while (!cam1.m_IsLive) { } if (cam1.m_IsLive) { cam1.Start(); if (vRProtocol.trackCam1) { fastT = new FastTracking <Frame>(this, cam1.firstFrame, 1, 100, 50, 0, vRProtocol.twoFlies, true); fastT.Start(); kft.Start(); } } } if (vRProtocol.useCam2) { if (vRProtocol.usePulsePal) { cam2 = new uEyeCamera(1, vRProtocol.paramsPathCam2, vRProtocol.trackCam2, vRProtocol.dispCam2, 800, vRProtocol.fpsCam2, pp); } else { cam2 = new uEyeCamera(1, vRProtocol.paramsPathCam2, vRProtocol.trackCam2, vRProtocol.dispCam2, 800, vRProtocol.fpsCam2, null); } if (cam2.m_IsLive) { cam2.Start(); if (vRProtocol.trackCam2) { fastT = new FastTracking <Frame>(this, cam2.firstFrame, 10, 5000, 35, 0, vRProtocol.twoFlies, false); fastT.Start(); kft.Start(); } } } if (vRProtocol.recordTracking & vRProtocol.useCam2) { dataRecorder = new DataRecorder <FilteredData>(vRProtocol.recordPathTracking, cam2, true, vRProtocol.twoFlies, this); dataRecorder.Start(); } else if (vRProtocol.recordTracking & !vRProtocol.useCam2) { dataRecorder = new DataRecorder <FilteredData>(vRProtocol.recordPathTracking, true, vRProtocol.twoFlies, this); dataRecorder.Start(); } if (vRProtocol.recordStimulus & vRProtocol.useCam2) { stimRecorder = new StimRecorder <StimData>(vRProtocol.recordPathStimulus, cam2, true, this); stimRecorder.Start(); } else if (vRProtocol.recordStimulus & !vRProtocol.useCam2) { stimRecorder = new StimRecorder <StimData>(vRProtocol.recordPathStimulus, true, this); stimRecorder.Start(); } if (vRProtocol.recordPhotodiode & vRProtocol.useCam2) { photoRecorder = new PhotoRecorder <PhotoData>(vRProtocol.recordPathPhotodiode, cam2, true, this); photoRecorder.Start(); } else if (vRProtocol.recordPhotodiode & !vRProtocol.useCam2) { photoRecorder = new PhotoRecorder <PhotoData>(vRProtocol.recordPathPhotodiode, true, this); photoRecorder.Start(); } }