Commit Graph

65 Commits

Author SHA1 Message Date
mikko mononen
d1a0cd77b7 SmartObjects: Cleaned up unused API.
#jira UE-174418
#preflight 64229dee710ec8400f9f88d1

[CL 24815902 by mikko mononen in ue5-main branch]
2023-03-28 05:20:16 -04:00
mikko mononen
9841195afe SmartObject: Improved validation settings
- Added SmartObjectUserComponent which allows to define validation settings per user actor
- Added option to SO defintion to have preview validation settings or preview user actor (settings pulled from SO user component)
- Move parameters passed to SO annotation CollectDataForGameplayDebugger() into a struct
- Changed USmartObjectSlotValidationFilter to have 2 sets of validation parameters to allow exits to have looser validation
- Changed the API for setting params from Actor in FSmartObjectSlotEntranceLocationRequest (still meh)

#jira UE-174418
#preflight 642173f8a86ae7cbcc25ab0b

[CL 24801238 by mikko mononen in ue5-main branch]
2023-03-27 08:22:19 -04:00
luciano ferraro
78ef1df533 Added an optional flag in the SO find to avoid checking for WC conditions:
- this can be used when we want to forcibly pick a SO
- huge workflow improvement for testing SO interactions in PIE

Fixed a bug with UpdateEntranceLocation testing and potentially returning different entry locations if we are asking for a single one
Fixed a bug with the EntranceHandle not being set when finding entry locations

Added an equality operator to the entrance handle

[REVIEW] [at]Mikko.Mononen
[FYI] phil.cole, wojciech.madry, Parker.Linn, Loic.Devaux
#preflight 641ad870691c5ebc1533656a

[CL 24745942 by luciano ferraro in ue5-main branch]
2023-03-22 08:23:20 -04:00
mikko mononen
7edf169364 Smart Object: Added capsule check for slot and entrance location validation
- Changed default value for entrance annotation ground check to true
- Exposed common function to return preview validation filter
- Added user capsule parameters for into the validation filter (can be optionally tied to nav params)
- Display priority on the entrance slot if other than normal
- Added option to FindEntranceLocationForSlot() to validate slot and entrance location using physics overlap check

#jira UE-174418
#rb Yoan.StAmant
#preflight 64197ec937382f6bf589eecf

[CL 24730129 by mikko mononen in ue5-main branch]
2023-03-21 07:37:13 -04:00
mikko mononen
015d344de7 SmartObjects:
- Renamed some uses of navigation to entrance
- Added priority for entrance selection
- Allow to run the entrance selection only for a specific entrace
- Added instigator as ignored entities when selecting entrances

#jira UE-174418
#preflight 641436f332723d4a20208bd9

[CL 24686648 by mikko mononen in ue5-main branch]
2023-03-17 07:41:24 -04:00
mikko mononen
1ca6e4407c Smart Objects: Added way to project navigation locations on ground and to check collisions between nav location and slot.
- Changed entry annotation to navigation annotation
- Added option for nav annotations to project location on ground
- Added option and settings for nav annotations to check simple trajectory collisions towards slot location
- Added logic in entry location query to project on ground and check trajectory collisions
- Added physics settings struct that handles common query combinations
- Added USmartObjectSlotValidationFilter to define shareable settings for validation (kinda similar to nav query filter)
- Fixed double rendering of preview actor/mesh in SO editor
- added debug draw for the new features

#jira UE-174418
#preflight 641036e470639dfc943ed981

[CL 24632583 by mikko mononen in ue5-main branch]
2023-03-14 06:26:29 -04:00
mikko mononen
d2c160c4ce SmartObjects: Added entry annotation selection and validation.
- Added USmartObjectSubsystem::FindEntryLocationForSlot() which allows to query entry points which are on navigable surface
- Improved debug visualizations
- Added visualization shape and size for slots
- Added gameplay interaction state tree task to query entry location

#jira UE-174418
#preflight 6400614fef1b24bf94f42203

[CL 24478702 by mikko mononen in ue5-main branch]
2023-03-02 05:58:30 -05:00
nat parkinson
1004be8d8a [Backout] - CL24460758 to resolve nonunity errors
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
SmartObjects: Added entry annotation selection and validation.
- Added USmartObjectSubsystem::FindEntryLocationForSlot() which allows to query entry points which are on navigable surface
- Improved debug visualizations
- Added visualization shape and size for slots
- Added gameplay interaction state tree task to query entry location

#jira UE-174418,FORT-572969
#preflight 63ff4702437ce3e7f3f60cf4

[CL 24469441 by nat parkinson in ue5-main branch]
2023-03-01 15:40:51 -05:00
nat parkinson
4e10674ae0 [Backout] - CL24461299 to fix nonunity errors
[FYI] mikko.mononen
Original CL Desc
-----------------------------------------------------------------
SmartObjects: Fix nonunity build

#rb trivial
#preflight 63ff52c4a134e0b059f957ec

[CL 24469390 by nat parkinson in ue5-main branch]
2023-03-01 15:39:26 -05:00
mikko mononen
8968e44291 SmartObjects: Fix nonunity build
#rb trivial
#preflight 63ff52c4a134e0b059f957ec

[CL 24462232 by mikko mononen in ue5-main branch]
2023-03-01 10:10:25 -05:00
mikko mononen
a24c665ba3 SmartObjects: Added entry annotation selection and validation.
- Added USmartObjectSubsystem::FindEntryLocationForSlot() which allows to query entry points which are on navigable surface
- Improved debug visualizations
- Added visualization shape and size for slots
- Added gameplay interaction state tree task to query entry location

#jira UE-174418
#preflight 63ff4702437ce3e7f3f60cf4

[CL 24462168 by mikko mononen in ue5-main branch]
2023-03-01 10:06:12 -05:00
luciano ferraro
7fae715950 Added an IsEnabled method in the SO Subsystem to check if the smart object represented by the provided handle is enabled or not
[REVIEW] [at]Mikko.Mononen
#preflight 63fdff5aae54ee4ce99e10d4

[CL 24442411 by luciano ferraro in ue5-main branch]
2023-02-28 10:24:32 -05:00
yoan stamant
adf6cb0a20 [SmartObjects]
- Added new methods to the API to filter a list of request results or slot handles by evaluating the selection preconditions
- Filter methods can accept external data as a struct with properties which name and type match the WolrdConditionContext.
- FSmartObjectUserContext has been introduced to cover the common case of passing in a user actor to the context.
- Stored UserDescriptor as instanced struct in the runtime slot
- Claim methods now receive a user descriptor
- Removed slot event delegate and reuse the runtime instance one instead. Listeners can filter for a given slot using 'Event.SlotHandle'
- Removed UserTags from the SmartObjectWorldConditionSchema. The user tags are part of the query filter. Conditions requiring user tags could fetch them from the actors passed in the context.
#rb mikko.mononen
#jira UE-157763
#preflight 63dbe99f797b029c0add9806

[CL 23984054 by yoan stamant in ue5-main branch]
2023-02-02 18:43:13 -05:00
henrik karlsson
9a1d5b1ad4 [Engine/Plugins]
* Ran IWYU on ~170 plugins to remove includes not needed. Public api still keep old includes inside #if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_2

#preflight 63d09351574ab9cae4670216
#rb none

[CL 23844750 by henrik karlsson in ue5-main branch]
2023-01-25 02:42:36 -05:00
yoan stamant
1f6c7d722f [SmartObjects]
- Removed synchronization logic between ability system component and smartobject instance tags.
- Added SmartObject subsystem to the SmartObjectWorldConditionSchema to help fixing unit tests where we use a derived subsystem. Updated existing SmartObject world conditions to use it.
- Added support for world conditions to the main smart object instance (in addition to those in each slot). Slots could be also disabled by their parent conditions.
- Removed object tags filter from the definition and replaced it by the newly added condition (FWorldCondition_SmartObjectActorTagQuery)
#rb mikko.mononen
#preflight 63c6c3530b358b97d198a121

[CL 23756420 by yoan stamant in ue5-main branch]
2023-01-18 10:52:51 -05:00
bob tellez
09e68111e3 [Backout] - CL23741166
[FYI] Yoan.StAmant
Original CL Desc
-----------------------------------------------------------------
[SmartObjects]
- Removed synchronization logic between ability system component and smartobject instance tags.
- Added SmartObject subsystem to the SmartObjectWorldConditionSchema to help fixing unit tests where we use a derived subsystem. Updated existing SmartObject world conditions to use it.
- Added support for world conditions to the main smart object instance (in addition to those in each slot). Slots could be also disabled by their parent conditions.
- Removed object tags filter from the definition and replaced it by the newly added condition (FWorldCondition_SmartObjectActorTagQuery)
#rb mikko.mononen
#preflight 63c6c3530b358b97d198a121

[CL 23752170 by bob tellez in ue5-main branch]
2023-01-18 01:06:45 -05:00
yoan stamant
853ad94e66 [SmartObjects]
- Removed synchronization logic between ability system component and smartobject instance tags.
- Added SmartObject subsystem to the SmartObjectWorldConditionSchema to help fixing unit tests where we use a derived subsystem. Updated existing SmartObject world conditions to use it.
- Added support for world conditions to the main smart object instance (in addition to those in each slot). Slots could be also disabled by their parent conditions.
- Removed object tags filter from the definition and replaced it by the newly added condition (FWorldCondition_SmartObjectActorTagQuery)
#rb mikko.mononen
#preflight 63c6c3530b358b97d198a121

[CL 23747892 by yoan stamant in ue5-main branch]
2023-01-17 18:37:13 -05:00
mikko mononen
c1f2999501 SmartObject: Fix mutable uses of instanced structs and struct views.
#jira UE-172049
#rb Mieszko.Zielinski
#preflight 63bff27f4b018bfa80049378

[CL 23661846 by mikko mononen in ue5-main branch]
2023-01-12 09:01:21 -05:00
mieszko zielinski
dcfa2f8008 Fixed SmartObject unit tests failing if triggered via the Editor
#preflight 6391f98d5624e6da5eed076b

[CL 23448070 by mieszko zielinski in ue5-main branch]
2022-12-08 11:50:57 -05:00
mieszko zielinski
2da21261b0 Deprecated ESmartObjectUnregistrationMode and its use in SmartObjectComponent registration and unregistration and introduced two explicit paths for smart object removal:
* Unregister - keeps or deletes the runtime SO information based on SmartObjectComponent.RegistrationType
* Remove - called on SmartObject's EndPlay and ends up removing runtime data regardless of the registration type.

Also:
* SmartObjectSubsystem unfriended SmartObjectComponent - it was a toxic relationship anyway! ;)
* Made changes towards simplification of how things are done - Registering, Unregistering, Binding SO Component to a RuntimeInstance.

#preflight 6390906fbb6fefa4721822e4

[CL 23431219 by mieszko zielinski in ue5-main branch]
2022-12-07 13:05:23 -05:00
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
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
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
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