Reference Type: Difference between revisions

From Resonite Wiki
m Added link
add a ton of info yAY
Line 1: Line 1:
Reference Types are [[:Category:Type|types]] that store data indirectly, via references. This is in contrast to [[Value Type|Value Types]], which directly store their corresponding data.  
'''Reference Types''' are a designation of types within the [[FrooxEngine]] [[Data Model]]. They are in contrast to [[Value Type|value types]] in that they exist in one place in memory and are "passed around" by reference rather than by value, such as through a [[Type:SyncField`1|SyncRef<T>]].


For more information, refer to the [https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/reference-types Microsoft documentation on C# Reference Types]
Every type in the game that is defined through a [https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/types/classes class] is a reference type. Some examples of reference types include [[Slot|Slots]], [[User|Users]], [[Component|Components]], and [[Type:IField|Fields]]. Types defined through a [https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/struct struct] are <em>not</em> reference types, such as the [[Type:Rect|Rect]] type.
 
In general, the analogue to reference types in [[ProtoFlux]] is the [[Type:Object|object]] type. This can cause some confusion when using nodes that interact with FrooxEngine (such as [[ProtoFlux:Data Model Store|Data Model Store]]) vs nodes that are contained entirely within protoflux (such as [[ProtoFlux:Store|Store]]). A slot is an ''Object Ref'' in the Data Model, but an ''Object'' alone in ProtoFlux contexts. A [[Type:string|string]] is a ''value'' in the Data Model, but an ''Object Field'' in ProtoFlux contexts.
 
== See Also ==
* [[Value Type]]
* [[Type:Object]]
* [https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/reference-types Microsoft documentation on C# Reference Types]
 
[[Category:Type]]

Revision as of 16:44, 16 August 2024

Reference Types are a designation of types within the FrooxEngine Data Model. They are in contrast to value types in that they exist in one place in memory and are "passed around" by reference rather than by value, such as through a SyncRef<T>.

Every type in the game that is defined through a class is a reference type. Some examples of reference types include Slots, Users, Components, and Fields. Types defined through a struct are not reference types, such as the Rect type.

In general, the analogue to reference types in ProtoFlux is the object type. This can cause some confusion when using nodes that interact with FrooxEngine (such as Data Model Store) vs nodes that are contained entirely within protoflux (such as Store). A slot is an Object Ref in the Data Model, but an Object alone in ProtoFlux contexts. A string is a value in the Data Model, but an Object Field in ProtoFlux contexts.

See Also