Value Type: Difference between revisions

From Resonite Wiki
see also
clarifications
Line 4: Line 4:


== In FrooxEngine ==
== In FrooxEngine ==
It's simple to tell whether a certain type is a value type or not within FrooxEngine. In the [[Scene Inspector]], fields holding a value type are easily identifiable by the ability to directly edit the value within them, rather than needing to drag in a reference to the type. A [[Component:ValueField|ValueField]] component is able to hold any FrooxEngine value type, which can be used as a quick reference to tell what is what.
What types are defined as value types in FrooxEngine are managed through a complicated autogenerated class called <code>Coder<T></code>. As such, it is much better to refer to the category for determining what is a value type in FrooxEngine.
 
It's simple to test whether a certain type is a value type or not. In the [[Scene Inspector]], fields holding a value type are easily identifiable by the ability to directly edit the value within them, rather than needing to drag in a reference to the type. A [[Component:ValueField|ValueField]] component is able to hold any FrooxEngine value type, which can be used as a quick reference to tell what is what.


== In ProtoFlux ==
== In ProtoFlux ==
Line 18: Line 20:


This discrepency between the definition of a value type in FrooxEngine and in ProtoFlux can cause some confusion. For example, a [[Type:string|string]] is a value type in FrooxEngine, but an object type in ProtoFlux. This is also the case with nullable types.
This discrepency between the definition of a value type in FrooxEngine and in ProtoFlux can cause some confusion. For example, a [[Type:string|string]] is a value type in FrooxEngine, but an object type in ProtoFlux. This is also the case with nullable types.
In short, every value type in ProtoFlux is also a value type in FrooxEngine, but not every value type in FrooxEngine is a value type in ProtoFlux.


== See Also ==
== See Also ==
* [[Reference Type]]
* [[Reference Type]]
* [[Type:Object]]
* [[Type:Object]]

Revision as of 19:47, 5 September 2024

A Value Type is a delegation of types within the FrooxEngine Data Model and ProtoFlux. In contrast to Reference Types, fields containing a value type store the value directly, rather than a reference to the value.

For a list of all value types in game, refer to Category:Value Types.

In FrooxEngine

What types are defined as value types in FrooxEngine are managed through a complicated autogenerated class called Coder<T>. As such, it is much better to refer to the category for determining what is a value type in FrooxEngine.

It's simple to test whether a certain type is a value type or not. In the Scene Inspector, fields holding a value type are easily identifiable by the ability to directly edit the value within them, rather than needing to drag in a reference to the type. A ValueField component is able to hold any FrooxEngine value type, which can be used as a quick reference to tell what is what.

In ProtoFlux

In ProtoFlux, in short, if a type can be classified as an unmanaged type in C#, it is recognized as a value type. Otherwise, it is an Object Type.

To expand on the definition, in ProtoFlux, an unmanaged type, or value type, must either (criteria not useful to Resonite excluded):

  • Be one of sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, or bool.
  • Be an Enum type.
  • Be defined as a non-nullable struct internally that only contains other value types.

This discrepency between the definition of a value type in FrooxEngine and in ProtoFlux can cause some confusion. For example, a string is a value type in FrooxEngine, but an object type in ProtoFlux. This is also the case with nullable types.

In short, every value type in ProtoFlux is also a value type in FrooxEngine, but not every value type in FrooxEngine is a value type in ProtoFlux.

See Also