Пример #1
0
 /// <summary>
 /// Called by the Input Manager to notify a key is being pressed
 /// </summary>
 /// <param name="key">The key being pressed</param>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         foreach (var t in inputs)
         {
             if (t.position.y < Screen.height / 2)    // partie inférience de l'écran
             {
                 if (t.position.x < Screen.width / 2) // partie gauche de l'écran
                 {
                     player.rotate(1);
                 }
                 else // partie droite
                 {
                     player.goForward();
                 }
             }
             else // partie supérieure de l'écran
             {
                 if (t.position.x < Screen.width / 2) // partie gauche de l'écran
                 {
                     player.rotate(-1);
                 }
                 else // partie droite
                 {
                     player.fire();
                 }
             }
         }
     }
 }
Пример #2
0
 /// <summary>
 /// Called by the Input Manager to notify a key/touch screen action going on
 /// </summary>
 /// <param name="key">The key being pressed</param>
 /// <param name="inputs">A touch screen action</param>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.x < Screen.width / 2)
                 {
                     if (t.position.y > Screen.height / 2)
                     {
                         player.goUp();
                     }
                     else
                     {
                         player.goDown();
                     }
                 }
                 else
                 {
                     gameScript.launchCoupSpecial(-1);
                 }
             }
         }
     }
 }
Пример #3
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         base.noticeInput(key, inputs);
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.y < Screen.height / 2)
                 {
                     if (t.position.x > Screen.width / 2)
                     {
                         playerScript_.moveRight();
                     }
                     else if (t.position.x < Screen.width / 2)
                     {
                         playerScript_.moveLeft();
                     }
                 }
                 else
                 {
                     playerScript_.jump();
                 }
             }
             else if (t.phase == TouchPhase.Canceled || t.phase == TouchPhase.Ended)
             {
                 if (t.position.y < Screen.height / 2)
                 {
                     playerScript_.stop();
                 }
             }
         }
     }
 }
Пример #4
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (key == EnumInput.ESCAPE || key == EnumInput.MENU)
     {
         togglePauseGame();
     }
 }
Пример #5
0
 /// <summary>
 /// Recieves all the necessary inputs (keyboard, gamepad and mouse).
 /// </summary>
 /// <param name="key">The input sent when it's a keyboard</param>
 /// <param name="inputs">The inputs sent when it's a touchscreen of a mobile for example.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Began && t.position.y > 2 * Screen.height / 3)
             {
                 Tetromino.fallingTetromino.rotate();
             }
             else if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.y < Screen.height / 4)
                 {
                     Tetromino.fallingTetromino.moveDown();
                 }
                 else if (t.position.x > 2 * Screen.width / 3)
                 {
                     Tetromino.fallingTetromino.moveRight();
                 }
                 else if (t.position.x < Screen.width / 3)
                 {
                     Tetromino.fallingTetromino.moveLeft();
                 }
             }
         }
     }
 }
Пример #6
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.y > 2 * Screen.height / 3)
                 {
                     playerScript_.goUp();
                 }
                 else if (t.position.y < Screen.height / 3)
                 {
                     playerScript_.goDown();
                 }
                 else if (t.position.x < Screen.width / 2)
                 {
                     playerScript_.goLeft();
                 }
                 else if (t.position.x > Screen.width / 2)
                 {
                     playerScript_.goRight();
                 }
             }
         }
     }
 }
Пример #7
0
    /// <summary>Recieves all the necessary inputs from a keyboard.</summary>
    /// <param name="key">The input sent.</param>
    /// <returns>void</returns>
    public override void noticeInput(EnumInput key)
    {
        if (loaded)
        {
            base.noticeInput(key);

            if (Tetromino.fallingTetromino != null)
            {
                switch (key)
                {
                case EnumInput.RIGHT:
                    Tetromino.fallingTetromino.moveRight();
                    break;

                case EnumInput.LEFT:
                    Tetromino.fallingTetromino.moveLeft();
                    break;

                case EnumInput.UPDOWN:
                    Tetromino.fallingTetromino.rotate();
                    break;

                case EnumInput.DOWN:
                    Tetromino.fallingTetromino.moveDown();
                    break;

                default:
                    break;
                }
            }
        }
    }
Пример #8
0
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         //base.noticeInput(key);
         if (key == EnumInput.SPACE)
         {
             playerScript_.fire();
         }
         if (key == EnumInput.LEFT)
         {
             playerScript_.rotLeftRight -= playerScript_.speed;
         }
         else if (key == EnumInput.RIGHT)
         {
             playerScript_.rotLeftRight += playerScript_.speed;
         }
         if (key == EnumInput.UP)
         {
             playerScript_.rotUpDown -= playerScript_.speed;
         }
         else if (key == EnumInput.DOWN)
         {
             playerScript_.rotUpDown += playerScript_.speed;
         }
     }
 }
Пример #9
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         if (key == EnumInput.TAB)
         {
             connectionMenu.switchUiSelect();
         }
         else if (key == EnumInput.RETURN)
         {
             connectionMenu.onConnectionStartClick();
         }
     }
 }
Пример #10
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.SPACE)
         {
             playerScript_.fire();
         }
         if (key == EnumInput.LEFT)
         {
             playerScript_.move(-1);
         }
         else if (key == EnumInput.RIGHT)
         {
             playerScript_.move(1);
         }
     }
 }
Пример #11
0
 /// <summary>
 /// Called by the Input Manager to notify a key is being pressed
 /// </summary>
 /// <param name="key">The key being pressed</param>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.SPACE)
         {
             gameScript.launchCoupSpecial(-1);
         }
         if (key == EnumInput.UP)
         {
             player.goUp();
         }
         if (key == EnumInput.DOWN)
         {
             player.goDown();
         }
     }
 }
Пример #12
0
    public override void noticeInput(EnumInput key, Touch[] inputs)
    {
        if (loaded)
        {
            foreach (var t in inputs)
            {
                if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
                {
                    if (t.position.x > 2 * Screen.width / 3)
                    {
                        playerScript_.moveRight(true);
                    }
                    else if (t.position.x < Screen.width / 3)
                    {
                        playerScript_.moveRight(false);
                    }
                    if (t.position.y > 2 * Screen.height / 3)
                    {
                        playerScript_.moveUp(true);
                    }
                    else if (t.position.y < Screen.height / 3)
                    {
                        playerScript_.moveUp(false);
                    }

                    // if we touch the center part of the screen, we fire
                    // fire handles cooldown
                    if (t.position.x < 2 * Screen.width / 3 &&
                        t.position.x > Screen.width / 3 &&
                        t.position.y < 2 * Screen.height / 3 &&
                        t.position.y > Screen.height / 3)
                    {
                        playerScript_.fire();
                    }
                }
            }
        }
    }
Пример #13
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         base.noticeInput(key, inputs);
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.x < Screen.width / 2)
                 {
                     if (t.position.y > Screen.height / 2)
                     {
                         playerScript_.rotate(-1);
                     }
                     else if (t.position.y < Screen.height / 2)
                     {
                         playerScript_.rotate(1);
                     }
                 }
             }
             if (t.phase == TouchPhase.Began)
             {
                 if (t.position.x > Screen.width / 2)
                 {
                     if (t.position.y > Screen.height / 2)
                     {
                         playerScript_.increaseReactorState();
                     }
                     else if (t.position.y < Screen.height / 2)
                     {
                         playerScript_.decreaseReactorState();
                     }
                 }
             }
         }
     }
 }
Пример #14
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.UP)
         {
             playerScript_.goUp();
         }
         if (key == EnumInput.LEFT)
         {
             playerScript_.goLeft();
         }
         if (key == EnumInput.RIGHT)
         {
             playerScript_.goRight();
         }
         if (key == EnumInput.DOWN)
         {
             playerScript_.goDown();
         }
     }
 }
Пример #15
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.SPACE)
         {
             playerScript_.jump();
         }
         if (key == EnumInput.LEFT)
         {
             playerScript_.moveLeft();
         }
         else if (key == EnumInput.RIGHT)
         {
             playerScript_.moveRight();
         }
         else
         {
             playerScript_.stop();
         }
     }
 }
Пример #16
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.UPDOWN)
         {
             playerScript_.increaseReactorState();
         }
         if (key == EnumInput.DOWNDOWN)
         {
             playerScript_.decreaseReactorState();
         }
         if (key == EnumInput.LEFT)
         {
             playerScript_.rotate(1);
         }
         if (key == EnumInput.RIGHT)
         {
             playerScript_.rotate(-1);
         }
     }
 }
Пример #17
0
 /// <summary>
 /// Called by the Input Manager to notify a key/touch screen action going on
 /// </summary>
 /// <param name="key">The key being pressed</param>
 /// <param name="inputs">A touch screen action</param>
 public override void noticeInput(EnumInput key)
 {
     if (loaded)
     {
         base.noticeInput(key);
         if (key == EnumInput.SPACE)
         {
             player.fire();
         }
         if (key == EnumInput.LEFT)
         {
             player.rotate(1);
         }
         else if (key == EnumInput.RIGHT)
         {
             player.rotate(-1);
         }
         if (key == EnumInput.UP)
         {
             player.goForward();
         }
     }
 }
Пример #18
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
     if (loaded)
     {
         foreach (var t in inputs)
         {
             if (t.phase == TouchPhase.Began || t.phase == TouchPhase.Stationary || t.phase == TouchPhase.Moved)
             {
                 if (t.position.x > 3 * Screen.width / 4)
                 {
                     playerScript_.move(1);
                 }
                 else if (t.position.x < Screen.width / 4)
                 {
                     playerScript_.move(-1);
                 }
                 else if (!paused)
                 {
                     playerScript_.fire();
                 }
             }
         }
     }
 }
Пример #19
0
 public void noticeInput(EnumInput key)
 {
     currentState.noticeInput(key);
 }
Пример #20
0
 public void noticeInput(EnumInput key, Touch[] inputs)
 {
     currentState.noticeInput(key, inputs);
 }
Пример #21
0
        public void StartRecording()
        {
            source_type = Source.FILE;
            //NEED to run this world-sycnrhonously
            World currentWorld        = metagen_comp.World;
            int   currentTotalUpdates = currentWorld.TotalUpdates;
            Slot  logix_slot          = metagen_comp.World.RootSlot.AddSlot("temporary logix slot");
            bool  added_logix         = false;

            currentWorld.RunSynchronously(() =>
            {
                foreach (var userItem in metagen_comp.userMetaData)
                {
                    User user             = userItem.Key;
                    UserMetadata metadata = userItem.Value;
                    if (!metadata.isRecording || (metagen_comp.LocalUser == user && !metagen_comp.record_local_user))
                    {
                        continue;
                    }
                    RefID user_id = user.ReferenceID;

                    current_tracked_users.Add(user_id);

                    ReferenceRegister <User> userRegister     = logix_slot.AttachComponent <ReferenceRegister <User> >();
                    userRegister.Target.Target                = user;
                    StandardController standardControllerLeft = logix_slot.AttachComponent <FrooxEngine.LogiX.Input.StandardController>();
                    EnumInput <Chirality> nodeEnum            = logix_slot.AttachComponent <EnumInput <Chirality> >();
                    nodeEnum.Value.Value = Chirality.Left;
                    standardControllerLeft.User.Target = userRegister;
                    standardControllerLeft.Node.Target = nodeEnum;
                    SyncRef <ValueStream <bool> > _primaryStreamLeft   = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_primaryStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);
                    SyncRef <ValueStream <bool> > _secondaryStreamLeft = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_secondaryStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);
                    SyncRef <ValueStream <bool> > _grabStreamLeft      = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_grabStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);
                    SyncRef <ValueStream <bool> > _menuStreamLeft      = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_menuStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);
                    SyncRef <ValueStream <float> > _strengthStreamLeft = (SyncRef <ValueStream <float> >) typeof(StandardController).GetField("_strengthStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);
                    SyncRef <ValueStream <float2> > _axisStreamLeft    = (SyncRef <ValueStream <float2> >) typeof(StandardController).GetField("_axisStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerLeft);

                    StandardController standardControllerRight = logix_slot.AttachComponent <FrooxEngine.LogiX.Input.StandardController>();
                    EnumInput <Chirality> nodeEnum2            = logix_slot.AttachComponent <EnumInput <Chirality> >();
                    nodeEnum2.Value.Value = Chirality.Right;
                    standardControllerRight.User.Target = userRegister;
                    standardControllerRight.Node.Target = nodeEnum2;
                    SyncRef <ValueStream <bool> > _primaryStreamRight   = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_primaryStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);
                    SyncRef <ValueStream <bool> > _secondaryStreamRight = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_secondaryStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);
                    SyncRef <ValueStream <bool> > _grabStreamRight      = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_grabStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);
                    SyncRef <ValueStream <bool> > _menuStreamRight      = (SyncRef <ValueStream <bool> >) typeof(StandardController).GetField("_menuStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);
                    SyncRef <ValueStream <float> > _strengthStreamRight = (SyncRef <ValueStream <float> >) typeof(StandardController).GetField("_strengthStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);
                    SyncRef <ValueStream <float2> > _axisStreamRight    = (SyncRef <ValueStream <float2> >) typeof(StandardController).GetField("_axisStream", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(standardControllerRight);

                    primaryStreamsRefs[user_id]   = new Tuple <SyncRef <ValueStream <bool> >, SyncRef <ValueStream <bool> > >(_primaryStreamLeft, _primaryStreamRight);
                    secondaryStreamsRefs[user_id] = new Tuple <SyncRef <ValueStream <bool> >, SyncRef <ValueStream <bool> > >(_secondaryStreamLeft, _secondaryStreamRight);
                    grabStreamsRefs[user_id]      = new Tuple <SyncRef <ValueStream <bool> >, SyncRef <ValueStream <bool> > >(_grabStreamLeft, _grabStreamRight);
                    menuStreamsRefs[user_id]      = new Tuple <SyncRef <ValueStream <bool> >, SyncRef <ValueStream <bool> > >(_menuStreamLeft, _menuStreamRight);
                    strengthStreamsRefs[user_id]  = new Tuple <SyncRef <ValueStream <float> >, SyncRef <ValueStream <float> > >(_strengthStreamLeft, _strengthStreamRight);
                    axisStreamsRefs[user_id]      = new Tuple <SyncRef <ValueStream <float2> >, SyncRef <ValueStream <float2> > >(_axisStreamLeft, _axisStreamRight);
                }
                added_logix = true;
                UniLog.Log("Added logix");
            });
            metagen_comp.StartTask(async() =>
            {
                Task task = Task.Run(() =>
                {
                    bool all_streams_not_null        = false;
                    List <RefID> good_tracking_users = new List <RefID>();

                    //UniLog.Log("HO");
                    while (!all_streams_not_null & currentWorld.TotalUpdates <= currentTotalUpdates + 60)
                    {
                        if (!added_logix)
                        {
                            continue;
                        }
                        //UniLog.Log("HI");
                        bool all_user_streams_not_null = true;
                        all_streams_not_null           = true;
                        foreach (RefID user_id in current_tracked_users)
                        {
                            //HMM: why does using .Target here rather than .RawTarget give a NullReferenceException??
                            bool primary_streams_not_null   = (primaryStreamsRefs[user_id].Item1.RawTarget != null) & (primaryStreamsRefs[user_id].Item2.RawTarget != null);
                            bool secondary_streams_not_null = (secondaryStreamsRefs[user_id].Item1.RawTarget != null) & (secondaryStreamsRefs[user_id].Item2.RawTarget != null);
                            bool grab_streams_not_null      = (grabStreamsRefs[user_id].Item1.RawTarget != null) & (grabStreamsRefs[user_id].Item2.RawTarget != null);
                            bool menu_streams_not_null      = (menuStreamsRefs[user_id].Item1.RawTarget != null) & (menuStreamsRefs[user_id].Item2.RawTarget != null);
                            bool strength_streams_not_null  = (strengthStreamsRefs[user_id].Item1.RawTarget != null) & (strengthStreamsRefs[user_id].Item2.RawTarget != null);
                            bool axis_streams_not_null      = (axisStreamsRefs[user_id].Item1.RawTarget != null) & (axisStreamsRefs[user_id].Item2.RawTarget != null);

                            all_user_streams_not_null = primary_streams_not_null & secondary_streams_not_null & grab_streams_not_null & menu_streams_not_null & strength_streams_not_null & axis_streams_not_null;

                            if (all_user_streams_not_null)
                            {
                                if (!good_tracking_users.Contains(user_id))
                                {
                                    good_tracking_users.Add(user_id);
                                    UniLog.Log("Added user " + user_id.ToString());
                                }
                            }

                            all_streams_not_null &= all_user_streams_not_null;
                        }
                    }

                    current_tracked_users = good_tracking_users;

                    //Get CommonToolStreamDriver
                    List <RefID> good_tracking_users2 = new List <RefID>();
                    foreach (RefID user_id in current_tracked_users)
                    {
                        User user = currentWorld.GetUser(user_id);
                        List <CommonToolStreamDriver> commonToolStreamDrivers = user.Root.Slot.GetComponents <CommonToolStreamDriver>();
                        ValueStream <bool> primaryBlockedStreamLeft           = null;
                        ValueStream <bool> secondaryBlockedStreamLeft         = null;
                        ValueStream <bool> laserActiveStreamLeft        = null;
                        ValueStream <bool> showLaserToOthersStreamLeft  = null;
                        ValueStream <float3> laserTargetStreamLeft      = null;
                        ValueStream <float> grabDistanceStreamLeft      = null;
                        ValueStream <bool> primaryBlockedStreamRight    = null;
                        ValueStream <bool> secondaryBlockedStreamRight  = null;
                        ValueStream <bool> laserActiveStreamRight       = null;
                        ValueStream <bool> showLaserToOthersStreamRight = null;
                        ValueStream <float3> laserTargetStreamRight     = null;
                        ValueStream <float> grabDistanceStreamRight     = null;
                        foreach (CommonToolStreamDriver driver in commonToolStreamDrivers)
                        {
                            if (driver.Side.Value == Chirality.Left)
                            {
                                primaryBlockedStreamLeft    = driver.PrimaryBlockedStream.Target;
                                secondaryBlockedStreamLeft  = driver.SecondaryBlockedStream.Target;
                                laserActiveStreamLeft       = driver.LaserActiveStream.Target;
                                showLaserToOthersStreamLeft = driver.ShowLaserToOthersStream.Target;
                                laserTargetStreamLeft       = driver.LaserTargetStream.Target;
                                grabDistanceStreamLeft      = driver.GrabDistanceStream.Target;
                            }
                            else if (driver.Side.Value == Chirality.Right)
                            {
                                primaryBlockedStreamRight    = driver.PrimaryBlockedStream.Target;
                                secondaryBlockedStreamRight  = driver.SecondaryBlockedStream.Target;
                                laserActiveStreamRight       = driver.LaserActiveStream.Target;
                                showLaserToOthersStreamRight = driver.ShowLaserToOthersStream.Target;
                                laserTargetStreamRight       = driver.LaserTargetStream.Target;
                                grabDistanceStreamRight      = driver.GrabDistanceStream.Target;
                            }
                        }
                        bool all_common_tool_streams_not_null = primaryBlockedStreamLeft != null & primaryBlockedStreamRight != null
                                                                & secondaryBlockedStreamLeft != null & secondaryBlockedStreamRight != null
                                                                & laserActiveStreamLeft != null & laserActiveStreamRight != null
                                                                & showLaserToOthersStreamLeft != null & showLaserToOthersStreamRight != null
                                                                & laserTargetStreamLeft != null & laserActiveStreamRight != null
                                                                & grabDistanceStreamLeft != null & grabDistanceStreamRight != null;
                        if (all_common_tool_streams_not_null)
                        {
                            good_tracking_users2.Add(user_id);
                            primaryBlockedStreams[user_id]    = new Tuple <ValueStream <bool>, ValueStream <bool> >(primaryBlockedStreamLeft, primaryBlockedStreamRight);
                            secondaryBlockedStreams[user_id]  = new Tuple <ValueStream <bool>, ValueStream <bool> >(secondaryBlockedStreamLeft, secondaryBlockedStreamRight);
                            laserActiveStreams[user_id]       = new Tuple <ValueStream <bool>, ValueStream <bool> >(laserActiveStreamLeft, laserActiveStreamRight);
                            showLaserToOthersStreams[user_id] = new Tuple <ValueStream <bool>, ValueStream <bool> >(showLaserToOthersStreamLeft, showLaserToOthersStreamRight);
                            laserTargetStreams[user_id]       = new Tuple <ValueStream <float3>, ValueStream <float3> >(laserTargetStreamLeft, laserTargetStreamRight);
                            grabDistanceStreams[user_id]      = new Tuple <ValueStream <float>, ValueStream <float> >(grabDistanceStreamLeft, grabDistanceStreamRight);
                        }
                    }
                    current_tracked_users = good_tracking_users2;
                    foreach (RefID user_id in current_tracked_users)
                    {
                        primaryStreams[user_id]   = new Tuple <ValueStream <bool>, ValueStream <bool> >(primaryStreamsRefs[user_id].Item1.RawTarget, primaryStreamsRefs[user_id].Item2.RawTarget);
                        secondaryStreams[user_id] = new Tuple <ValueStream <bool>, ValueStream <bool> >(secondaryStreamsRefs[user_id].Item1.RawTarget, secondaryStreamsRefs[user_id].Item2.RawTarget);
                        grabStreams[user_id]      = new Tuple <ValueStream <bool>, ValueStream <bool> >(grabStreamsRefs[user_id].Item1.RawTarget, grabStreamsRefs[user_id].Item2.RawTarget);
                        menuStreams[user_id]      = new Tuple <ValueStream <bool>, ValueStream <bool> >(menuStreamsRefs[user_id].Item1.RawTarget, menuStreamsRefs[user_id].Item2.RawTarget);
                        strengthStreams[user_id]  = new Tuple <ValueStream <float>, ValueStream <float> >(strengthStreamsRefs[user_id].Item1.RawTarget, strengthStreamsRefs[user_id].Item2.RawTarget);
                        axisStreams[user_id]      = new Tuple <ValueStream <float2>, ValueStream <float2> >(axisStreamsRefs[user_id].Item1.RawTarget, axisStreamsRefs[user_id].Item2.RawTarget);
                        RegisterUserStream(user_id, "controller_streams");
                    }
                    //Destroy LogiX nodes
                    currentWorld.RunSynchronously(() =>
                    {
                        logix_slot.Destroy();
                    });

                    isRecording = true;
                });

                //await CancelAfterAsync(ct=>task, TimeSpan.FromSeconds(30), CancellationToken.None);
                await task;
            });
        }
Пример #22
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key)
 {
 }
Пример #23
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public override void noticeInput(EnumInput key, Touch[] inputs)
 {
 }
Пример #24
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public abstract void noticeInput(EnumInput key);
Пример #25
0
 /// <summary>Recieves all the necessary inputs (keyboard, gamepad and mouse).</summary>
 /// <param name="key">The input sent.</param>
 /// <returns>void</returns>
 public abstract void noticeInput(EnumInput key, Touch[] inputs);