示例#1
0
 public void ResetControllers(ObstacleController controller)
 {
     controller.SetPrivateField("_playerController", _localPlayer);
     controller.SetPrivateField("_audioTimeSyncController", _localSyncController);
     controller.finishedMovementEvent -= ResetControllers;
     controller.didDissolveEvent      -= ResetControllers;
     if (_activeObstacles != null)
     {
         _activeObstacles.Remove(controller);
     }
 }
示例#2
0
        public override void SetObstacleEventCallbacks(ObstacleController obstacleController)
        {
            obstacleController.finishedMovementEvent           += HandleObstacleFinishedMovement;
            obstacleController.passedThreeQuartersOfMove2Event += HandleObstaclePassedThreeQuartersOfMove2;
            obstacleController.passedAvoidedMarkEvent          += HandleObstaclePassedAvoidedMark;
            obstacleController.didDissolveEvent += HandleObstacleDidDissolve;

            obstacleController.SetPrivateField("_playerController", owner);
            obstacleController.SetPrivateField("_audioTimeSyncController", onlineSyncController);
            _activeObstacles.Add(obstacleController);
        }
示例#3
0
        public override void RemoveObstacleEventCallbacks(ObstacleController obstacleController)
        {
            obstacleController.finishedMovementEvent           -= HandleObstacleFinishedMovement;
            obstacleController.passedThreeQuartersOfMove2Event -= HandleObstaclePassedThreeQuartersOfMove2;
            obstacleController.passedAvoidedMarkEvent          -= HandleObstaclePassedAvoidedMark;
            obstacleController.didDissolveEvent -= HandleObstacleDidDissolve;

            obstacleController.SetPrivateField("_playerController", _localPlayer);
            obstacleController.SetPrivateField("_audioTimeSyncController", _localSyncController);
            if (_activeObstacles != null)
            {
                _activeObstacles.Remove(obstacleController);
            }
        }
示例#4
0
        public override void BeatmapObjectSpawnCallback(BeatmapObjectData beatmapObjectData)
        {
            if (_disableSpawning)
            {
                return;
            }
            float num  = _moveDistance / _moveSpeed;
            float num2 = _jumpDistance / _noteJumpMovementSpeed;

            if (beatmapObjectData.beatmapObjectType == BeatmapObjectType.Obstacle)
            {
                ObstacleData obstacleData = (ObstacleData)beatmapObjectData;
                Vector3      forward      = transform.forward;
                Vector3      a            = transform.position;
                a += forward * (_moveDistance + _jumpDistance * 0.5f);
                Vector3 a2         = a - forward * _moveDistance;
                Vector3 a3         = a - forward * (_moveDistance + _jumpDistance);
                Vector3 noteOffset = GetNoteOffset(beatmapObjectData.lineIndex, NoteLineLayer.Base);
                noteOffset.y = ((obstacleData.obstacleType != ObstacleType.Top) ? _verticalObstaclePosY : (_topObstaclePosY + _globalYJumpOffset));
                ObstacleController.Pool pool = (obstacleData.obstacleType != ObstacleType.Top) ? _fullHeightObstaclePool : _topObstaclePool;
                ObstacleController      obstacleController = pool.Spawn();
                SetObstacleEventCallbacks(obstacleController);
                obstacleController.transform.SetPositionAndRotation(a + noteOffset, Quaternion.identity);
                obstacleController.Init(obstacleData, a + noteOffset, a2 + noteOffset, a3 + noteOffset, num, num2, beatmapObjectData.time - _spawnAheadTime, _noteLinesDistance);
                obstacleController.SetPrivateField("_playerController", owner);
                obstacleController.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                obstacleController.finishedMovementEvent += ResetControllers;
                obstacleController.didDissolveEvent      += ResetControllers;
                _activeObstacles.Add(obstacleController);
            }
            else
            {
                NoteData noteData = (NoteData)beatmapObjectData;
                Vector3  forward2 = transform.forward;
                Vector3  a4       = transform.position;
                a4 += forward2 * (_moveDistance + _jumpDistance * 0.5f);
                Vector3 a5 = a4 - forward2 * _moveDistance;
                Vector3 a6 = a4 - forward2 * (_moveDistance + _jumpDistance);
                if (noteData.noteLineLayer == NoteLineLayer.Top)
                {
                    a6 += forward2 * _topLinesZPosOffset * 2f;
                }
                Vector3 noteOffset2 = GetNoteOffset(noteData.lineIndex, noteData.startNoteLineLayer);
                float   jumpGravity = JumpGravityForLineLayer(noteData.noteLineLayer, noteData.startNoteLineLayer);
                if (noteData.noteType == NoteType.Bomb)
                {
                    NoteController bombNoteController = _bombNotePool.Spawn();
                    SetNoteControllerEventCallbacks(bombNoteController);
                    bombNoteController.transform.SetPositionAndRotation(a4 + noteOffset2, Quaternion.identity);
                    bombNoteController.Init(noteData, a4 + noteOffset2, a5 + noteOffset2, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity);
                    var noteJump = bombNoteController.GetComponent <NoteJump>();
                    noteJump.SetPrivateField("_playerController", owner);
                    noteJump.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    bombNoteController.GetComponent <NoteFloorMovement>().SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    bombNoteController.noteDidFinishJumpEvent += ResetControllers;
                    bombNoteController.noteWasCutEvent        += ResetControllersNoteWasCut;
                    bombNoteController.noteDidDissolveEvent   += ResetControllers;
                    _activeNotes.Add(bombNoteController);
                }
                else if (noteData.noteType.IsBasicNote())
                {
                    NoteController.Pool pool2 = (noteData.noteType != NoteType.NoteA) ? _noteBPool : _noteAPool;
                    NoteController      basicNoteController = pool2.Spawn();
                    SetNoteControllerEventCallbacks(basicNoteController);
                    Vector3 noteOffset3 = GetNoteOffset(noteData.flipLineIndex, noteData.startNoteLineLayer);
                    basicNoteController.transform.SetPositionAndRotation(a4 + noteOffset3, Quaternion.identity);
                    GameNoteController gameNoteController = basicNoteController as GameNoteController;
                    if (gameNoteController != null)
                    {
                        gameNoteController.Init(noteData, a4 + noteOffset3, a5 + noteOffset3, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity, _disappearingArrows, _ghostNotes);
                    }
                    else
                    {
                        basicNoteController.Init(noteData, a4 + noteOffset3, a5 + noteOffset3, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity);
                    }
                    var noteJump = basicNoteController.GetComponent <NoteJump>();
                    noteJump.SetPrivateField("_playerController", owner);
                    noteJump.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    basicNoteController.GetComponent <NoteFloorMovement>().SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    basicNoteController.GetComponentsInChildren <BoxCollider>().First(x => x.name == "BigCuttable").size   = _defaultBigCuttableSize * 1.65f;
                    basicNoteController.GetComponentsInChildren <BoxCollider>().First(x => x.name == "SmallCuttable").size = _defaultSmallCuttableSize * 1.65f;
                    basicNoteController.noteDidFinishJumpEvent += ResetControllers;
                    basicNoteController.noteWasCutEvent        += ResetControllersNoteWasCut;
                    basicNoteController.noteDidDissolveEvent   += ResetControllers;
                    _prevSpawnedNormalNoteController            = basicNoteController;
                    _activeNotes.Add(basicNoteController);
                }
            }
        }
示例#5
0
        public override void SpawnBeatmapObject(BeatmapObjectData beatmapObjectData)
        {
            if (_disableSpawning)
            {
                return;
            }

            float num  = _moveDistance / _moveSpeed;
            float num2 = _jumpDistance / _noteJumpMovementSpeed;

            if (beatmapObjectData.beatmapObjectType == BeatmapObjectType.Obstacle)
            {
                ObstacleData obstacleData = (ObstacleData)beatmapObjectData;
                Vector3      forward      = transform.forward;
                Vector3      a            = transform.position;
                a += forward * (_moveDistance + _jumpDistance * 0.5f);
                Vector3 a2         = a - forward * _moveDistance;
                Vector3 a3         = a - forward * (_moveDistance + _jumpDistance);
                Vector3 noteOffset = GetNoteOffset(beatmapObjectData.lineIndex, NoteLineLayer.Base);
                noteOffset.y = ((obstacleData.obstacleType == ObstacleType.Top) ? (_topObstaclePosY + _globalJumpOffsetY) : _verticalObstaclePosY);
                float height = (obstacleData.obstacleType == ObstacleType.Top) ? _topObstacleHeight : _verticalObstacleHeight;
                ObstacleController obstacleController = _obstaclePool.Spawn();
                SetObstacleEventCallbacks(obstacleController);
                obstacleController.transform.SetPositionAndRotation(a + noteOffset, Quaternion.identity);
                obstacleController.Init(obstacleData, _spawnRotationProcesser.rotation, a + noteOffset, a2 + noteOffset, a3 + noteOffset, num, num2, beatmapObjectData.time - _spawnAheadTime, _noteLinesDistance, height);
                obstacleController.SetPrivateField("_playerController", owner);
                obstacleController.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                obstacleController.finishedMovementEvent += ResetControllers;
                obstacleController.didDissolveEvent      += ResetControllers;
                _activeObstacles.Add(obstacleController);

                this.GetPrivateField <Action <BeatmapObjectSpawnController, ObstacleController> >("obstacleDiStartMovementEvent")?.Invoke(this, obstacleController);
            }
            else
            {
                NoteData noteData = (NoteData)beatmapObjectData;
                Vector3  forward2 = transform.forward;
                Vector3  a4       = transform.position;
                a4 += forward2 * (_moveDistance + _jumpDistance * 0.5f);
                Vector3 a5 = a4 - forward2 * _moveDistance;
                Vector3 a6 = a4 - forward2 * (_moveDistance + _jumpDistance);
                if (noteData.noteLineLayer == NoteLineLayer.Top)
                {
                    a6 += forward2 * _topLinesZPosOffset * 2f;
                }
                Vector3 noteOffset2 = GetNoteOffset(noteData.lineIndex, noteData.startNoteLineLayer);
                float   jumpGravity = JumpGravityForLineLayer(noteData.noteLineLayer, noteData.startNoteLineLayer);
                if (noteData.noteType == NoteType.Bomb)
                {
                    NoteController noteController = _bombNotePool.Spawn();
                    SetNoteControllerEventCallbacks(noteController);
                    noteController.transform.SetPositionAndRotation(a4 + noteOffset2, Quaternion.identity);
                    noteController.Init(noteData, _spawnRotationProcesser.rotation, a4 + noteOffset2, a5 + noteOffset2, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity);

                    var noteJump = noteController.GetComponent <NoteJump>();
                    noteJump.SetPrivateField("_playerController", owner);
                    noteJump.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    noteController.GetComponent <NoteFloorMovement>().SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    noteController.noteDidFinishJumpEvent += ResetControllers;
                    noteController.noteWasCutEvent        += ResetControllersNoteWasCut;
                    noteController.noteDidDissolveEvent   += ResetControllers;
                    _activeNotes.Add(noteController);
                }
                else if (noteData.noteType.IsBasicNote())
                {
                    MemoryPool <NoteController> memoryPool = (noteData.noteType == NoteType.NoteA) ? _noteAPool : _noteBPool;
                    if (_numberOfSpawnedBasicNotes == 0)
                    {
                        _firstBasicNoteTime = noteData.time;
                    }
                    bool           flag            = _firstBasicNoteTime == noteData.time;
                    NoteController noteController2 = memoryPool.Spawn();
                    SetNoteControllerEventCallbacks(noteController2);
                    Vector3 noteOffset3 = GetNoteOffset(noteData.flipLineIndex, noteData.startNoteLineLayer);
                    noteController2.transform.SetPositionAndRotation(a4 + noteOffset3, Quaternion.identity);
                    GameNoteController gameNoteController = noteController2 as GameNoteController;
                    if (gameNoteController != null)
                    {
                        gameNoteController.Init(noteData, _spawnRotationProcesser.rotation, a4 + noteOffset3, a5 + noteOffset3, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity, _disappearingArrows, _ghostNotes && !flag);
                    }
                    else
                    {
                        noteController2.Init(noteData, _spawnRotationProcesser.rotation, a4 + noteOffset3, a5 + noteOffset3, a6 + noteOffset2, num, num2, noteData.time - _spawnAheadTime, jumpGravity);
                    }

                    var noteJump = noteController2.GetComponent <NoteJump>();
                    noteJump.SetPrivateField("_playerController", owner);
                    noteJump.SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    noteController2.GetComponent <NoteFloorMovement>().SetPrivateField("_audioTimeSyncController", onlineSyncController);
                    noteController2.noteDidFinishJumpEvent += ResetControllers;
                    noteController2.noteWasCutEvent        += ResetControllersNoteWasCut;
                    noteController2.noteDidDissolveEvent   += ResetControllers;

                    _activeNotes.Add(noteController2);
                    _numberOfSpawnedBasicNotes++;
                    if (_prevSpawnedNormalNoteController != null)
                    {
                        float time  = _prevSpawnedNormalNoteController.noteData.time;
                        float time2 = noteController2.noteData.time;
                    }
                    _prevSpawnedNormalNoteController = noteController2;
                }
            }
            this.GetPrivateField <Action <BeatmapObjectSpawnController, BeatmapObjectData, float, float> >("beatmapObjectWasSpawnedEvent")?.Invoke(this, beatmapObjectData, num, num2);
        }