Commit Graph

117 Commits

Author SHA1 Message Date
aris theophanidis
1b845cc9c3 Improvements in navigation includes
Removing Actor.h from NavigationTypes.h
Removing NavigationQueryFilter.h when unnecessary in headers
And additional non-unity build fixes
#rb Maxime.Mercier

[CL 30621909 by aris theophanidis in ue5-main branch]
2024-01-15 13:31:49 -05:00
mikko mononen
60a5dffa2d StateTree/SmartObjects: fix incorrect use of EFieldIterationFlags::None which prevents inherited struct's properties to be visited.
#rb Mieszko.Zielinski

[CL 30208750 by mikko mononen in ue5-main branch]
2023-12-08 07:31:01 -05:00
mikko mononen
e4b5036e07 SmartObject: Added per object definition data
- added definition data for the whole object
- added GetDefinitionData() & GetDefinitionDataPtr() for the SO definition and slot definition
- Renamed FSmartObjectSlotDefinitionDataProxy -> FSmartObjectDefinitionDataProxy (removed slot)
- Renamed FSmartObjectSlotDefinitionData -> FSmartObjectDefinitionData (removed slot)

[CL 30077219 by mikko mononen in ue5-main branch]
2023-12-04 07:36:52 -05:00
mikko mononen
096756af13 SmartObject: Added claim priority which allows higher priority claims to override lower priority claims.
#rb Yoan.StAmant, Mieszko.Zielinski

[CL 30010180 by mikko mononen in ue5-main branch]
2023-11-30 02:26:33 -05:00
yoan stamant
5e375112b9 [SmartObject] added reasons to control the enabled states of smart objects:
- Gameplay tags are used to identify a reason
- Default reason "SmartObject.EnabledReason.Gameplay" is a tag (UE::SmartObject::EnabledReason::Gameplay) provided by the plugin and used by default if no other reason is specified
- Tags are converted to bit masks and stored as disable flags in runtime instance
- External systems can declare new Gameplay Tags for the specific needs. System currently allows 16 different reasons (1 default + 15 custom)
- A Smart Object  instance is considered disabled as soon as at least one reason is set
#rb Luciano.Ferraro, mikko.mononen

[CL 29989734 by yoan stamant in ue5-main branch]
2023-11-29 11:23:11 -05:00
mikko mononen
cc737f3eef [SmartObject] Added method to update SO transform
- Added UpdateSmartObjectTransform() to allow to update the Smart Object location at runtime
- Change spatial partitioning Add() to take ref to the handle to avoid alloc when readding

#rb Yoan.StAmant

[CL 29884931 by mikko mononen in ue5-main branch]
2023-11-22 04:49:00 -05:00
ben hoffman
04773d7a0d Add a Find Smart Object from Targeting System request to smart objects. The targeting system is often used for player interactions to determine what the player is "targeting", so being able to find the smart objects that a player is looking at will make using smart objects for player interaction easier!
#jira UE-188874
#rb Yoan.StAmant
#prelight 64f791edf140ae6e397ecdd3

[CL 27611983 by ben hoffman in ue5-main branch]
2023-09-05 16:59:33 -04:00
ben hoffman
8c35dff059 Add Find Smart Object functions that take in AActor's and avoid using the normal QueryBox.
This is more friendly to the UE Gameplay Framework and lets you pass in specific actor's that you case about. If you had to use a spatial query, then you may get results from objects that you don't explictly want if they are overlapping objects.

Add a function to check if the subsystem is running on the server or not to make doing some future replication checks easier

#jira UE-180500
#rb mikko.mononen

[CL 27597760 by ben hoffman in ue5-main branch]
2023-09-05 11:29:58 -04:00
mikko mononen
6c2279e57d SmartObject: Added outliner to asset editor
- Changed Smart Object definition slot data to contain GUI per data (allows to identify the data using ID)
- Added outliner to the editor, displays slots and definition data
- Made slots and definition data selectable in the details view
- Sync selection across details, outliner and 3D view for faster navigation

[CL 27440600 by mikko mononen in ue5-main branch]
2023-08-29 07:48:32 -04:00
yoan stamant
7081abcce2 [SmartObject] replaced a check by verify since we always need the action to be performed
#rnx
#rb trivial

[CL 27284664 by yoan stamant in ue5-main branch]
2023-08-22 16:22:34 -04:00
mikko mononen
43048ec34c [SmartObjects] Added events to listen to Smart Object Component bind/unbind
- Exposed USmartObjectComponent.IsBoundToSimulation() to BP

[CL 27197315 by mikko mononen in ue5-main branch]
2023-08-18 03:54:54 -04:00
yoan stamant
71625258d0 [SmartObject] empty definition is considered a valid asset so a newly created definition will not report error on save.
- Fixed internal flag not properly set to false when using error reporting flow.
- Fixed combined validation results that was always using EDataValidationResult::Valid even when errors were reported.
#jira UE-192738
#rb mieszko.zielinski
#lockdown julien.marchand

[CL 27147839 by yoan stamant in ue5-main branch]
2023-08-16 14:15:36 -04:00
mikko mononen
ee1a8c115a [SmartObjects] Default trace ground location to true for slots, as that is what users seem to expect.
[CL 27135901 by mikko mononen in ue5-main branch]
2023-08-16 07:26:50 -04:00
mikko mononen
b5f6447b2d [SmartObjects] Made USmartObjectSubsystem::QueryAllValidatedEntranceLocations() static so that it can be used even if SO subsystem is not available.
[CL 27064404 by mikko mononen in ue5-main branch]
2023-08-14 03:40:42 -04:00
mikko mononen
33bb4fe2c0 [SmartObjects] Added ability to validate a smart object definition and return all validated entries.
- Added Object enabled/disabled events to Smart Object lifetime to make it easier to react to the Smart Object enabled status
- Changed FSmartObjectSlotEntranceLocationRequest to be a BP type
- Changed FSmartObjectSlotEntranceLocationRequest.UserCapsule optional to invalid default value to make it easier to interface with BP
- Added FSmartObjectSlotEntranceLocationResult.bIsValid to be able to return results where the validation fails
- Added USmartObjectSubsystem.QueryAllValidatedEntranceLocations() which allows to validate SO definition, but does not require a registered Smart Object (can be used e.g. got object placement UI feedback)
- Added some helpers to allow to reuse validation between multiple methods in USmartObjectSubsystem

[CL 26987173 by mikko mononen in ue5-main branch]
2023-08-10 07:02:20 -04:00
yoan stamant
45cbedcfbb Fix bad merge
#rnx

[CL 26433126 by yoan stamant in ue5-main branch]
2023-07-18 10:00:46 -04:00
yoan stamant
d05f8826ea [SmartObject] Removed dependency on MassEntity to store slots
#rb mikko.mononen

[CL 26431776 by yoan stamant in ue5-main branch]
2023-07-18 08:42:51 -04:00
ben hoffman
176e409bd8 Add two Smart Object Request Filter options to return claimed and/or disabled slots too
#rb Mikko.Mononen, Yoan.Stamant

#ushell-cherrypick of 26314489 by kristof.morva1

[CL 26329438 by ben hoffman in ue5-main branch]
2023-06-29 17:44:56 -04:00
mikko mononen
0b7b19efa0 Gameplay Interaction: Fixed GetSlotEntranceTags
- GetSlotEntranceTags was failing because USmartObjectSubsystem::FindEntranceLocationInternal() required valid capsule even if no physics checks were done
- FindSlotEntranceLocation was missing SearchLocation and would always search around 0,0,0

[CL 25889486 by mikko mononen in ue5-main branch]
2023-06-09 06:52:59 -04:00
yoan stamant
753667ce6d [SmartObject] some cleanup in the blueprint API for SmartObjects
- replaced 'SmartObjectSubsystem.Claim' by 'MarkSlotAsClaimed' for native code and 'USmartObjectBlueprintFunctionLibrary::MarkSmartObjectSlotAsClaimed' for Blueprints
- replaced 'SmartObjectSubsystem.Use' by 'MarkSlotAsOccupied' for native code and 'USmartObjectBlueprintFunctionLibrary::MarkSmartObjectSlotAsOccupied' for Blueprints
- replaced 'SmartObjectSubsystem.Release' by 'MarkSlotAsFree' for native code and 'USmartObjectBlueprintFunctionLibrary::MarkSmartObjectSlotAsFree' for Blueprints
- deprecated 'UGameplayBehaviorSmartObjectsBlueprintFunctionLibrary::UseGameplayBehaviorSmartObject' in favor of the aync task based versions
- UFUNCTION versions are redirected directly to the new names. Native versions are deprecated.
- updated 'AITask_UseGameplayInteraction' and 'AITask_UseGameplayBehaviorSmartObject' to be as close as possible since they are two similar use cases but for different plugins.
   - both tasks now propose blueprint callables to create an "interact on spot" or "move to and interact" tasks:
      - 'UseSmartObjectWithGameplayBehavior' and 'MoveToAndUseSmartObjectWithGameplayBehavior'
      - 'UseSmartObjectWithGameplayInteraction' and 'MoveToAndUseSmartObjectWithGameplayInteraction'
   - 'AITask_UseGameplayBehaviorSmartObject::UseClaimedGameplayBehaviorSmartObject' is redirected to 'MoveToAndUseSmartObjectWithGameplayBehavior' to preserve current behavior
   - 'AITask_UseGameplayInteraction::UseClaimedGameplayInteractionSmartObject' is redirected to 'UseSmartObjectWithGameplayInteraction' to preserve current behavior
#jira UE-187209
#rnx

[CL 25871194 by yoan stamant in ue5-main branch]
2023-06-08 10:34:40 -04:00
mikko mononen
1cd2e0af30 GameplayInteractions: added entrance handle to interaction context
- Added entrance handle to the data that is passed to the interaction context, exposed to state tree
- Changed entrance tags to a tag container
- Added State Tree task to get entrance tags from an entrance handle

[CL 25813984 by mikko mononen in ue5-main branch]
2023-06-06 09:07:47 -04:00
yoan stamant
8392b4ee6b [SmartObjects]
- RemoveComponentFromSimulation is now properly unbinding the component
- Unbinding a component from the simulation won't invalidate the registered handle anymore; this is handled by the FSmartObjectContainer.
- Removed obsolete RuntimeCreatedEntries that was replaced by the registration type.
- Added IsBoundToSimulation to the SmartObjectComponent to differentiate a registered component (valid Handle) from a registered component bound to the simulation (linked to its runtime instance)
- DebugUnregisterAllSmartObjects will no longer cause an ensure when calling EndPlay with the previous fixes.
- Added unit tests for IsBoundToSimulation and RemoveComponentFromSimulation+UnregisterSmartObject sequence to simulate the EndPlay issue.
#tests PIE, rebuild collection, WorldPartition levels, used cheats multiple times
#rb mieszko.zielinski
#preflight 64709c8a893dadf035e51c75

[CL 25647084 by yoan stamant in ue5-main branch]
2023-05-26 12:48:38 -04:00
ben zeigler
9e0ea41c7f Improve blueprint integration with smart objects subsystem:
Deprecate the pure version of FindSmartObjects and add a new non-pure BP wrapper that allows proper iteration of the returned array, both versions are identical when called from C++.
Change TSubclassOf parameters to use values instead of const references, this enables the class picker on those pins.
#jira UE-180500
#preflight skip
#rb yoan.stamant

[CL 25153289 by ben zeigler in ue5-main branch]
2023-04-21 16:47:40 -04:00
yoan stamant
d879711e1b [SmartObjects] public methods relying on EvaluateConditionsForFiltering now validates that the slot handle is set and not stale. In such case a log message will be emitted that suggests to the user to call 'IsSmartObjectSlotValid' to handle that scenario on the call site and avoid the log.
#rb mieszko.zielinski
#preflight 64414bfdf61b80bcf7ea9e06

[CL 25129902 by yoan stamant in ue5-main branch]
2023-04-20 12:37:29 -04:00
mikko mononen
35825c5a98 SmartObjects: Use only blocking traces/overlap test for entrance validation.
(Adv) Get Mikko's Engine Fix for SO Physics Check Enabled

[CL 25089961 by mikko mononen in ue5-main branch]
2023-04-18 13:26:22 -04:00