Commit Graph

65 Commits

Author SHA1 Message Date
mikko mononen
2f2f301d65 WorldCondition: Allow query state to be bitwise relocatable, make tie to definition safer
- stored the whole condition cached state into the allocated memory to allow state to be bitwise relocated
- made definition UObject, and store reference to the definition directly into the state
- keep instantiated definitions alive (create new object)
- added query invalidation handle which is used to invalidate the query

#rb Mieszko.Zielinski
#preflight 63872b143377450900b57a46

[CL 23325777 by mikko mononen in ue5-main branch]
2022-11-30 07:17:21 -05:00
mieszko zielinski
bf25520ccc SmartObject collection rework, introducing a FSmartObjectContainer type that encapsulates SmartObjectComponent registration and storage. The SmartObjectSubsystem now stores a Container that aggregates all other containers supplied by loaded/streamed in SmartObjectPersistentCollection instances.
In addition:
* SmartObjectCollection got deprecated and there's a auto-update path triggered in SmartObjectCollection::PostLoad
* SmartObjectComponent component can opt out of being a part of a collection with `bCanBePartOfCollection`
* Right now we limit SmartObjects to be registered with at most a single Collection. This might change in the future if required.

Note that this is the first change in a series, we're going to support miltiple collections per level with convenient ways of assigning SmartObjects to individual collections.

#jira UE-168977
#preflight 637f8faa4004f73f627ecaca

#preflight 637fa5378b12eb83a77ad7d9

[CL 23262132 by mieszko zielinski in ue5-main branch]
2022-11-24 14:53:52 -05:00
mikko mononen
a796b2d2e4 WorldConditions: Changed FWorldConditionContextData::SetSchema to take reference instead of pointer for consistency.
#rb Mieszko.Zielinski
#preflight 637f61694004f73f62731056

[CL 23259383 by mikko mononen in ue5-main branch]
2022-11-24 10:07:17 -05:00
luciano ferraro
a9ef3c5afe Fixed issue with OwnerActor being nullptr and not usable for WorldConditions being activated as soon as the SO is added
#jira
[REVIEW] [at]Mikko.Mononen
#preflight 637e78104364ef8d1489c71c

[CL 23259346 by luciano ferraro in ue5-main branch]
2022-11-24 10:06:01 -05:00
mikko mononen
37681817c0 SmartObjects: expose Smart Object owner actor for world conditions
- Store weak pointer to the owner actor when Smart Object is initialized
- Pass owner actor to world conditions
- Changed Smart Object logging to use full names where applicable

#preflight 637e0f082a05dabce9c5cd0e

[CL 23248750 by mikko mononen in ue5-main branch]
2022-11-23 09:11:13 -05:00
mieszko zielinski
77ad40bf7d Made SmartObjectSubsystem not instantiate on Clients
[REVIEW]
#preflight 637dfcae170bc34a93e93e13

[CL 23248257 by mieszko zielinski in ue5-main branch]
2022-11-23 08:17:20 -05:00
mikko mononen
1deae510ba World condition fixes
- Fixed SmartObject test linking with World Conditions
- Corrected the handling of empty world conditions (checks or no errors)
- Added tests for empty conditions and failing activation

#jira UE-170467 FORT-540539
#preflight 637b3991fa348e84805ca372

[CL 23218783 by mikko mononen in ue5-main branch]
2022-11-21 05:17:25 -05:00
mikko mononen
924b989973 SmartObject: World conditions for SmartObject slot precondition
#rb Mieszko.Zielinski Luciano.Ferraro
#preflight 6375ef0b1c114bec053ccbe7
#preflight 6375fe028f4cb2e4dc8c4e4c

[CL 23174492 by mikko mononen in ue5-main branch]
2022-11-17 07:44:24 -05:00
mieszko zielinski
528c391411 SmartObject unit testing fix.
The fix involved an extensive rework of how the testing environment is being set up, to limit loaded UWorld's influence on the results, and in turn limit how tests affect SmartObjectSubsystem instantiated for the current world.

#preflight 6368c59e63037c1026540f38

[CL 23010255 by mieszko zielinski in ue5-main branch]
2022-11-07 09:57:31 -05:00
luciano ferraro
14d7728762 Filter out disabled slots in the USmartObjectSubsystem::FindSlots
[REVIEW] [at]Mikko.Mononen
[FYI] Loic.Devaux, Josselin.Francois, Phil.Cole, wojciech.madry, Parker.Linn
#preflight 6364fc4af233f06a12c69cb2

[CL 22987809 by luciano ferraro in ue5-main branch]
2022-11-04 11:28:57 -04:00
mikko mononen
1bc7452c79 Gameplay Interaction: Set Slot Enabled task
- added task to enable and disabled slots
- visualize disabled slots in Smart Object editor

#rb Luciano.Ferraro
#preflight 6364e3364b0e01486a464fa5

[CL 22985540 by mikko mononen in ue5-main branch]
2022-11-04 09:18:52 -04:00
mieszko zielinski
c00e84ad1b Made SmartObjectDefinition verification a bit more automatic so that we can reliably check that.
#preflight 6364cc11de2c4dbb5d87c777

[CL 22983630 by mieszko zielinski in ue5-main branch]
2022-11-04 06:56:50 -04:00
mieszko zielinski
83d06d726d Added an early out in registering misconfigured SmartObjects.
There was a loophole that would partly register smart objects that did have a SmartObjectDefinition asset set, but the asset was not valid itself, and it resulted in failing an ensure while cleaning up the whole system on world end.

#preflight 63640e3fdc30a4ce961be2d1

[CL 22982893 by mieszko zielinski in ue5-main branch]
2022-11-04 03:35:03 -04:00
mikko mononen
c06beb8571 SmartObject improvements
- Fixed hashing when adding shared fragment for smart object slot definition
- Added per slot Runtime Tags
- Added common event handling for Smart Object and Slot changes and events
- Added annotations, which are slot definition data that has visualization
- Added linked slot annotation which allows behavior reuse on slots
- Added editor only ID for each slot so that they can be identified during edits
- Added SmartObject slot reference type that can be used to reference other slots in the Smart Object
- Changed Smart Object bDisable to bEnabled
- Added separate enabled state for slots
- Changed Smart Object disable to send an event, not forcefully unclaim
- Added more visualization support for Smart Object editor (canvas, visualize annotations)
- Changed Smart Object editor to use the commonly transform for slots
- Remove Smart Object Component instance from the asset editor as it was not needed

#rb Stephen.Holmes
#preflight 6360f0cf63608aee36e01ba5

[CL 22888712 by mikko mononen in ue5-main branch]
2022-11-01 15:11:25 -04:00
luciano ferraro
18797d83c8 Fixed issue with slot data being shared between all slots instead of being unique per slot
#jira
[REVIEW] [at]Mikko.Mononen
[FYI] Loic.Devaux, Josselin.Francois, Phil.Cole, wojciech.madry, Parker.Linn
#preflight 635fd220ae6840072df52074

[CL 22875405 by luciano ferraro in ue5-main branch]
2022-10-31 20:00:30 -04:00
mieszko zielinski
9c7b392aa9 Fine-tuned smart object removal code to catch a no-repro USmartObjectSubsystem::CleanupRuntime issue
#preflight 6358ccb1767e539ccaa2563b

[CL 22799298 by mieszko zielinski in ue5-main branch]
2022-10-26 19:34:40 -04:00
mieszko zielinski
142e0f52d3 Fixed SmartObjectSystem crashing when trying to register a SmartObjectComponent without a SmartObjectDefinition set
#preflight 6345a3c3cc615cdcf70b0b1b
#preflight 63466ab5fa31324bb124ec12

[CL 22497634 by mieszko zielinski in ue5-main branch]
2022-10-13 02:49:16 -04:00
mieszko zielinski
cad6e9df0c Made a change to how we treat persistent-level placed SmartObjects that are not contained by the level's SmartObjectCollection
Also changed collection building to only include SOComponents in the persistent or the "always loaded" levels

#preflight 6343da651d5e6dbf75839ead

[CL 22431195 by mieszko zielinski in ue5-main branch]
2022-10-10 12:00:30 -04:00
mieszko zielinski
5794e912bd A kind of a guess-fix to SmartObjectSubsystem::RemoveRuntimeInstanceFromSimulation failing an ensure while called as part of USmartObjectSubsystem::CleanupRuntime.
#preflight 6336e42ab34118b9b4a0261c

[CL 22276176 by mieszko zielinski in ue5-main branch]
2022-09-30 14:29:22 -04:00
bryan sefcik
50d4fac9e0 Updated ../Engine/Plugins/... to inline gen.cpp files
Before:
3548 unity files
Total CPU Time: 47343.578125 s
Total time in Parallel executor: 494.60 seconds

After:
3445 unity files
Total CPU Time: 46044.671875 s
Total time in Parallel executor: 468.51 seconds

#jira
#preflight 63336159b20e73a098b7f24f

[CL 22218213 by bryan sefcik in ue5-main branch]
2022-09-28 01:06:15 -04:00
mikko mononen
a0b73327bd SmartObjects: Added method to retrieve behavior definition from request result
#rb Mieszko.Zielinski
#preflight 63245ca7ea1c94f4c5b32b13

[CL 22052312 by mikko mononen in ue5-main branch]
2022-09-16 12:46:45 -04:00
fernando coello
cfc88369be Smart Object: Exposed GetSlotTransform from RequestResult to blueprint
[REVIEW] [at]mikko.mononen [at]mieszko.zielinski
[FYI] [at]julien.marchand [at]aaron.cox
#preflight 63222025bc40358fa204b699
#jira none

[CL 22035674 by fernando coello in ue5-main branch]
2022-09-15 15:11:53 -04:00
josselin francois
77ac482e2f SmartObjectSubsystem : Add GetSmartObjectComponentByRequestResult()
[REVIEW] [at]Yoan.Stamant, [at]Mikko.Mononen
[FYI] philippe.painchaud, loic.devaux, luciano.ferraro
#tests PIE
#rnx

[CL 21975685 by josselin francois in ue5-main branch]
2022-09-12 19:23:55 -04:00
luciano ferraro
5c21a50454 Change back BehaviorDefinitionClass_DEPRECATED to BehaviorDefinitionClass to keep the code backward compatible
#jira
[REVIEW] [at]Mikko.Mononen
#preflight skip

[CL 21907564 by luciano ferraro in ue5-main branch]
2022-09-08 19:36:03 -04:00
marc audy
04c3709768 Replace BehaviorDefinitionClass with a BehaviorDefinitionClasses
[REVIEW] [at]Mikko.Mononen, [at]Yoan.Stamant
[FYI] Loic.Devaux, Josselin.Francois, Nicolas.Bonnelly, Phil.Cole
#preflight 6317787b2b7fe03eb643473b

[CL 21907244 by marc audy in ue5-main branch]
2022-09-08 19:27:10 -04:00