1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-21 14:52:55 +08:00
Commit Graph

773 Commits

Author SHA1 Message Date
Dean Herbert
6894ed3426 Fix new ordering of retrieval meaning EndTime is not available in time 2021-09-03 17:11:12 +09:00
Dean Herbert
74f385bad8 Assign default control points earlier in HitObject construction 2021-09-03 17:11:12 +09:00
Dean Herbert
1aff4c2238 Ensure all hitobject level control points are populated before calling virtual defaults application 2021-09-03 17:11:12 +09:00
Dean Herbert
a3d9ab1e2e Move approach rate to EffectControlPoint 2021-09-03 16:58:16 +09:00
Dean Herbert
b41b1e2394 Write out DifficultyControlPoints into HitObjects 2021-09-03 16:58:16 +09:00
Dean Herbert
d988aa1680 Actually serialise SampleControlPoints along with HitObjects 2021-08-31 15:14:03 +09:00
Dean Herbert
4da2dca339 Apply the default SampleControlPoint if not externally provided
This is mostly to handle tests for now, as generally this should be
provided by an external source in all other cases.
2021-08-30 17:21:07 +09:00
Dean Herbert
ccacf56dd8 Move to legacy namespace 2021-08-30 17:14:53 +09:00
Dean Herbert
7257aae7f2 Move samples to LegacyControlPointInfo 2021-08-30 17:14:53 +09:00
Dean Herbert
6dcd9427ac Remove bindable usage in PathControlPoint
This is quite a breaking change, but I think it is beneficial due to the large amount of usage of this class.

I originally intended just to remove the allocations of the two delegates handling the `Changed` flow internally, but as nothing was really using the bindables for anything more than a general "point has changed" case, this felt like a better direction.
2021-08-26 12:33:53 +09:00
ekrctb
c63dfa21e1 Always initialize DHO transforms on LoadComplete
With the previous commit, the transform application is skipped when the state is already changed. But it turns out the previous commit breaks slider animation in the standard editor. This is probably due to the transforms are applied before nested hit objects are added.
2021-08-10 16:34:38 +09:00
ekrctb
f262f288fc Fix DHO state is overwritten to Idle on LoadComplete
The state may already be changed before `LoadComplete` is called because DHO is already added to the draw hierarchy.
2021-08-06 19:58:46 +09:00
Dean Herbert
50a2abbe7f
Merge pull request #12683 from frenzibyte/legacy-beatmap-combo-offset
Apply combo offsets "colour hax" only on beatmap skins
2021-07-23 14:30:18 +09:00
Salman Ahmed
0b3b9e35ba Also update colours once on DrawableHitObject 2021-07-23 07:32:56 +03:00
Salman Ahmed
8600a3bf5b Replace "offset" term in combo index documentations with "index" instead 2021-07-23 07:31:03 +03:00
Salman Ahmed
523c154f15 Add ComboIndexWithOffsetsBindable and bind similar to ComboIndexBindable 2021-07-22 16:40:33 +03:00
ekrctb
cc01b9e639 Extract SliderPath reverse logic to be used in other rulesets 2021-07-22 16:14:43 +09:00
Dean Herbert
399c3b0be8 Rename property, reword xmldoc and improve readability of update code 2021-07-21 17:32:56 +09:00
Salman Ahmed
9d92b795fa Revert making ComboOffsets legacy and define BeatmapSkinComboIndex instead 2021-07-20 14:15:43 +03:00
Salman Ahmed
554652b033 Merge branch 'refactor-combo-colour-retrieval' into legacy-beatmap-combo-offset 2021-07-20 10:11:52 +03:00
Salman Ahmed
1af230c48c Merge branch 'master' into refactor-combo-colour-retrieval 2021-07-20 10:08:25 +03:00
ekrctb
7f432665e5 Preserve Y position of hit objects in osu!catch 2021-07-14 14:38:38 +09:00
PercyDan54
e1c646b9b2
Remove redundant arguments 2021-07-05 23:52:39 +08:00
smoogipoo
42c5a962fb Add xmldoc remark 2021-06-18 19:27:10 +09:00
smoogipoo
36d51d5117 Don't set entry immediately 2021-06-18 19:23:37 +09:00
smoogipoo
36d2199a02 Add exception on Apply() while loading 2021-06-18 19:20:57 +09:00
ekrctb
e7954ecb60 Use property instead of backing field consistently 2021-06-17 10:31:20 +09:00
ekrctb
117e94bc94 Allow setting Entry of PoolableDrawableWithLifetime
It is more convenient than using the constructor because the only limited kind of expression is allowed in a base constructor call.
Also, the object initializer syntax can be used.
2021-06-16 16:00:08 +09:00
Bartłomiej Dach
296761ade5 Add missing CurrentSkin null check in DHO disposal 2021-06-11 09:18:58 +02:00
Dean Herbert
562cfe8703 Fix filename not matching type rename 2021-06-11 14:34:18 +09:00
Dean Herbert
bc3b7233ab Show osu!taiko centre/rim colouring in editor timeline
Closes #13443.
2021-06-11 14:17:30 +09:00
Dean Herbert
b8df3fff9e
Fix incorrect method referenced in xmldco
Co-authored-by: ekrctb <32995012+ekrctb@users.noreply.github.com>
2021-06-09 14:20:01 +09:00
Dean Herbert
62199a38a8 Add one missing obsoletion removal date 2021-06-09 14:11:50 +09:00
Dean Herbert
f41e34ae2c Remove more obsoleted members 2021-06-09 14:10:48 +09:00
ekrctb
0ce7baa3f3 Make HitObjectContainer.Clear non-virtual
It just call `Remove` for all entries.
2021-06-03 15:00:16 +09:00
ekrctb
2c9e5b6c7e Replace EntryCrossedBoundary with more useful RemoveRewoundEntry property
It can be used for dynamically added entries.
2021-06-03 15:00:16 +09:00
ekrctb
fe2934db1d Factor out lifetime management logic of HitObjectContainer 2021-06-03 14:57:28 +09:00
smoogipoo
d3d8941ec8 Make method internal 2021-06-02 11:11:41 +09:00
smoogipoo
8ee2b3a2d2 Merge branch 'master' into fix-scrolling-lifetime 2021-06-02 11:08:28 +09:00
Dan Balasescu
ac83450791
Merge pull request #13256 from ekrctb/update-lifetime-2
Update DHO lifetime on entry lifetime change
2021-06-02 11:07:54 +09:00
ekrctb
40949f6c1b Simplify lifetime setter
Setting entry lifetime will cause `LifetimeChanged` event and `base.LifetimeStart`/`End` will be modified in the callback.
2021-06-01 14:46:43 +09:00
ekrctb
0f381f7758 Fix wrong code 2021-06-01 14:38:02 +09:00
ekrctb
86020adf64 Revert invalid code transformation 2021-06-01 14:28:23 +09:00
ekrctb
d5714e63b9 Apply code styling suggestions
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2021-06-01 13:17:30 +09:00
ekrctb
86d1ba7ef2 Remove unused IScrollingHitObject interface 2021-05-31 23:17:26 +09:00
ekrctb
56a0a24cba Make SetInitialLifetime public 2021-05-31 15:33:28 +09:00
ekrctb
e25cca6fbe Update drawable lifetime on entry lifetime change 2021-05-31 14:45:29 +09:00
Dan Balasescu
8c6277f0d8
Merge pull request #13235 from ekrctb/update-lifetime-1
Update hit object lifetime on `HitObject.DefaultsApplied`
2021-05-31 14:44:40 +09:00
ekrctb
0c101d2859
Apply comment rewording suggestion
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-05-31 13:41:49 +09:00
ekrctb
abb77b95b4 Fix comment grammar 2021-05-30 13:06:28 +09:00
ekrctb
265dfe5416 Add test case of DHO setting LifetimeStart in OnApply 2021-05-28 21:51:48 +09:00
ekrctb
43bf734816 Reset lifetime on HitObject.DefaultsApplied 2021-05-28 21:35:26 +09:00
ekrctb
1d5e8f4a91 Fix wrong/misleading comment of InitialLifetimeOffset 2021-05-28 17:19:36 +09:00
Dean Herbert
122bb05aa8 Add a mention that OnApply/OnFree is performed after ApplyDefaults 2021-05-27 15:20:35 +09:00
smoogipoo
7494ddeef4 Fix DHOs not receiving initial skin changed events 2021-05-24 14:07:40 +09:00
ekrctb
0489ae719d Don't couple PoolableDrawableWithLifetime lifetime with its entry
It turns out the incompatibility with `LifetimeManagementContainer` causes more issues than anticipated.
2021-05-20 14:56:15 +09:00
Dan Balasescu
ef81bdf63f
Merge branch 'master' into always-use-lifetime-entry 2021-05-18 20:10:12 +09:00
Salman Ahmed
cd6d070b4a Consider "combo offsets" as legacy logic and separate from combo information 2021-05-05 07:43:08 +03:00
Salman Ahmed
eeeb001d62 Refactor combo colour retrieval logic to request skin lookups instead 2021-05-05 07:17:27 +03:00
ekrctb
aa42cf2fc0 Fix setting lifetime during KeepAlive is ignored 2021-05-04 16:56:48 +09:00
ekrctb
36438175a0 Throw an exception if try to modify lifetime of PoolableDrawableWithLifetime without lifetime 2021-05-04 16:04:58 +09:00
Dan Balasescu
e6eea73b8b
Merge branch 'master' into basic-compose-checks 2021-04-30 23:41:46 +09:00
ekrctb
5aa522b1c2 Completely delegate DHO lifetime to Entry lifetime
A downside is lifetime update is not caught by LifetimeManagementContainer if used.
2021-04-29 14:38:01 +09:00
ekrctb
d262956146 Always use LifetimeEntry to manage hit objects in HitObjectContainer
Previously, non-pooled DHOs were immediately added as children of the HOC when Add is called. Also, non-pooled DHOs were always attached to the HOC as children.
New behavior is that non-pooled DHOs are only added after CheckChildLifetime, and only attached to the HOC while the DHOs are alive.

- LifetimeManagementContainer inheritance of HOC is removed, as it is now all DHOs are "unmanaged" (previously `AddInternal(false)`).
- The signature of `Clear` is changed, and it is now always not disposing the children immediately.
2021-04-29 14:38:01 +09:00
Dan Balasescu
5fc731967b
Merge pull request #12592 from ekrctb/fix-entry-lifetime
Fix Setting DHO's lifetime doesn't update its entry lifetime
2021-04-28 01:38:19 +09:00
ekrctb
b87446a577 Simplify HitObjectLifetimeEntry logic a bit 2021-04-27 19:37:01 +09:00
Derrick Timmermans
3ea55314f2
Update osu.Game/Rulesets/Objects/Drawables/DrawableHitObject.cs
Co-authored-by: Dan Balasescu <smoogipoo@smgi.me>
2021-04-27 11:29:16 +02:00
ekrctb
3899e500d3 Adopt framework change of LifetimeEntry
Override SetLifetimeStart/SetLifetimeEnd separately to track individual assignment. It is necessary to ensure real lifetime is not lost when lifetime is partially updated.
2021-04-27 17:54:18 +09:00
ekrctb
c9e6ca5378 Use now-public Entry.SetLifetime method 2021-04-27 15:25:05 +09:00
ekrctb
a2c0951d94 Use overriding instead of hiding in HitObjectLifetimeEntry
Hidden properties are used when the type is the base class. It caused issues when `DrawableHitObject` logic is factored out to `PoolableDrawableWithLifetime` because it is using the base `LifetimeEntry`, not `HitObjectLifetimeEntry`.
2021-04-27 15:23:33 +09:00
Naxess
a3570e18dd Add concurrent objects check
Here we use `IHasColumn` to support rulesets with columns, and so I moved that interface out into `osu.Game` from `osu.Game.Rulesets.Mania`.

We also use the same threshold as the unsnap check to ensure that no problems slip through. Specifically where an object is simultaneously not concurrent and not unsnapped but still on the same tick.
2021-04-26 20:17:18 +02:00
Derrick Timmermans
08a232f7fa
Add method to safely refresh DrawableHitObject transforms 2021-04-26 20:08:40 +02:00
ekrctb
6561a7c7d6 Rename DrawableObject -> PoolableDrawableWithLifetime 2021-04-26 12:06:21 +09:00
ekrctb
20e3cadd30 freeIfInUse -> free, and add comments 2021-04-26 12:04:59 +09:00
ekrctb
e6474e6ff7 Remove redundant statement (lifetime is set in base) 2021-04-26 11:47:38 +09:00
ekrctb
b877a29737 Factor out pooling and lifetime management logic of DHO to a base class 2021-04-21 17:37:42 +09:00
ekrctb
bbf2ec369b Remove SkinReloadableDrawable inheritance from DHO 2021-04-21 17:34:57 +09:00
ekrctb
3fbeadf318 Deprecate old overload of Apply 2021-04-21 14:32:37 +09:00
ekrctb
73d3da1687 Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 11:32:01 +09:00
ekrctb
44ff08cce4 Revert "Fix wrong InitialLifetimeOffset is used for a non-pooled DHO."
This reverts commit 67fcfd9d
2021-04-21 10:02:50 +09:00
ekrctb
67fcfd9dbc Fix wrong InitialLifetimeOffset is used for a non-pooled DHO.
HitObjectLifetimeEntry's InitialLifetimeOffset is different from DrawableHitObject's InitialLifetimeOffset.
2021-04-21 09:48:16 +09:00
ekrctb
e80c3c317a Rename UnmanagedHitObjectEntry -> SyntheticHitObjectEntry
"Unmanaged" was confusing because its lifetime is still managed by the HitObjectContainer.
2021-04-21 09:23:23 +09:00
ekrctb
c6ee4e900e Ensure a non-null hitobject entry has a non-null Result 2021-04-20 15:18:36 +09:00
ekrctb
8a8b9084ef Make single-argument overloead of DHO.Apply public 2021-04-20 10:11:36 +09:00
ekrctb
1bc63a4c61 Now, DHO.lifetimeEntry can be non-null even it is not fully applied 2021-04-20 09:22:16 +09:00
ekrctb
c1b4aaaa03 Add doc comment 2021-04-20 08:38:02 +09:00
ekrctb
2c487ddb70 Create synthetic LifetimeEntry for a DHO when not supplied
Now, a DHO is always associated with a HitObjectLifetimeEntry while used.
Result is always stored in the entry, and not in the DHO.
2021-04-19 21:54:19 +09:00
ekrctb
5afdc3ff66 Make DHO application logic clearer with Entry/HitObject separation 2021-04-19 19:56:17 +09:00
Dean Herbert
d38e294d96 Centralise length validation function 2021-04-16 15:45:24 +09:00
ekrctb
50fad47ebc Remove usage of Lazy<List<...>> for NestedHitObjects 2021-04-15 18:26:01 +09:00
Dean Herbert
b5954a55ad Remove empty <returns> xmldoc 2021-04-12 17:46:14 +09:00
smoogipoo
76981f2547 Remove unused using 2021-04-09 13:58:24 +09:00
smoogipoo
8293b06c0a Remove obsolete code 2021-04-09 13:56:58 +09:00
Dean Herbert
a8839792fd
Merge branch 'master' into circular-arc-freeze 2021-04-08 14:33:03 +09:00
smoogipoo
4b29d0ebe2 Fix last control point starting new segment 2021-04-05 17:49:36 +09:00
Naxess
7b684339ed Undo public -> internal for PathControlPoint.Changed
No longer used.
2021-03-31 20:32:49 +02:00
Naxess
4ae3eaaac6 Move path type correction
This is better because `PathControlPointVisualizer` is local to the editor, meaning there is no chance that this could affect gameplay.
2021-03-24 03:02:19 +01:00
Naxess
e922e67c98 Fix inverted return statement
Forgot to run tests, all passing now.
2021-03-22 19:48:21 +01:00
Naxess
3fa5852e00 Add method documentation 2021-03-22 19:42:27 +01:00
Naxess
b11fd7972a Separate condition logic from math logic 2021-03-22 19:41:48 +01:00