Example #1
0
 public void MoveTowardsByAngle()
 {
     Assert.AreEqual(Vector2Util.FromDeg(45f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, 0.1f), 45f));
     Assert.AreEqual(Vector2Util.FromDeg(90f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, 0.1f), 90f));
     Assert.AreEqual(Vector2Util.FromDeg(-45f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, -0.1f), 45f));
     Assert.AreEqual(Vector2Util.FromDeg(-90f), Vector2Util.MoveTowardsByAngle(new Vector2(0f, 0f), new Vector2(-1f, -0.1f), 90f));
 }
Example #2
0
            public void Update()
            {
                if (testEnemy.enabled)
                {
                    UpdateTestEnemy();
                    return;
                }
                if (0 < debugStartTime)
                {
                    if (Stage.Current.time.time < debugStartTime)
                    {
                        Stage.Current.time.time = debugStartTime;
                    }

                    if (debugStartTime + debugLoopDuration < Stage.Current.time.time)
                    {
                        Stage.Current.time.time = debugStartTime;
                    }
                }

                var preTime = Stage.Current.time.preTime;
                var time    = Stage.Current.time.time;

                for (int i = 0, iCount = data.eventList.Length; i < iCount; ++i)
                {
                    var row = data.eventList[i];
                    if (row.type == WaveEventType.None)
                    {
                        continue;
                    }
                    if (!TimeEventData.TryGetEvent(startTime + (row.startTime / 1000f), 0f, preTime, time, out var eventData))
                    {
                        continue;
                    }
                    var pos   = row.position * 16f;
                    var enemy = CharaFactory.CreateEnemy(row.enemyName);
                    enemy.data.position = pos;
                    var vec = Vector2Util.FromDeg(row.angle);
                    enemy.data.rotation = Quaternion.LookRotation((Vector3)vec);
                    enemy.data.velocity = enemy.data.rotation * Vector3.forward;

                    Main.Instance.stage.charaBank.Add(enemy);
                }
            }
Example #3
0
            float Draw(Rect position, SerializedProperty property, GUIContent label, bool isLayout)
            {
                // https://docs.unity3d.com/ja/current/ScriptReference/PropertyDrawer.html

                var startY = position.y;

                if (!isLayout)
                {
                    EditorGUI.BeginProperty(position, label, property);
                }
                {
                    position.height = EditorGUIUtility.singleLineHeight;

                    var spType      = property.FindPropertyRelative(nameof(model.type));
                    var spComment   = property.FindPropertyRelative(nameof(model.comment));
                    var spStartTime = property.FindPropertyRelative(nameof(model.startTime));
                    var spEnemyName = property.FindPropertyRelative(nameof(model.enemyName));
                    var spPositionX = property.FindPropertyRelative(nameof(model.positionX));
                    var spPositionY = property.FindPropertyRelative(nameof(model.positionY));
                    var spAngle     = property.FindPropertyRelative(nameof(model.angle));

                    var type = EnumUtil <WaveEventType> .GetValueAt(spType.enumValueIndex);

                    var pos21 = new Rect(position.x + position.width * 0.5f * 0, position.y, position.width * 0.5f, position.height);
                    var pos22 = new Rect(position.x + position.width * 0.5f * 1, position.y, position.width * 0.5f, position.height);

                    var pos31 = new Rect(position.x + position.width * 0.3f * 0, position.y, position.width * 0.3f, position.height);
                    var pos32 = new Rect(position.x + position.width * 0.3f * 1, position.y, position.width * 0.3f, position.height);
                    var pos33 = new Rect(position.x + position.width * 0.3f * 2, position.y, position.width * 0.3f, position.height);

                    bool isExpanded = property.isExpanded && type != WaveEventType.None;
                    {
                        if (!isLayout)
                        {
                            if (isExpanded)
                            {
                                property.isExpanded = EditorGUI.Foldout(position, property.isExpanded, label);
                            }
                            else
                            {
                                property.isExpanded = EditorGUI.Foldout(pos31, property.isExpanded, label);
                                PropertyField(ref pos32, isLayout, spType, GUIContent.none);
                                if (type == WaveEventType.None)
                                {
                                    PropertyField(ref pos33, isLayout, spComment, GUIContent.none);
                                }
                                else
                                {
                                    PropertyField(ref pos33, isLayout, spStartTime, GUIContent.none);
                                }
                            }
                        }
                        position.y += LineHeight;
                    }

                    if (isExpanded)
                    {
                        PropertyField(ref position, isLayout, spType);

                        if (type == WaveEventType.None)
                        {
                            PropertyField(ref position, isLayout, spComment);
                        }
                        else if (type == WaveEventType.Spawn)
                        {
                            PropertyField(ref position, isLayout, spStartTime);
                            PropertyField(ref position, isLayout, spEnemyName);
                            PropertyField(ref position, isLayout, spPositionX);
                            PropertyField(ref position, isLayout, spPositionY);
                            {
                                pos21.y = pos22.y = position.y;
                                PropertyField(ref pos21, isLayout, spAngle);
                                var vec = Vector2Util.FromDeg(spAngle.floatValue);
                                if (!isLayout)
                                {
                                    EditorGUI.BeginDisabledGroup(true);
                                }
                                if (!isLayout)
                                {
                                    EditorGUI.Vector2Field(pos22, "", vec);
                                }
                                if (!isLayout)
                                {
                                    EditorGUI.EndDisabledGroup();
                                }
                                position.y += LineHeight;
                            }
                        }
                    }
                }
                if (!isLayout)
                {
                    EditorGUI.EndProperty();
                }
                return(position.y - startY);
            }