public EventData[] GenerateEvent() { EventCustomData customData; switch (Type) { case EventType.LightBackTopLasers: case EventType.LightTrackRingNeons: case EventType.LightLeftLasers: case EventType.LightRightLasers: case EventType.LightBottomBackSideLasers: case EventType.Lasers: case EventType.BackTopTrackRing: customData = new EventCustomData { Color = Color.Copy(), PropID = PropID.Copy(), LightID = LightID.Copy() }; break; case EventType.RotationAllTrackRings: case EventType.RotationSmallTrackRings: customData = new RingCustomData { CounterSpin = CounterLock.Copy(), Direction = Direction.Copy(), NameFilter = Filter.Copy(), PropMult = PropMult.Copy(), Reset = Reset.Copy(), SpeedMult = SpeedMult.Copy(), StepMult = StepMult.Copy(), Prop = Prop.Copy(), Speed = Speed.Copy(), Step = Step.Copy() }; break; case EventType.RotatingLeftLasers: case EventType.RotatingRightLasers: case EventType.RotatingLasers: customData = new LaserCustomData { Direction = Direction.Copy(), LockPosition = CounterLock.Copy(), PreciseSpeed = Speed.Copy() }; break; default: throw new ArgumentOutOfRangeException(); } if (Type == EventType.Lasers || Type == EventType.RotatingLasers || Type == EventType.BackTopTrackRing) { return new[] { new EventData { CustomData = customData, Value = (int)Value, Type = Type == EventType.Lasers ? 2 : Type == EventType.RotatingLasers ? 12 : 0, Time = (float)StartTime }, new EventData { CustomData = customData, Value = (int)Value, Type = Type == EventType.Lasers ? 3 : Type == EventType.RotatingLasers ? 13 : 1, Time = (float)StartTime }, } } ; else { return new[] { new EventData { CustomData = customData, Value = (int)Value, Type = (int)Type, Time = (float)StartTime } } }; } }