| 1840 | } |
| 1841 | |
| 1842 | void ResourceFormatSaverCompatBinaryInstance::write_variant(Ref<FileAccess> f, const Variant &p_property, HashMap<Ref<Resource>, int> &p_resource_map, HashMap<Ref<Resource>, int> &p_external_resources, HashMap<StringName, int> &p_string_map, const PropertyInfo &p_hint) { |
| 1843 | switch (p_property.get_type()) { |
| 1844 | case Variant::NIL: { |
| 1845 | f->store_32(VARIANT_NIL); |
| 1846 | // don't store anything |
| 1847 | } break; |
| 1848 | case Variant::BOOL: { |
| 1849 | f->store_32(VARIANT_BOOL); |
| 1850 | bool val = p_property; |
| 1851 | f->store_32(val); |
| 1852 | } break; |
| 1853 | case Variant::INT: { |
| 1854 | int64_t val = p_property; |
| 1855 | if (val > 0x7FFFFFFF || val < -(int64_t)0x80000000) { |
| 1856 | f->store_32(VARIANT_INT64); |
| 1857 | f->store_64(uint64_t(val)); |
| 1858 | |
| 1859 | } else { |
| 1860 | f->store_32(VARIANT_INT); |
| 1861 | f->store_32(uint32_t(p_property)); |
| 1862 | } |
| 1863 | |
| 1864 | } break; |
| 1865 | case Variant::FLOAT: { |
| 1866 | double d = p_property; |
| 1867 | float fl = d; |
| 1868 | if (double(fl) != d) { |
| 1869 | f->store_32(VARIANT_DOUBLE); |
| 1870 | f->store_double(d); |
| 1871 | } else { |
| 1872 | f->store_32(VARIANT_FLOAT); |
| 1873 | _store_real(f, fl); |
| 1874 | } |
| 1875 | |
| 1876 | } break; |
| 1877 | case Variant::STRING: { |
| 1878 | f->store_32(VARIANT_STRING); |
| 1879 | String val = p_property; |
| 1880 | save_unicode_string(f, val); |
| 1881 | |
| 1882 | } break; |
| 1883 | case Variant::VECTOR2: { |
| 1884 | f->store_32(VARIANT_VECTOR2); |
| 1885 | Vector2 val = p_property; |
| 1886 | _store_real(f, val.x); |
| 1887 | _store_real(f, val.y); |
| 1888 | |
| 1889 | } break; |
| 1890 | case Variant::VECTOR2I: { |
| 1891 | f->store_32(VARIANT_VECTOR2I); |
| 1892 | Vector2i val = p_property; |
| 1893 | f->store_32(uint32_t(val.x)); |
| 1894 | f->store_32(uint32_t(val.y)); |
| 1895 | |
| 1896 | } break; |
| 1897 | case Variant::RECT2: { |
| 1898 | f->store_32(VARIANT_RECT2); |
| 1899 | Rect2 val = p_property; |