Commit Graph

8 Commits

Author SHA1 Message Date
henrik karlsson
f29010f68f [DataInterface]
* Attempt at fixing Hololens compile error

#rb none
#jira none
#preflight skipped

[CL 22893585 by henrik karlsson in ue5-main branch]
2022-11-01 18:39:05 -04:00
jaime cifuentes
ba41d901c6 Data Interfaces experimental plugin update :
- Added Context branching support (up to 64 elements)
- Added TParam<Type> operator [] and Opertator Type(), so we can operate directly with the TParams (this is used instead of the Kernel::run, which is harder to debug and deal with)
- Fixed batches and passing a single element to a Context that expects N elements (no more memory stomping)
- Added new ways to obtain a TParam from the Context (GetParamPtr, GetParamAs, GetParameter with TOptional). Also added a GetResultAs<Type>, to ease working with the parameters
- Fixed GetDataSafe to support containers (with Num() and GetData)
- Added NumElements to FParam (indicates the number of elements that the Data holds for this parameter)
- Updated FParam CanAssignWith to allow copy with less restrictions if the target param is empty / unasigned
- Added more constructors to TWrapParam, one with explicit NumElements and other with an ArrayView
- Added more constructors to TParam, with explicit NumElements
- Added EngineTest for DataInterface with a example at Animation.DataInterfaces.XXXXXX
- Prototype of parameter storage using arenas : Context requests the size of the passed paramters and copies the ones selected by the user to be transfered
- Prototype of stack like parameter storage, which allows storing small values directly into the Data pointer of FParam struct (pending see if it can be done constexpr, now is checked at runtime)

@rb @thomas.sarkanen @nicholas.frechette
#jira none
#preflight 635bbe469c65b7958634b506
#preflight 635bc4cd944463bad4a4b63b

[CL 22827097 by jaime cifuentes in ue5-main branch]
2022-10-28 08:06:23 -04:00
Robb Surridge
610c467639 Update vendor links for built-in plugins to use secure protocol.
#jira UE-166823
#rb lauren.barnes
#preflight 6352b20b7261e565c476ec3b

[CL 22690089 by Robb Surridge in ue5-main branch]
2022-10-21 11:04:07 -04:00
Joe Kirchoff
3d41d033e9 Workaround for VS2022 preview compiler bug
#rnx
#rb trivial
#preflight 63324d39a4769ad714cef8b4

[CL 22199337 by Joe Kirchoff in ue5-main branch]
2022-09-26 21:39:25 -04:00
Keith Yerex
554b6ff393 Initial Chooser implementation
In an experimental plugin based on Data Interfaces system
#rb Thomas.Sarkanen
#preflight 6282c297cf7e4667a9d38ff2

[CL 20233851 by Keith Yerex in ue5-main branch]
2022-05-16 18:24:47 -04:00
Thomas Sarkanen
69d0c32b85 Fix CIS issues in DataInterface plugins
#rb none
#jira UE-149698
#jira UE-149704
#preflight 626137f1731f07cd5cc8d00c

[CL 19846637 by Thomas Sarkanen in ue5-main branch]
2022-04-21 07:06:31 -04:00
Thomas Sarkanen
a94a0f6b82 CIS fix - removed shadow variable
#jira UE-149559
#preflight 625ebb653e0f6f80adb08400

[CL 19807618 by Thomas Sarkanen in ue5-main branch]
2022-04-19 09:44:03 -04:00
Thomas Sarkanen
6ebe619fe5 Initial prototype of data interfaces and data interface graphs
Data interfaces are designed to be the basis for a functional, compositional framework, allowing loose bindings (a typed return value) between functional units (data interfaces). They incorporate the following main features:
- Simple call to 'get a value' from a data interface.
- Most communication is done via the UE::DataInterface::FContext, which handles data management.
- Type-erased values (UE::DataInterface::FParam) for results, parameters and state. These can be promoted to typed values (UE::DataInterface::TParam<T>) with runtime validation.
- 'Hidden state', allocated on-demand via a context, to support functional units that require statefulness. State is allocated according to the calling context, currently a hash of the 'callstack' and call site, so subsequent calls to the same data interface can reuse state.
- Batch processing of multiple state representations at once (e.g. processing multiple characters at one), via a chunked allocation strategy.

Also includes data interface graphs - a proof-of-concept implementation using RigVM to construct scripted data interface logic. This is still very early!

Still lots to do:
- Removal of typed interfaces (e.g. IDataInterface_Float)
- Validation of hidden state approach on a wider scale
- Validation of kernel processing approach
- Chunked branching (probably via a masking strategy) so branches can be handled within chunks
- Reworked type system incorporating type promotion/conversion
- UI work to allow for mixing instanced sub-objects and asset references with using TScriptInterface<IDataInterface>
- Expansion or RigVM usage and a ton of UI/UX work to get graph editing up to scratch
- Many many more things

#preflight 625e86873e0f6f80ada98290

[CL 19806109 by Thomas Sarkanen in ue5-main branch]
2022-04-19 06:28:48 -04:00