Skip to content

Commit 22ebab3

Browse files
committed
update site
1 parent bf5b99d commit 22ebab3

15 files changed

Lines changed: 611 additions & 588 deletions

File tree

blog/dataconfig-1-2/index.html

Lines changed: 225 additions & 225 deletions
Large diffs are not rendered by default.

blog/dataconfig-1-4/index.html

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,32 +58,32 @@ <h2 id="instanced-struct">Instanced Struct<a class="zola-anchor" href="#instance
5858
<svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
5959
</a></h2>
6060
<p>Starting with UE 5.0 there's a new plugin <a href="https://docs.unrealengine.com/5.0/en-US/API/Plugins/StructUtils/">StructUtils</a> featuring a struct type called <a href="https://docs.unrealengine.com/5.0/en-US/API/Plugins/StructUtils/FInstancedStruct/">FInstancedStruct</a>. It's shares the same idea to DataConfig <a href="https://slowburn.dev/dataconfig/Extra/AnyStruct.html">AnyStruct</a> example, while it has proper asset serialization logic and editor support. We now have an extra example on its serialization support with DataConfig.</p>
61-
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigExtra5/Public/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.h</span><span style="color:#999999;">
62-
</span><span style="color:#c82829;">USTRUCT</span><span>()</span><span>
63-
</span><span style="color:#8959a8;">struct </span><span>FDcEditorExtra5InstancedStruct1</span><span>
64-
</span><span>{</span><span>
65-
</span><span> </span><span style="color:#c82829;">GENERATED_BODY</span><span>()</span><span>
61+
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigExtra5/Public/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.h
62+
</span><span style="color:#c82829;">USTRUCT</span><span>()
63+
</span><span style="color:#8959a8;">struct </span><span>FDcEditorExtra5InstancedStruct1
64+
</span><span>{
65+
</span><span> </span><span style="color:#c82829;">GENERATED_BODY</span><span>()
6666
</span><span>
67-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct1;</span><span>
68-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct2;</span><span>
69-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct3;</span><span>
70-
</span><span>};</span><span>
67+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct1;
68+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct2;
69+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() FInstancedStruct InstancedStruct3;
70+
</span><span>};
7171
</span><span>
72-
</span><span style="color:#999999;">// DataConfigExtra5/Private/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.cpp</span><span style="color:#999999;">
73-
</span><span>FString Str </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#8959a8;">R</span><span style="color:#718c00;">&quot;(</span><span style="color:#718c00;">
74-
</span><span style="color:#718c00;"> {</span><span style="color:#718c00;">
75-
</span><span style="color:#718c00;"> &quot;InstancedStruct1&quot; : {</span><span style="color:#718c00;">
76-
</span><span style="color:#718c00;"> &quot;$type&quot; : &quot;DcExtraTestSimpleStruct1&quot;,</span><span style="color:#718c00;">
77-
</span><span style="color:#718c00;"> &quot;NameField&quot; : &quot;Foo&quot;</span><span style="color:#718c00;">
78-
</span><span style="color:#718c00;"> },</span><span style="color:#718c00;">
79-
</span><span style="color:#718c00;"> &quot;InstancedStruct2&quot; : {</span><span style="color:#718c00;">
80-
</span><span style="color:#718c00;"> &quot;$type&quot; : &quot;DcExtraTestStructWithColor1&quot;,</span><span style="color:#718c00;">
81-
</span><span style="color:#718c00;"> &quot;ColorField1&quot; : &quot;#0000FFFF&quot;,</span><span style="color:#718c00;">
82-
</span><span style="color:#718c00;"> &quot;ColorField2&quot; : &quot;#FF0000FF&quot;</span><span style="color:#718c00;">
83-
</span><span style="color:#718c00;"> },</span><span style="color:#718c00;">
84-
</span><span style="color:#718c00;"> &quot;InstancedStruct3&quot; : null</span><span style="color:#718c00;">
85-
</span><span style="color:#718c00;"> }</span><span style="color:#718c00;">
86-
</span><span style="color:#718c00;">)&quot;</span><span style="color:#4271ae;">)</span><span>;</span><span>
72+
</span><span style="color:#999999;">// DataConfigExtra5/Private/DataConfig/EditorExtra/SerDe/DcSerDeInstancedStruct.cpp
73+
</span><span>FString Str </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#8959a8;">R</span><span style="color:#718c00;">&quot;(
74+
</span><span style="color:#718c00;"> {
75+
</span><span style="color:#718c00;"> &quot;InstancedStruct1&quot; : {
76+
</span><span style="color:#718c00;"> &quot;$type&quot; : &quot;DcExtraTestSimpleStruct1&quot;,
77+
</span><span style="color:#718c00;"> &quot;NameField&quot; : &quot;Foo&quot;
78+
</span><span style="color:#718c00;"> },
79+
</span><span style="color:#718c00;"> &quot;InstancedStruct2&quot; : {
80+
</span><span style="color:#718c00;"> &quot;$type&quot; : &quot;DcExtraTestStructWithColor1&quot;,
81+
</span><span style="color:#718c00;"> &quot;ColorField1&quot; : &quot;#0000FFFF&quot;,
82+
</span><span style="color:#718c00;"> &quot;ColorField2&quot; : &quot;#FF0000FF&quot;
83+
</span><span style="color:#718c00;"> },
84+
</span><span style="color:#718c00;"> &quot;InstancedStruct3&quot; : null
85+
</span><span style="color:#718c00;"> }
86+
</span><span style="color:#718c00;">)&quot;</span><span style="color:#4271ae;">)</span><span>;
8787
</span></code></pre>
8888
<p>This is a lightweight alternative to UE instanced sub object and a perfect candidate for lightweight data polymorphism. Expect to see its usage more and more. See:</p>
8989
<ul>

blog/dataconfig-1-5-and-1-6/index.html

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -55,49 +55,49 @@ <h2 id="optional-property">Optional Property<a class="zola-anchor" href="#option
5555
<svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
5656
</a></h2>
5757
<p>Unreal 5.4 introduced optional property that allows you to mark <code>TOptional</code> fields as <code>UPROPERTY</code>:</p>
58-
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigTests54/Private/DcTestUE54.h</span><span style="color:#999999;">
59-
</span><span style="color:#c82829;">USTRUCT</span><span>()</span><span>
60-
</span><span style="color:#8959a8;">struct </span><span>FDcTestOptional</span><span>
61-
</span><span>{</span><span>
62-
</span><span> </span><span style="color:#c82829;">GENERATED_BODY</span><span>()</span><span>
58+
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigTests54/Private/DcTestUE54.h
59+
</span><span style="color:#c82829;">USTRUCT</span><span>()
60+
</span><span style="color:#8959a8;">struct </span><span>FDcTestOptional
61+
</span><span>{
62+
</span><span> </span><span style="color:#c82829;">GENERATED_BODY</span><span>()
6363
</span><span>
64-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;</span><span style="color:#8959a8;">float</span><span>&gt; OptionalFloatField1;</span><span>
65-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;</span><span style="color:#8959a8;">float</span><span>&gt; OptionalFloatField2;</span><span>
64+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;</span><span style="color:#8959a8;">float</span><span>&gt; OptionalFloatField1;
65+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;</span><span style="color:#8959a8;">float</span><span>&gt; OptionalFloatField2;
6666
</span><span>
67-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FString&gt; OptionalStrField1;</span><span>
68-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FString&gt; OptionalStrField2;</span><span>
67+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FString&gt; OptionalStrField1;
68+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FString&gt; OptionalStrField2;
6969
</span><span>
70-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FDcInnerStruct54&gt; OptionalStructField1;</span><span>
71-
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FDcInnerStruct54&gt; OptionalStructField2;</span><span>
72-
</span><span>};</span><span>
70+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FDcInnerStruct54&gt; OptionalStructField1;
71+
</span><span> </span><span style="color:#4271ae;">UPROPERTY</span><span>() TOptional&lt;FDcInnerStruct54&gt; OptionalStructField2;
72+
</span><span>};
7373
</span></code></pre>
7474
<p>DataConfig fully supports this now and it works perfectly with JSON format since any JSON value can be <code>null</code>:</p>
75-
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigTests54/Private/DcTestUE54.cpp</span><span style="color:#999999;">
76-
</span><span>FString Str </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#8959a8;">R</span><span style="color:#718c00;">&quot;(</span><span style="color:#718c00;">
75+
<pre data-lang="c++" style="background-color:#ffffff;color:#4d4d4c;" class="language-c++ "><code class="language-c++" data-lang="c++"><span style="color:#999999;">// DataConfigTests54/Private/DcTestUE54.cpp
76+
</span><span>FString Str </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#8959a8;">R</span><span style="color:#718c00;">&quot;(
7777
</span><span style="color:#718c00;">
78-
</span><span style="color:#718c00;"> {</span><span style="color:#718c00;">
79-
</span><span style="color:#718c00;"> &quot;OptionalFloatField1&quot; : 17.5,</span><span style="color:#718c00;">
80-
</span><span style="color:#718c00;"> &quot;OptionalFloatField2&quot; : null,</span><span style="color:#718c00;">
78+
</span><span style="color:#718c00;"> {
79+
</span><span style="color:#718c00;"> &quot;OptionalFloatField1&quot; : 17.5,
80+
</span><span style="color:#718c00;"> &quot;OptionalFloatField2&quot; : null,
8181
</span><span style="color:#718c00;">
82-
</span><span style="color:#718c00;"> &quot;OptionalStrField1&quot; : &quot;Alpha&quot;,</span><span style="color:#718c00;">
83-
</span><span style="color:#718c00;"> &quot;OptionalStrField2&quot; : null,</span><span style="color:#718c00;">
82+
</span><span style="color:#718c00;"> &quot;OptionalStrField1&quot; : &quot;Alpha&quot;,
83+
</span><span style="color:#718c00;"> &quot;OptionalStrField2&quot; : null,
8484
</span><span style="color:#718c00;">
85-
</span><span style="color:#718c00;"> &quot;OptionalStructField1&quot; : {</span><span style="color:#718c00;">
86-
</span><span style="color:#718c00;"> &quot;StrField&quot; : &quot;Beta&quot;,</span><span style="color:#718c00;">
87-
</span><span style="color:#718c00;"> &quot;IntField&quot; : 42</span><span style="color:#718c00;">
88-
</span><span style="color:#718c00;"> },</span><span style="color:#718c00;">
89-
</span><span style="color:#718c00;"> &quot;OptionalStructField2&quot; : null</span><span style="color:#718c00;">
90-
</span><span style="color:#718c00;"> }</span><span style="color:#718c00;">
85+
</span><span style="color:#718c00;"> &quot;OptionalStructField1&quot; : {
86+
</span><span style="color:#718c00;"> &quot;StrField&quot; : &quot;Beta&quot;,
87+
</span><span style="color:#718c00;"> &quot;IntField&quot; : 42
88+
</span><span style="color:#718c00;"> },
89+
</span><span style="color:#718c00;"> &quot;OptionalStructField2&quot; : null
90+
</span><span style="color:#718c00;"> }
9191
</span><span style="color:#718c00;">
92-
</span><span style="color:#718c00;">)&quot;</span><span style="color:#4271ae;">)</span><span>;</span><span>
92+
</span><span style="color:#718c00;">)&quot;</span><span style="color:#4271ae;">)</span><span>;
9393
</span><span>
94-
</span><span style="color:#999999;">// equivalent fixture</span><span style="color:#999999;">
95-
</span><span>FDcTestOptional Expect;</span><span>
96-
</span><span>Expect.</span><span style="color:#c82829;">OptionalFloatField1 </span><span style="color:#3e999f;">= </span><span style="color:#f5871f;">17.5</span><span style="color:#8959a8;">f</span><span>;</span><span>
97-
</span><span>Expect.</span><span style="color:#c82829;">OptionalStrField1 </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#718c00;">&quot;Alpha&quot;</span><span style="color:#4271ae;">)</span><span>;</span><span>
98-
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>.</span><span style="color:#c82829;">Emplace</span><span>();</span><span>
99-
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>-&gt;</span><span style="color:#c82829;">StrField </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#718c00;">&quot;Beta&quot;</span><span style="color:#4271ae;">)</span><span>;</span><span>
100-
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>-&gt;</span><span style="color:#c82829;">IntField </span><span style="color:#3e999f;">= </span><span style="color:#f5871f;">42</span><span>;</span><span>
94+
</span><span style="color:#999999;">// equivalent fixture
95+
</span><span>FDcTestOptional Expect;
96+
</span><span>Expect.</span><span style="color:#c82829;">OptionalFloatField1 </span><span style="color:#3e999f;">= </span><span style="color:#f5871f;">17.5</span><span style="color:#8959a8;">f</span><span>;
97+
</span><span>Expect.</span><span style="color:#c82829;">OptionalStrField1 </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#718c00;">&quot;Alpha&quot;</span><span style="color:#4271ae;">)</span><span>;
98+
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>.</span><span style="color:#c82829;">Emplace</span><span>();
99+
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>-&gt;</span><span style="color:#c82829;">StrField </span><span style="color:#3e999f;">= </span><span style="color:#c82829;">TEXT</span><span style="color:#4271ae;">(</span><span style="color:#718c00;">&quot;Beta&quot;</span><span style="color:#4271ae;">)</span><span>;
100+
</span><span>Expect.</span><span style="color:#c82829;">OptionalStructField1</span><span>-&gt;</span><span style="color:#c82829;">IntField </span><span style="color:#3e999f;">= </span><span style="color:#f5871f;">42</span><span>;
101101
</span></code></pre>
102102
<ul>
103103
<li><a href="https://slowburn.dev/dataconfig/Advanced/Optional">Advanced - Optional</a></li>
@@ -106,11 +106,11 @@ <h2 id="core-types-serializers">Core Types Serializers<a class="zola-anchor" hre
106106
<svg class="octicon" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg>
107107
</a></h2>
108108
<p>DataConfig now comes bundled with a set of serialization handlers that read/writes core types like <code>FVector</code> into a more compact format:</p>
109-
<pre data-lang="JSON" style="background-color:#ffffff;color:#4d4d4c;" class="language-JSON "><code class="language-JSON" data-lang="JSON"><span>{</span><span>
110-
</span><span> </span><span style="color:#718c00;">&quot;VecField1&quot; </span><span>: [ </span><span style="color:#f5871f;">0</span><span>, </span><span style="color:#f5871f;">0</span><span>, </span><span style="color:#f5871f;">1</span><span>],</span><span>
111-
</span><span> </span><span style="color:#718c00;">&quot;ColorField1&quot; </span><span>: </span><span style="color:#718c00;">&quot;#000000FF&quot;</span><span>,</span><span>
112-
</span><span> </span><span style="color:#718c00;">&quot;DateTimeField1&quot; </span><span>: </span><span style="color:#718c00;">&quot;0001.01.01-00.00.00&quot;</span><span>,</span><span>
113-
</span><span>}</span><span>
109+
<pre data-lang="JSON" style="background-color:#ffffff;color:#4d4d4c;" class="language-JSON "><code class="language-JSON" data-lang="JSON"><span>{
110+
</span><span> </span><span style="color:#718c00;">&quot;VecField1&quot; </span><span>: [ </span><span style="color:#f5871f;">0</span><span>, </span><span style="color:#f5871f;">0</span><span>, </span><span style="color:#f5871f;">1</span><span>],
111+
</span><span> </span><span style="color:#718c00;">&quot;ColorField1&quot; </span><span>: </span><span style="color:#718c00;">&quot;#000000FF&quot;</span><span>,
112+
</span><span> </span><span style="color:#718c00;">&quot;DateTimeField1&quot; </span><span>: </span><span style="color:#718c00;">&quot;0001.01.01-00.00.00&quot;</span><span>,
113+
</span><span>}
114114
</span></code></pre>
115115
<p>This works both ways in serialization and deserializations.</p>
116116
<ul>

0 commit comments

Comments
 (0)