コード例 #1
0
 void OnSelect(BeatObjectData beatObjectData)
 {
     if (_objectsUi.TryGetValue(beatObjectData.id, out var objectUi))
     {
         objectUi.OnSelectProperties();
     }
 }
コード例 #2
0
        void OnSelected(BeatObjectData beatObjectData)
        {
            GameObject gizmo = null;

            foreach (var modelInput in beatObjectData.modelInputsData)
            {
                if (modelInput is POSITION || modelInput is ROTATION)
                {
                    if (gizmo == null)
                    {
                        gizmo = Instantiate(instancePositionGizmo);
                        _gizmos.Add(gizmo);
                    }
                }

                if (modelInput is ROTATION rotation)
                {
                    RotationGizmo rotationGizmo = gizmo.GetComponentInChildren <RotationGizmo>();
                    rotationGizmo.enabled = true;
                    rotationGizmo.InitGizmo(beatObjectData.id, rotation);
                }

                if (modelInput is POSITION position)
                {
                    PositionGizmo positionGizmo = gizmo.GetComponent <PositionGizmo>();
                    positionGizmo.enabled = true;
                    positionGizmo.InitGizmo(beatObjectData.id, position);
                }
            }
        }
コード例 #3
0
ファイル: ObjectUI.cs プロジェクト: CrishNate/MoveSync
        public void Init(BeatObjectData data, TimelineScroll timeline)
        {
            beatObjectData = data;
            _timeline      = timeline;

            if (beatObjectData.hasModel <APPEAR>())
            {
                _appearUI.onValueChanged.AddListener(OnSetAppear);
            }
            else
            {
                _appearUI.IsShown(false);
            }

            if (beatObjectData.hasModel <DURATION>())
            {
                _durationUI.onValueChanged.AddListener(OnSetDuration);
            }
            else
            {
                _durationUI.IsShown(false);
            }

            if (LevelEditor.instance.objectIcons.TryGetValue(data.objectTag, out Sprite sprite))
            {
                _image.sprite = sprite;
            }
            _image.color = MoveSyncData.instance.colorData.DefaultUIBeatObject;
        }
コード例 #4
0
        public override void Init(BeatObjectData beatObjectData)
        {
            base.Init(beatObjectData);

            _positionEnd    = beatObjectData.getModel <POSITION>().value;
            _positionOrigin = _positionEnd + new Vector3(0, -10.0f, 0);
            _speed          = beatObjectData.getModel <SPEED>().value;

            _appear   = beatObjectData.getModel <APPEAR>().value;
            _duration = beatObjectData.getModel <DURATION>().value;
            _size     = beatObjectData.getModel <SIZE>().value;

            transform.localScale *= _size;
            transform.position    = _positionOrigin;

            if (beatObjectData.tryGetModel <SHAPE>(out var shape))
            {
                _shape = shape.mesh;
                MeshFilter meshFilter = GetComponentInChildren <MeshFilter>();
                if (meshFilter)
                {
                    meshFilter.sharedMesh = _shape;
                }
            }

            _animator.speed = LevelSequencer.instance.toBPM;
        }
コード例 #5
0
        void Update()
        {
            // update on replaying
            if (playing != LevelSequencer.instance.songPlaying)
            {
                if (playing = LevelSequencer.instance.songPlaying)
                {
                    MoveBeatIndex();
                }
            }

            if (LevelSequencer.instance.songPlaying)
            {
                // update on moving playmarker
                float timeBPM = LevelSequencer.instance.timeBPM;
                if (lastTimeBPM > timeBPM || (timeBPM - lastTimeBPM) > 2.0f)
                {
                    MoveBeatIndex();
                }

                if (currentBeatIndex < LevelDataManager.instance.levelInfo.beatObjectDatas.Count)
                {
                    BeatObjectData nextBeatObject =
                        LevelDataManager.instance.levelInfo.beatObjectDatas[currentBeatIndex];

                    if (timeBPM > nextBeatObject.spawnTime)
                    {
                        TriggerBeatObject(nextBeatObject);
                        currentBeatIndex++;
                    }
                }

                lastTimeBPM = timeBPM;
            }
        }
コード例 #6
0
 void OnDeselect(BeatObjectData beatObjectData)
 {
     if (_objectsUi.TryGetValue(beatObjectData.id, out var objectUi))
     {
         objectUi.OnDeselectProperties(_selectedObjects.ContainsKey(objectUi.beatObjectData.id));
     }
 }
コード例 #7
0
 void OnDeselected(BeatObjectData beatObjectData)
 {
     foreach (var gizmo in _gizmos)
     {
         Destroy(gizmo);
     }
     _gizmos.Clear();
 }
コード例 #8
0
        public bool RemoveBeatObject(BeatObjectData beatObjectData, bool history = true)
        {
            if (history)
            {
                BackupInfo();
            }

            onRemoveObject.Invoke(beatObjectData.id);
            return(levelInfo.beatObjectDatas.Remove(beatObjectData));
        }
コード例 #9
0
 void OnNewElement(BeatObjectData beatObjectData)
 {
     if (beatObjectData.tryGetModel <POSITION>(out var position))
     {
         if (position.randomSpawnType != RandomSpawnType.None)
         {
             position.value           = GetRandomPoint(position);
             position.pivot           = Vector3.one;
             position.randomSpawnType = RandomSpawnType.None;
         }
     }
 }
コード例 #10
0
        public void CopyBeatObject(BeatObjectData beatObjectData, float time = 0.0f, int layer = 0, bool history = true)
        {
            BeatObjectData data = beatObjectData.Clone();

            data.time        = time;
            data.editorLayer = layer;

            if (history)
            {
                BackupInfo();
            }

            levelInfo.beatObjectDatas.Add(data);
            onNewObject.Invoke(data);
        }
コード例 #11
0
 void TriggerBeatObject(BeatObjectData beatObjectData)
 {
     if (beatObjectData.hasModel <EVENT>())
     {
         EventManager.instance.InvokeEvent(beatObjectData.getModel <EVENT>().value, beatObjectData.time);
     }
     else
     {
         BeatObject beatObject =
             Instantiate(ObjectManager.instance.objectModels[beatObjectData.objectTag].prefab)
             .GetComponent <BeatObject>();
         beatObject.Init(beatObjectData);
         beatObject.gameObject.SetActive(true);
     }
 }
コード例 #12
0
        public void AddObject(BeatObjectData data)
        {
            ObjectUI objectUi = Instantiate(_objectUiInstance, _rectObjectsList).GetComponent <ObjectUI>();

            objectUi.Init(data, _timeline);
            objectUi.onStartDrag.AddListener(OnStartDragObject);
            objectUi.onDrag.AddListener(OnDragObject);
            objectUi.onStopDrag.AddListener(OnStopDragObject);
            UpdateObject(objectUi);

            if (_drawOnlyBeatKeys)
            {
                objectUi.ShowOnlyKey(true);
            }

            _objectsUi.Add(objectUi.beatObjectData.id, objectUi);
        }
コード例 #13
0
        public override void Init(BeatObjectData beatObjectData)
        {
            base.Init(beatObjectData);

            _meshRenderer = GetComponentInChildren <MeshRenderer>();

            _appear   = beatObjectData.getModel <APPEAR>().value;
            _duration = beatObjectData.getModel <DURATION>().value;
            _size     = beatObjectData.getModel <SIZE>().value;

            if (MoveSyncData.instance.shapeData.shapes.TryGetValue(beatObjectData.getModel <SHAPE>().value, out Mesh mesh))
            {
                GetComponentInChildren <MeshFilter>().sharedMesh = mesh;
            }

            transform.localScale = Vector3.zero;
            transform.position   = beatObjectData.getModel <POSITION>().value;
        }
コード例 #14
0
ファイル: BeatDiscoBall.cs プロジェクト: CrishNate/MoveSync
        public override void Init(BeatObjectData beatObjectData)
        {
            base.Init(beatObjectData);

            _positionEnd    = beatObjectData.getModel <POSITION>().value;
            _positionOrigin = _positionEnd + new Vector3(0, -10.0f, 0);

            _appear   = beatObjectData.getModel <APPEAR>().value;
            _duration = beatObjectData.getModel <DURATION>().value;
            _size     = beatObjectData.getModel <SIZE>().value;
            _count    = beatObjectData.getModel <COUNT>().value;

            transform.localScale *= _size;
            transform.position    = _positionOrigin;
            _savedColor           = _meshRenderer.material.color;

            SpawnDisco();
        }
コード例 #15
0
        public BeatObjectData Clone()
        {
            BeatObjectData other = new BeatObjectData
            {
                objectTag       = objectTag,
                id              = SerializableGuid.NewGuid(),
                modelInputsData = ModelInput.CloneInputs(modelInputsData)
            };

            other.modelInputs = new Dictionary <Type, ModelInput>();
            for (int i = 0; i < other.modelInputsData.Length; i++)
            {
                ModelInput m = other.modelInputsData[i];
                other.modelInputs.Add(m.GetType(), m);
            }

            return(other);
        }
コード例 #16
0
        public override void Init(BeatObjectData beatObjectData)
        {
            base.Init(beatObjectData);

            AnimatorStateInfo current = _animator.GetCurrentAnimatorStateInfo(0);

            _animator.Play(current.fullPathHash, 0, LevelSequencer.instance.timeBPM % 1.0f);

            _positionEnd    = beatObjectData.getModel <POSITION>().value;
            _positionOrigin = _positionEnd + new Vector3(0, -10.0f, 0);

            _appearDuration = beatObjectData.getModel <APPEAR>().value;
            _size           = beatObjectData.getModel <SIZE>().value;
            _shape          = beatObjectData.getModel <SHAPE>().mesh;

            transform.localScale *= _size;
            transform.position    = _positionOrigin;

            _animator.speed = LevelSequencer.instance.toBPM;
        }
コード例 #17
0
ファイル: BeatShoot.cs プロジェクト: CrishNate/MoveSync
        public override void Init(BeatObjectData beatObjectData)
        {
            base.Init(beatObjectData);

            position = beatObjectData.getModel <POSITION>().value;

            appear     = beatObjectData.getModel <APPEAR>().value;
            duration   = beatObjectData.getModel <DURATION>().value;
            size       = beatObjectData.getModel <SIZE>().value;
            projectile = beatObjectData.getModel <PROJECTILE>().projectile;

            transform.position = GetSpawnPosition();
            transform.rotation = GetRotationByTargetState();

            Shoot();

            if (GetDestroyTime() < 0)
            {
                Destroy(gameObject);
            }
        }
コード例 #18
0
        /*
         * Object controll
         */

        public BeatObjectData NewBeatObject(ObjectModel objectModel, float time = 0.0f, int layer = 0, bool history = true)
        {
            BeatObjectData data = new BeatObjectData
            {
                objectTag       = objectModel.objectTag,
                id              = SerializableGuid.NewGuid(),
                time            = time,
                editorLayer     = layer,
                modelInputsData = ModelInput.CloneInputs(objectModel.modelInput),
            };

            if (history)
            {
                BackupInfo();
            }

            levelInfo.beatObjectDatas.Add(data);
            onNewObject.Invoke(data);
            SortBeatObjects();

            return(data);
        }
コード例 #19
0
        void OnDragObject(ObjectUI objectUi)
        {
            List <int> keys = new List <int>(_selectedObjects.Keys);

            foreach (var key in keys)
            {
                SelectedObjectData newSelectedObject = _selectedObjects[key];
                BeatObjectData     data = newSelectedObject.beatObjectData;

                // offsetting beat objects while moving
                if (!InputData.shouldOnlyLayer)
                {
                    data.time = Mathf.Max(0, mouseTime + newSelectedObject.offset);
                }
                data.editorLayer = Mathf.Max(0, mouseLayer + newSelectedObject.offsetLayer);
                if (InputData.shouldSnap)
                {
                    data.time = Mathf.Round(data.time);
                }

                UpdateObject(newSelectedObject.objectUi);
            }
        }
コード例 #20
0
ファイル: BeatObject.cs プロジェクト: CrishNate/MoveSync
 public virtual void Init(BeatObjectData beatObjectData)
 {
     _beatObjectData = beatObjectData;
     _spawnTimeBPM   = beatObjectData.spawnTime;
 }