MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / WriteVariant

Method WriteVariant

Source/Engine/Utilities/VariantUtils.cs:653–871  ·  view source on GitHub ↗
(this BinaryWriter stream, object value)

Source from the content-addressed store, hash-verified

651 }
652
653 internal static void WriteVariant(this BinaryWriter stream, object value)
654 {
655 if (value == null)
656 {
657 stream.Write((byte)0);
658 stream.Write(0);
659 return;
660 }
661 var type = value.GetType();
662 var variantType = ToVariantType(type);
663 stream.Write((byte)variantType);
664 switch (variantType)
665 {
666 case VariantType.Object:
667 if (type != typeof(FlaxEngine.Object))
668 {
669 stream.Write(int.MaxValue);
670 stream.WriteStrAnsi(type.FullName, 77);
671 }
672 else
673 stream.Write(0);
674 break;
675 case VariantType.Asset:
676 if (type != typeof(Asset))
677 {
678 stream.Write(int.MaxValue);
679 stream.WriteStrAnsi(type.FullName, 77);
680 }
681 else
682 stream.Write(0);
683 break;
684 case VariantType.Enum:
685 case VariantType.Structure:
686 case VariantType.ManagedObject:
687 stream.Write(int.MaxValue);
688 stream.WriteStrAnsi(type.FullName, 77);
689 break;
690 case VariantType.Array:
691 if (type != typeof(object[]))
692 {
693 stream.Write(int.MaxValue);
694 stream.WriteStrAnsi(type.FullName, 77);
695 }
696 else
697 stream.Write(0);
698 break;
699 case VariantType.Dictionary:
700 if (type != typeof(Dictionary<object, object>))
701 {
702 stream.Write(int.MaxValue);
703 stream.WriteStrAnsi(type.GetTypeName(), 77);
704 }
705 else
706 stream.Write(0);
707 break;
708 default:
709 stream.Write(0);
710 break;

Callers

nothing calls this directly

Calls 14

WriteStrAnsiMethod · 0.80
WriteStrMethod · 0.80
WriteStartObjectMethod · 0.80
WriteEndObjectMethod · 0.80
WriteStartArrayMethod · 0.80
WriteEndArrayMethod · 0.80
GetTypeDisplayNameMethod · 0.80
WriteMethod · 0.45
GetTypeMethod · 0.45
GetTypeNameMethod · 0.45
WriteGuidMethod · 0.45
SerializeMethod · 0.45

Tested by

no test coverage detected