• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

code4game / libgltf / 58

pending completion
58

push

github-action

Xing Ji
[action] remove neon support again

1642 of 6052 relevant lines covered (27.13%)

2593.3 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

20.78
/source/libgltf/libgltfparser.cpp
1
/*
2
 * This software is released under the MIT license.
3
 * 
4
 * Copyright (c) 2017-2023 Code 4 Game, Org. All Rights Reserved.
5
 * 
6
 * Permission is hereby granted, free of charge, to any person obtaining a copy
7
 * of this software and associated documentation files (the "Software"), to deal
8
 * in the Software without restriction, including without limitation the rights
9
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
 * copies of the Software, and to permit persons to whom the Software is
11
 * furnished to do so, subject to the following conditions:
12
 * 
13
 * The above copyright notice and this permission notice shall be included in all
14
 * copies or substantial portions of the Software.
15
 * 
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
 * SOFTWARE.
23
 */
24

25
#include "libgltfparser.h"
26

27
namespace libgltf
28
{
29
    bool operator<<(SGlTF& _gltf, const std::string& _sContent)
17✔
30
    {
31
        JSONCharDocument json_doc;
17✔
32
        json_doc.Parse(_sContent.c_str());
17✔
33
        if (!json_doc.IsObject()) return false;
17✔
34
        return (_gltf << json_doc.GetObject());
17✔
35
    }
17✔
36

37
    bool operator>>(const SGlTF& _gltf, std::string& _sContent)
×
38
    {
39
        JSONCharDocument json_doc;
×
40
        if (!(TDataDoc<SGlTF>(_gltf, &json_doc) >> json_doc)) return false;
×
41
        JSONStringBuffer json_string_buffer;
×
42
        JSONWriter json_writer(json_string_buffer);
×
43
        if (!json_doc.Accept(json_writer)) return false;
×
44
        _sContent = json_string_buffer.GetString();
×
45
        return true;
×
46
    }
47

48
    bool operator<<(bool& _rData, const JSONCharValue& _JsonValue)
×
49
    {
50
        if (!_JsonValue.IsBool()) return false;
×
51
        _rData = _JsonValue.GetBool();
×
52
        return true;
×
53
    }
54

55
    bool operator>>(const TDataDoc<bool>& _rData, JSONCharValue& _JsonValue)
×
56
    {
57
        _JsonValue.SetBool(_rData.data);
×
58
        return true;
×
59
    }
60

61
    bool operator<<(int32_t& _rData, const JSONCharValue& _JsonValue)
2,907✔
62
    {
63
        if (!_JsonValue.IsInt()) return false;
2,907✔
64
        _rData = _JsonValue.GetInt();
2,907✔
65
        return true;
2,907✔
66
    }
67

68
    bool operator>>(const TDataDoc<int32_t>& _rData, JSONCharValue& _JsonValue)
×
69
    {
70
        _JsonValue.SetInt(_rData.data);
×
71
        return true;
×
72
    }
73

74
    bool operator<<(float& _rData, const JSONCharValue& _JsonValue)
5,025✔
75
    {
76
        if (_JsonValue.IsNumber())
5,025✔
77
        {
78
            _rData = _JsonValue.GetFloat();
5,025✔
79
            return true;
5,025✔
80
        }
81
        if (_JsonValue.IsInt())
×
82
        {
83
            _rData = static_cast<float>(_JsonValue.GetInt());
×
84
            return true;
×
85
        }
86
        return false;
×
87
    }
88

89
    bool operator>>(const TDataDoc<float>& _rData, JSONCharValue& _JsonValue)
×
90
    {
91
        _JsonValue.SetFloat(_rData.data);
×
92
        return true;
×
93
    }
94

95
    bool operator<<(std::string& _rData, const JSONCharValue& _JsonValue)
7✔
96
    {
97
        if (!_JsonValue.IsString()) return false;
7✔
98
        _rData = _JsonValue.GetString();
7✔
99
        return true;
7✔
100
    }
101

102
    bool operator>>(const TDataDoc<std::string>& _rData, JSONCharValue& _JsonValue)
×
103
    {
104
        if (!_rData.doc) return false;
×
105
        _JsonValue.SetString(_rData.data.c_str(), _rData.doc->GetAllocator());
×
106
        return true;
×
107
    }
108

109
    template<typename TData>
110
    bool operator<<(std::vector<TData>& _vDatas, const JSONCharValue& _JsonValue)
1,986✔
111
    {
112
        if (!_JsonValue.IsArray()) return false;
1,986✔
113
        std::vector<TData> datas;
1,986✔
114
        const JSONCharConstArray& json_array = _JsonValue.GetArray();
1,986✔
115
        size_t len = json_array.Size();
1,986✔
116
        if (len == 0) return true;
1,986✔
117
        datas.resize(len);
1,986✔
118
        for (size_t i = 0; i < len; ++i)
9,245✔
119
        {
120
            if (datas[i] << json_array[static_cast<rapidjson::SizeType>(i)]) continue;
7,259✔
121
            return false;
×
122
        }
123
        _vDatas = datas;
1,986✔
124
        return true;
1,986✔
125
    }
1,986✔
126

14✔
127
    template<typename TData>
128
    bool operator>>(const TDataDoc<std::vector<TData>>& _rData, JSONCharValue& _JsonValue)
14✔
129
    {
14✔
130
        if (_rData.data.empty() || !_rData.doc) return false;
14✔
131
        JSONCharValue& json_array = _JsonValue.SetArray();
14✔
132
        for (const TData& data : _rData.data)
14✔
133
        {
14✔
134
            JSONCharValue json_value;
37✔
135
            if (!(TDataDoc<TData>(data, _rData.doc) >> json_value)) return false;
136
            json_array.PushBack(json_value, _rData.doc->GetAllocator());
23✔
137
        }
×
138
        return true;
139
    }
14✔
140

14✔
141
    template<typename TData>
14✔
142
    bool operator<<(std::map<std::string, TData>& _mDatas, const JSONCharValue& _JsonValue)
×
143
    {
144
        if (!_JsonValue.IsObject()) return false;
×
145
        std::map<std::string, TData> datas;
×
146
        const JSONCharConstObject& json_object = _JsonValue.GetObject();
×
147
        for (JSONCharConstObject::ConstMemberIterator cit = json_object.MemberBegin(); cit != json_object.MemberEnd(); ++cit)
×
148
        {
×
149
            TData data;
×
150
            if (!(data << cit->value)) return false;
×
151
            datas.insert(std::make_pair(cit->name.GetString(), data));
152
        }
×
153
        _mDatas = datas;
×
154
        return true;
155
    }
×
156

×
157
    template<typename TData>
158
    bool operator>>(const TDataDoc<std::map<std::string, TData>>& _rData, JSONCharValue& _JsonValue)
1✔
159
    {
160
        if (_rData.data.empty() || !_rData.doc) return false;
1✔
161
        _JsonValue.SetObject();
1✔
162
        for (const std::pair<std::string, TData>& data : _rData.data)
1✔
163
        {
1✔
164
            JSONCharValue json_value;
1✔
165
            if (!(TDataDoc<TData>(data.second, _rData.doc) >> json_value)) return false;
1✔
166
            JSONCharValue json_key(data.first.c_str(), _rData.doc->GetAllocator());
4✔
167
            _JsonValue.AddMember(json_key, json_value, _rData.doc->GetAllocator());
168
        }
3✔
169
        return true;
×
170
    }
171

1✔
172
    bool operator<<(SAccessor& _rData, const JSONCharValue& _JsonValue)
1✔
173
    {
1✔
174
        {
140✔
175
            SGlTFChildofRootProperty& super_ptr = _rData;
176
            if (!(super_ptr << _JsonValue)) return false;
140✔
177
        }
140✔
178
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
140✔
179
        {
140✔
180
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
140✔
181
        }
140✔
182
        if (_JsonValue.HasMember("byteOffset") && _JsonValue["byteOffset"].IsInt())
445✔
183
        {
184
            _rData.byteOffset = _JsonValue["byteOffset"].GetInt();
305✔
185
        }
×
186
        if (_JsonValue.HasMember("componentType") && _JsonValue["componentType"].IsInt())
187
        {
140✔
188
            _rData.componentType = _JsonValue["componentType"].GetInt();
140✔
189
        }
140✔
190
        if (_JsonValue.HasMember("normalized") && _JsonValue["normalized"].IsBool())
×
191
        {
192
            _rData.normalized = _JsonValue["normalized"].GetBool();
×
193
        }
×
194
        if (_JsonValue.HasMember("count") && _JsonValue["count"].IsInt())
×
195
        {
×
196
            _rData.count = _JsonValue["count"].GetInt();
×
197
        }
×
198
        if (_JsonValue.HasMember("type") && _JsonValue["type"].IsString())
×
199
        {
200
            _rData.type = _JsonValue["type"].GetString();
×
201
        }
×
202
        if (_JsonValue.HasMember("max") && _JsonValue["max"].IsArray())
203
        {
×
204
            if (!(_rData.max << _JsonValue["max"])) return false;
×
205
        }
206
        if (_JsonValue.HasMember("min") && _JsonValue["min"].IsArray())
13✔
207
        {
208
            if (!(_rData.min << _JsonValue["min"])) return false;
13✔
209
        }
13✔
210
        if (_JsonValue.HasMember("sparse") && _JsonValue["sparse"].IsObject())
13✔
211
        {
13✔
212
            if (!(_rData.sparse << _JsonValue["sparse"])) return false;
13✔
213
        }
13✔
214
        _rData.schemaType = "accessor.schema.json";
71✔
215
        return true;
216
    }
58✔
217

×
218
    bool operator>>(const TDataDoc<SAccessor>& _rData, JSONCharValue& _JsonValue)
219
    {
13✔
220
        if (!_rData.doc) return false;
13✔
221
        _JsonValue.SetObject();
13✔
222
        {
×
223
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
224
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
225
        }
×
226
        if (!!_rData.data.bufferView)
×
227
        {
×
228
            JSONCharValue json_value;
×
229
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
×
230
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
×
231
        }
232
        {
×
233
            JSONCharValue json_value;
×
234
            if (!(TDataDoc<int32_t>(_rData.data.byteOffset, _rData.doc) >> json_value)) return false;
235
            _JsonValue.AddMember("byteOffset", json_value, _rData.doc->GetAllocator());
×
236
        }
×
237
        {
238
            JSONCharValue json_value;
×
239
            if (!(TDataDoc<int32_t>(_rData.data.componentType, _rData.doc) >> json_value)) return false;
240
            _JsonValue.AddMember("componentType", json_value, _rData.doc->GetAllocator());
×
241
        }
×
242
        {
×
243
            JSONCharValue json_value;
×
244
            if (!(TDataDoc<bool>(_rData.data.normalized, _rData.doc) >> json_value)) return false;
×
245
            _JsonValue.AddMember("normalized", json_value, _rData.doc->GetAllocator());
×
246
        }
×
247
        {
248
            JSONCharValue json_value;
×
249
            if (!(TDataDoc<int32_t>(_rData.data.count, _rData.doc) >> json_value)) return false;
×
250
            _JsonValue.AddMember("count", json_value, _rData.doc->GetAllocator());
251
        }
×
252
        {
×
253
            JSONCharValue json_value;
254
            if (!(TDataDoc<std::string>(_rData.data.type, _rData.doc) >> json_value)) return false;
×
255
            _JsonValue.AddMember("type", json_value, _rData.doc->GetAllocator());
256
        }
×
257
        if (!_rData.data.max.empty())
×
258
        {
×
259
            JSONCharValue json_value;
×
260
            if (!(TDataDoc<std::vector<float>>(_rData.data.max, _rData.doc) >> json_value)) return false;
×
261
            _JsonValue.AddMember("max", json_value, _rData.doc->GetAllocator());
×
262
        }
×
263
        if (!_rData.data.min.empty())
264
        {
×
265
            JSONCharValue json_value;
×
266
            if (!(TDataDoc<std::vector<float>>(_rData.data.min, _rData.doc) >> json_value)) return false;
267
            _JsonValue.AddMember("min", json_value, _rData.doc->GetAllocator());
×
268
        }
×
269
        if (!!_rData.data.sparse)
270
        {
7✔
271
            JSONCharValue json_value;
272
            if (!(TDataDoc<SAccessorSparse>(*_rData.data.sparse, _rData.doc) >> json_value)) return false;
7✔
273
            _JsonValue.AddMember("sparse", json_value, _rData.doc->GetAllocator());
7✔
274
        }
7✔
275
        return true;
7✔
276
    }
7✔
277

7✔
278
    bool operator<<(std::shared_ptr<SAccessor>& _pData, const JSONCharValue& _JsonValue)
14✔
279
    {
280
        std::shared_ptr<SAccessor> data_ptr = !!_pData ? _pData : std::make_shared<SAccessor>();
7✔
281
        if (!(*data_ptr << _JsonValue)) return false;
×
282
        _pData = data_ptr;
283
        return true;
7✔
284
    }
7✔
285

7✔
286
    bool operator>>(const TDataDoc<std::shared_ptr<SAccessor>>& _rData, JSONCharValue& _JsonValue)
2✔
287
    {
288
        if (!_rData.data) return false;
2✔
289
        return (TDataDoc<SAccessor>(*_rData.data, _rData.doc) >> _JsonValue);
2✔
290
    }
2✔
291

2✔
292
    bool operator<<(std::vector<std::shared_ptr<SAccessor>>& _vDatas, const JSONCharValue& _JsonValue)
2✔
293
    {
2✔
294
        return operator<< <std::shared_ptr<SAccessor>>(_vDatas, _JsonValue);
4✔
295
    }
296

2✔
297
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAccessor>>>& _rData, JSONCharValue& _JsonValue)
×
298
    {
299
        return operator>> <std::shared_ptr<SAccessor>>(_rData, _JsonValue);
2✔
300
    }
2✔
301

2✔
302
    bool operator<<(SAccessorSparseIndices& _rData, const JSONCharValue& _JsonValue)
27✔
303
    {
304
        {
27✔
305
            SGlTFProperty& super_ptr = _rData;
27✔
306
            if (!(super_ptr << _JsonValue)) return false;
27✔
307
        }
27✔
308
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
27✔
309
        {
27✔
310
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
55✔
311
        }
312
        if (_JsonValue.HasMember("byteOffset") && _JsonValue["byteOffset"].IsInt())
28✔
313
        {
×
314
            _rData.byteOffset = _JsonValue["byteOffset"].GetInt();
315
        }
27✔
316
        if (_JsonValue.HasMember("componentType") && _JsonValue["componentType"].IsInt())
27✔
317
        {
27✔
318
            _rData.componentType = _JsonValue["componentType"].GetInt();
17✔
319
        }
320
        _rData.schemaType = "accessor.sparse.indices.schema.json";
17✔
321
        return true;
17✔
322
    }
17✔
323

17✔
324
    bool operator>>(const TDataDoc<SAccessorSparseIndices>& _rData, JSONCharValue& _JsonValue)
17✔
325
    {
17✔
326
        if (!_rData.doc) return false;
44✔
327
        _JsonValue.SetObject();
328
        {
27✔
329
            const SGlTFProperty& super_ptr = _rData.data;
×
330
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
331
        }
17✔
332
        if (!!_rData.data.bufferView)
17✔
333
        {
17✔
334
            JSONCharValue json_value;
17✔
335
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
336
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
17✔
337
        }
17✔
338
        {
17✔
339
            JSONCharValue json_value;
17✔
340
            if (!(TDataDoc<int32_t>(_rData.data.byteOffset, _rData.doc) >> json_value)) return false;
17✔
341
            _JsonValue.AddMember("byteOffset", json_value, _rData.doc->GetAllocator());
17✔
342
        }
194✔
343
        {
344
            JSONCharValue json_value;
177✔
345
            if (!(TDataDoc<int32_t>(_rData.data.componentType, _rData.doc) >> json_value)) return false;
×
346
            _JsonValue.AddMember("componentType", json_value, _rData.doc->GetAllocator());
347
        }
17✔
348
        return true;
17✔
349
    }
17✔
350

12✔
351
    bool operator<<(std::shared_ptr<SAccessorSparseIndices>& _pData, const JSONCharValue& _JsonValue)
352
    {
12✔
353
        std::shared_ptr<SAccessorSparseIndices> data_ptr = !!_pData ? _pData : std::make_shared<SAccessorSparseIndices>();
12✔
354
        if (!(*data_ptr << _JsonValue)) return false;
12✔
355
        _pData = data_ptr;
12✔
356
        return true;
12✔
357
    }
12✔
358

28✔
359
    bool operator>>(const TDataDoc<std::shared_ptr<SAccessorSparseIndices>>& _rData, JSONCharValue& _JsonValue)
360
    {
16✔
361
        if (!_rData.data) return false;
×
362
        return (TDataDoc<SAccessorSparseIndices>(*_rData.data, _rData.doc) >> _JsonValue);
363
    }
12✔
364

12✔
365
    bool operator<<(std::vector<std::shared_ptr<SAccessorSparseIndices>>& _vDatas, const JSONCharValue& _JsonValue)
12✔
366
    {
17✔
367
        return operator<< <std::shared_ptr<SAccessorSparseIndices>>(_vDatas, _JsonValue);
368
    }
17✔
369

17✔
370
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAccessorSparseIndices>>>& _rData, JSONCharValue& _JsonValue)
17✔
371
    {
17✔
372
        return operator>> <std::shared_ptr<SAccessorSparseIndices>>(_rData, _JsonValue);
17✔
373
    }
17✔
374

34✔
375
    bool operator<<(SAccessorSparse& _rData, const JSONCharValue& _JsonValue)
376
    {
17✔
377
        {
×
378
            SGlTFProperty& super_ptr = _rData;
379
            if (!(super_ptr << _JsonValue)) return false;
17✔
380
        }
17✔
381
        if (_JsonValue.HasMember("count") && _JsonValue["count"].IsInt())
17✔
382
        {
4✔
383
            _rData.count = _JsonValue["count"].GetInt();
384
        }
4✔
385
        if (_JsonValue.HasMember("indices") && _JsonValue["indices"].IsObject())
4✔
386
        {
4✔
387
            if (!(_rData.indices << _JsonValue["indices"])) return false;
4✔
388
        }
4✔
389
        if (_JsonValue.HasMember("values") && _JsonValue["values"].IsObject())
4✔
390
        {
8✔
391
            if (!(_rData.values << _JsonValue["values"])) return false;
392
        }
4✔
393
        _rData.schemaType = "accessor.sparse.schema.json";
×
394
        return true;
395
    }
4✔
396

4✔
397
    bool operator>>(const TDataDoc<SAccessorSparse>& _rData, JSONCharValue& _JsonValue)
4✔
398
    {
13✔
399
        if (!_rData.doc) return false;
400
        _JsonValue.SetObject();
13✔
401
        {
13✔
402
            const SGlTFProperty& super_ptr = _rData.data;
13✔
403
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
13✔
404
        }
13✔
405
        {
13✔
406
            JSONCharValue json_value;
41✔
407
            if (!(TDataDoc<int32_t>(_rData.data.count, _rData.doc) >> json_value)) return false;
408
            _JsonValue.AddMember("count", json_value, _rData.doc->GetAllocator());
28✔
409
        }
×
410
        if (!!_rData.data.indices)
411
        {
13✔
412
            JSONCharValue json_value;
13✔
413
            if (!(TDataDoc<SAccessorSparseIndices>(*_rData.data.indices, _rData.doc) >> json_value)) return false;
13✔
414
            _JsonValue.AddMember("indices", json_value, _rData.doc->GetAllocator());
4✔
415
        }
416
        if (!!_rData.data.values)
4✔
417
        {
4✔
418
            JSONCharValue json_value;
4✔
419
            if (!(TDataDoc<SAccessorSparseValues>(*_rData.data.values, _rData.doc) >> json_value)) return false;
4✔
420
            _JsonValue.AddMember("values", json_value, _rData.doc->GetAllocator());
4✔
421
        }
4✔
422
        return true;
8✔
423
    }
424

4✔
425
    bool operator<<(std::shared_ptr<SAccessorSparse>& _pData, const JSONCharValue& _JsonValue)
×
426
    {
427
        std::shared_ptr<SAccessorSparse> data_ptr = !!_pData ? _pData : std::make_shared<SAccessorSparse>();
4✔
428
        if (!(*data_ptr << _JsonValue)) return false;
4✔
429
        _pData = data_ptr;
4✔
430
        return true;
1,635✔
431
    }
432

1,635✔
433
    bool operator>>(const TDataDoc<std::shared_ptr<SAccessorSparse>>& _rData, JSONCharValue& _JsonValue)
1,635✔
434
    {
1,635✔
435
        if (!_rData.data) return false;
1,635✔
436
        return (TDataDoc<SAccessorSparse>(*_rData.data, _rData.doc) >> _JsonValue);
1,635✔
437
    }
1,635✔
438

6,660✔
439
    bool operator<<(std::vector<std::shared_ptr<SAccessorSparse>>& _vDatas, const JSONCharValue& _JsonValue)
440
    {
5,025✔
441
        return operator<< <std::shared_ptr<SAccessorSparse>>(_vDatas, _JsonValue);
×
442
    }
443

1,635✔
444
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAccessorSparse>>>& _rData, JSONCharValue& _JsonValue)
1,635✔
445
    {
1,635✔
446
        return operator>> <std::shared_ptr<SAccessorSparse>>(_rData, _JsonValue);
17✔
447
    }
448

17✔
449
    bool operator<<(SAccessorSparseValues& _rData, const JSONCharValue& _JsonValue)
17✔
450
    {
17✔
451
        {
17✔
452
            SGlTFProperty& super_ptr = _rData;
17✔
453
            if (!(super_ptr << _JsonValue)) return false;
17✔
454
        }
638✔
455
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
456
        {
621✔
457
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
×
458
        }
459
        if (_JsonValue.HasMember("byteOffset") && _JsonValue["byteOffset"].IsInt())
17✔
460
        {
17✔
461
            _rData.byteOffset = _JsonValue["byteOffset"].GetInt();
17✔
462
        }
×
463
        _rData.schemaType = "accessor.sparse.values.schema.json";
464
        return true;
×
465
    }
×
466

×
467
    bool operator>>(const TDataDoc<SAccessorSparseValues>& _rData, JSONCharValue& _JsonValue)
×
468
    {
×
469
        if (!_rData.doc) return false;
×
470
        _JsonValue.SetObject();
×
471
        {
472
            const SGlTFProperty& super_ptr = _rData.data;
×
473
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
474
        }
475
        if (!!_rData.data.bufferView)
×
476
        {
×
477
            JSONCharValue json_value;
478
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
×
479
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
480
        }
×
481
        {
×
482
            JSONCharValue json_value;
×
483
            if (!(TDataDoc<int32_t>(_rData.data.byteOffset, _rData.doc) >> json_value)) return false;
×
484
            _JsonValue.AddMember("byteOffset", json_value, _rData.doc->GetAllocator());
×
485
        }
×
486
        return true;
×
487
    }
488

×
489
    bool operator<<(std::shared_ptr<SAccessorSparseValues>& _pData, const JSONCharValue& _JsonValue)
×
490
    {
491
        std::shared_ptr<SAccessorSparseValues> data_ptr = !!_pData ? _pData : std::make_shared<SAccessorSparseValues>();
×
492
        if (!(*data_ptr << _JsonValue)) return false;
×
493
        _pData = data_ptr;
494
        return true;
×
495
    }
496

×
497
    bool operator>>(const TDataDoc<std::shared_ptr<SAccessorSparseValues>>& _rData, JSONCharValue& _JsonValue)
×
498
    {
×
499
        if (!_rData.data) return false;
×
500
        return (TDataDoc<SAccessorSparseValues>(*_rData.data, _rData.doc) >> _JsonValue);
×
501
    }
×
502

×
503
    bool operator<<(std::vector<std::shared_ptr<SAccessorSparseValues>>& _vDatas, const JSONCharValue& _JsonValue)
504
    {
×
505
        return operator<< <std::shared_ptr<SAccessorSparseValues>>(_vDatas, _JsonValue);
×
506
    }
507

×
508
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAccessorSparseValues>>>& _rData, JSONCharValue& _JsonValue)
×
509
    {
510
        return operator>> <std::shared_ptr<SAccessorSparseValues>>(_rData, _JsonValue);
4✔
511
    }
512

4✔
513
    bool operator<<(SAnimationChannel& _rData, const JSONCharValue& _JsonValue)
4✔
514
    {
4✔
515
        {
4✔
516
            SGlTFProperty& super_ptr = _rData;
4✔
517
            if (!(super_ptr << _JsonValue)) return false;
4✔
518
        }
388✔
519
        if (_JsonValue.HasMember("sampler") && _JsonValue["sampler"].IsInt())
520
        {
384✔
521
            if (!(_rData.sampler << _JsonValue["sampler"])) return false;
×
522
        }
523
        if (_JsonValue.HasMember("target") && _JsonValue["target"].IsObject())
4✔
524
        {
4✔
525
            if (!(_rData.target << _JsonValue["target"])) return false;
4✔
526
        }
×
527
        _rData.schemaType = "animation.channel.schema.json";
528
        return true;
×
529
    }
×
530

×
531
    bool operator>>(const TDataDoc<SAnimationChannel>& _rData, JSONCharValue& _JsonValue)
×
532
    {
×
533
        if (!_rData.doc) return false;
×
534
        _JsonValue.SetObject();
×
535
        {
536
            const SGlTFProperty& super_ptr = _rData.data;
×
537
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
538
        }
539
        if (!!_rData.data.sampler)
×
540
        {
×
541
            JSONCharValue json_value;
542
            if (!(TDataDoc<SGlTFId>(*_rData.data.sampler, _rData.doc) >> json_value)) return false;
4✔
543
            _JsonValue.AddMember("sampler", json_value, _rData.doc->GetAllocator());
544
        }
4✔
545
        if (!!_rData.data.target)
4✔
546
        {
4✔
547
            JSONCharValue json_value;
4✔
548
            if (!(TDataDoc<SAnimationChannelTarget>(*_rData.data.target, _rData.doc) >> json_value)) return false;
4✔
549
            _JsonValue.AddMember("target", json_value, _rData.doc->GetAllocator());
4✔
550
        }
388✔
551
        return true;
552
    }
384✔
553

×
554
    bool operator<<(std::shared_ptr<SAnimationChannel>& _pData, const JSONCharValue& _JsonValue)
555
    {
4✔
556
        std::shared_ptr<SAnimationChannel> data_ptr = !!_pData ? _pData : std::make_shared<SAnimationChannel>();
4✔
557
        if (!(*data_ptr << _JsonValue)) return false;
4✔
558
        _pData = data_ptr;
×
559
        return true;
560
    }
×
561

×
562
    bool operator>>(const TDataDoc<std::shared_ptr<SAnimationChannel>>& _rData, JSONCharValue& _JsonValue)
×
563
    {
×
564
        if (!_rData.data) return false;
×
565
        return (TDataDoc<SAnimationChannel>(*_rData.data, _rData.doc) >> _JsonValue);
×
566
    }
×
567

568
    bool operator<<(std::vector<std::shared_ptr<SAnimationChannel>>& _vDatas, const JSONCharValue& _JsonValue)
×
569
    {
×
570
        return operator<< <std::shared_ptr<SAnimationChannel>>(_vDatas, _JsonValue);
571
    }
×
572

×
573
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAnimationChannel>>>& _rData, JSONCharValue& _JsonValue)
574
    {
×
575
        return operator>> <std::shared_ptr<SAnimationChannel>>(_rData, _JsonValue);
576
    }
×
577

×
578
    bool operator<<(SAnimationChannelTarget& _rData, const JSONCharValue& _JsonValue)
×
579
    {
×
580
        {
×
581
            SGlTFProperty& super_ptr = _rData;
×
582
            if (!(super_ptr << _JsonValue)) return false;
×
583
        }
584
        if (_JsonValue.HasMember("node") && _JsonValue["node"].IsInt())
×
585
        {
×
586
            if (!(_rData.node << _JsonValue["node"])) return false;
587
        }
×
588
        if (_JsonValue.HasMember("path") && _JsonValue["path"].IsString())
×
589
        {
590
            _rData.path = _JsonValue["path"].GetString();
17✔
591
        }
592
        _rData.schemaType = "animation.channel.target.schema.json";
17✔
593
        return true;
17✔
594
    }
17✔
595

17✔
596
    bool operator>>(const TDataDoc<SAnimationChannelTarget>& _rData, JSONCharValue& _JsonValue)
17✔
597
    {
17✔
598
        if (!_rData.doc) return false;
34✔
599
        _JsonValue.SetObject();
600
        {
17✔
601
            const SGlTFProperty& super_ptr = _rData.data;
×
602
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
603
        }
17✔
604
        if (!!_rData.data.node)
17✔
605
        {
17✔
606
            JSONCharValue json_value;
17✔
607
            if (!(TDataDoc<SGlTFId>(*_rData.data.node, _rData.doc) >> json_value)) return false;
608
            _JsonValue.AddMember("node", json_value, _rData.doc->GetAllocator());
17✔
609
        }
17✔
610
        {
17✔
611
            JSONCharValue json_value;
17✔
612
            if (!(TDataDoc<std::string>(_rData.data.path, _rData.doc) >> json_value)) return false;
17✔
613
            _JsonValue.AddMember("path", json_value, _rData.doc->GetAllocator());
17✔
614
        }
141✔
615
        return true;
616
    }
124✔
617

×
618
    bool operator<<(std::shared_ptr<SAnimationChannelTarget>& _pData, const JSONCharValue& _JsonValue)
619
    {
17✔
620
        std::shared_ptr<SAnimationChannelTarget> data_ptr = !!_pData ? _pData : std::make_shared<SAnimationChannelTarget>();
17✔
621
        if (!(*data_ptr << _JsonValue)) return false;
17✔
622
        _pData = data_ptr;
×
623
        return true;
624
    }
×
625

×
626
    bool operator>>(const TDataDoc<std::shared_ptr<SAnimationChannelTarget>>& _rData, JSONCharValue& _JsonValue)
×
627
    {
×
628
        if (!_rData.data) return false;
×
629
        return (TDataDoc<SAnimationChannelTarget>(*_rData.data, _rData.doc) >> _JsonValue);
×
630
    }
×
631

632
    bool operator<<(std::vector<std::shared_ptr<SAnimationChannelTarget>>& _vDatas, const JSONCharValue& _JsonValue)
×
633
    {
×
634
        return operator<< <std::shared_ptr<SAnimationChannelTarget>>(_vDatas, _JsonValue);
635
    }
×
636

×
637
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAnimationChannelTarget>>>& _rData, JSONCharValue& _JsonValue)
638
    {
×
639
        return operator>> <std::shared_ptr<SAnimationChannelTarget>>(_rData, _JsonValue);
640
    }
×
641

×
642
    bool operator<<(SAnimationSampler& _rData, const JSONCharValue& _JsonValue)
×
643
    {
×
644
        {
×
645
            SGlTFProperty& super_ptr = _rData;
×
646
            if (!(super_ptr << _JsonValue)) return false;
×
647
        }
648
        if (_JsonValue.HasMember("input") && _JsonValue["input"].IsInt())
×
649
        {
×
650
            if (!(_rData.input << _JsonValue["input"])) return false;
651
        }
×
652
        if (_JsonValue.HasMember("interpolation") && _JsonValue["interpolation"].IsString())
×
653
        {
654
            _rData.interpolation = _JsonValue["interpolation"].GetString();
4✔
655
        }
656
        if (_JsonValue.HasMember("output") && _JsonValue["output"].IsInt())
4✔
657
        {
4✔
658
            if (!(_rData.output << _JsonValue["output"])) return false;
4✔
659
        }
4✔
660
        _rData.schemaType = "animation.sampler.schema.json";
4✔
661
        return true;
4✔
662
    }
9✔
663

664
    bool operator>>(const TDataDoc<SAnimationSampler>& _rData, JSONCharValue& _JsonValue)
5✔
665
    {
×
666
        if (!_rData.doc) return false;
667
        _JsonValue.SetObject();
4✔
668
        {
4✔
669
            const SGlTFProperty& super_ptr = _rData.data;
4✔
670
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
671
        }
672
        if (!!_rData.data.input)
×
673
        {
×
674
            JSONCharValue json_value;
×
675
            if (!(TDataDoc<SGlTFId>(*_rData.data.input, _rData.doc) >> json_value)) return false;
×
676
            _JsonValue.AddMember("input", json_value, _rData.doc->GetAllocator());
×
677
        }
×
678
        {
×
679
            JSONCharValue json_value;
680
            if (!(TDataDoc<std::string>(_rData.data.interpolation, _rData.doc) >> json_value)) return false;
×
681
            _JsonValue.AddMember("interpolation", json_value, _rData.doc->GetAllocator());
×
682
        }
683
        if (!!_rData.data.output)
×
684
        {
×
685
            JSONCharValue json_value;
686
            if (!(TDataDoc<SGlTFId>(*_rData.data.output, _rData.doc) >> json_value)) return false;
×
687
            _JsonValue.AddMember("output", json_value, _rData.doc->GetAllocator());
688
        }
×
689
        return true;
×
690
    }
×
691

×
692
    bool operator<<(std::shared_ptr<SAnimationSampler>& _pData, const JSONCharValue& _JsonValue)
×
693
    {
×
694
        std::shared_ptr<SAnimationSampler> data_ptr = !!_pData ? _pData : std::make_shared<SAnimationSampler>();
×
695
        if (!(*data_ptr << _JsonValue)) return false;
696
        _pData = data_ptr;
×
697
        return true;
×
698
    }
699

×
700
    bool operator>>(const TDataDoc<std::shared_ptr<SAnimationSampler>>& _rData, JSONCharValue& _JsonValue)
×
701
    {
702
        if (!_rData.data) return false;
×
703
        return (TDataDoc<SAnimationSampler>(*_rData.data, _rData.doc) >> _JsonValue);
704
    }
×
705

×
706
    bool operator<<(std::vector<std::shared_ptr<SAnimationSampler>>& _vDatas, const JSONCharValue& _JsonValue)
×
707
    {
×
708
        return operator<< <std::shared_ptr<SAnimationSampler>>(_vDatas, _JsonValue);
×
709
    }
×
710

×
711
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAnimationSampler>>>& _rData, JSONCharValue& _JsonValue)
712
    {
×
713
        return operator>> <std::shared_ptr<SAnimationSampler>>(_rData, _JsonValue);
×
714
    }
715

×
716
    bool operator<<(SAnimation& _rData, const JSONCharValue& _JsonValue)
×
717
    {
718
        {
×
719
            SGlTFChildofRootProperty& super_ptr = _rData;
720
            if (!(super_ptr << _JsonValue)) return false;
×
721
        }
×
722
        if (_JsonValue.HasMember("channels") && _JsonValue["channels"].IsArray())
×
723
        {
×
724
            if (!(_rData.channels << _JsonValue["channels"])) return false;
×
725
        }
×
726
        if (_JsonValue.HasMember("samplers") && _JsonValue["samplers"].IsArray())
×
727
        {
728
            if (!(_rData.samplers << _JsonValue["samplers"])) return false;
×
729
        }
×
730
        _rData.schemaType = "animation.schema.json";
731
        return true;
×
732
    }
×
733

734
    bool operator>>(const TDataDoc<SAnimation>& _rData, JSONCharValue& _JsonValue)
×
735
    {
736
        if (!_rData.doc) return false;
×
737
        _JsonValue.SetObject();
×
738
        {
×
739
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
740
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
741
        }
×
742
        if (!_rData.data.channels.empty())
×
743
        {
744
            JSONCharValue json_value;
×
745
            if (!(TDataDoc<std::vector<std::shared_ptr<SAnimationChannel>>>(_rData.data.channels, _rData.doc) >> json_value)) return false;
×
746
            _JsonValue.AddMember("channels", json_value, _rData.doc->GetAllocator());
747
        }
×
748
        if (!_rData.data.samplers.empty())
×
749
        {
750
            JSONCharValue json_value;
×
751
            if (!(TDataDoc<std::vector<std::shared_ptr<SAnimationSampler>>>(_rData.data.samplers, _rData.doc) >> json_value)) return false;
752
            _JsonValue.AddMember("samplers", json_value, _rData.doc->GetAllocator());
×
753
        }
×
754
        return true;
×
755
    }
×
756

×
757
    bool operator<<(std::shared_ptr<SAnimation>& _pData, const JSONCharValue& _JsonValue)
×
758
    {
×
759
        std::shared_ptr<SAnimation> data_ptr = !!_pData ? _pData : std::make_shared<SAnimation>();
760
        if (!(*data_ptr << _JsonValue)) return false;
×
761
        _pData = data_ptr;
×
762
        return true;
763
    }
×
764

×
765
    bool operator>>(const TDataDoc<std::shared_ptr<SAnimation>>& _rData, JSONCharValue& _JsonValue)
766
    {
×
767
        if (!_rData.data) return false;
768
        return (TDataDoc<SAnimation>(*_rData.data, _rData.doc) >> _JsonValue);
×
769
    }
×
770

×
771
    bool operator<<(std::vector<std::shared_ptr<SAnimation>>& _vDatas, const JSONCharValue& _JsonValue)
×
772
    {
×
773
        return operator<< <std::shared_ptr<SAnimation>>(_vDatas, _JsonValue);
×
774
    }
×
775

776
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAnimation>>>& _rData, JSONCharValue& _JsonValue)
×
777
    {
×
778
        return operator>> <std::shared_ptr<SAnimation>>(_rData, _JsonValue);
779
    }
×
780

×
781
    bool operator<<(SAsset& _rData, const JSONCharValue& _JsonValue)
782
    {
×
783
        {
784
            SGlTFProperty& super_ptr = _rData;
×
785
            if (!(super_ptr << _JsonValue)) return false;
×
786
        }
×
787
        if (_JsonValue.HasMember("copyright") && _JsonValue["copyright"].IsString())
×
788
        {
×
789
            _rData.copyright = _JsonValue["copyright"].GetString();
×
790
        }
×
791
        if (_JsonValue.HasMember("generator") && _JsonValue["generator"].IsString())
792
        {
×
793
            _rData.generator = _JsonValue["generator"].GetString();
×
794
        }
795
        if (_JsonValue.HasMember("version") && _JsonValue["version"].IsString())
×
796
        {
×
797
            _rData.version = _JsonValue["version"].GetString();
798
        }
×
799
        if (_JsonValue.HasMember("minVersion") && _JsonValue["minVersion"].IsString())
800
        {
×
801
            _rData.minVersion = _JsonValue["minVersion"].GetString();
×
802
        }
×
803
        _rData.schemaType = "asset.schema.json";
×
804
        return true;
×
805
    }
×
806

×
807
    bool operator>>(const TDataDoc<SAsset>& _rData, JSONCharValue& _JsonValue)
808
    {
×
809
        if (!_rData.doc) return false;
×
810
        _JsonValue.SetObject();
811
        {
×
812
            const SGlTFProperty& super_ptr = _rData.data;
×
813
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
814
        }
×
815
        {
816
            JSONCharValue json_value;
×
817
            if (!(TDataDoc<std::string>(_rData.data.copyright, _rData.doc) >> json_value)) return false;
×
818
            _JsonValue.AddMember("copyright", json_value, _rData.doc->GetAllocator());
×
819
        }
×
820
        {
×
821
            JSONCharValue json_value;
×
822
            if (!(TDataDoc<std::string>(_rData.data.generator, _rData.doc) >> json_value)) return false;
×
823
            _JsonValue.AddMember("generator", json_value, _rData.doc->GetAllocator());
824
        }
×
825
        {
×
826
            JSONCharValue json_value;
827
            if (!(TDataDoc<std::string>(_rData.data.version, _rData.doc) >> json_value)) return false;
×
828
            _JsonValue.AddMember("version", json_value, _rData.doc->GetAllocator());
×
829
        }
830
        {
×
831
            JSONCharValue json_value;
832
            if (!(TDataDoc<std::string>(_rData.data.minVersion, _rData.doc) >> json_value)) return false;
×
833
            _JsonValue.AddMember("minVersion", json_value, _rData.doc->GetAllocator());
×
834
        }
×
835
        return true;
×
836
    }
×
837

×
838
    bool operator<<(std::shared_ptr<SAsset>& _pData, const JSONCharValue& _JsonValue)
×
839
    {
840
        std::shared_ptr<SAsset> data_ptr = !!_pData ? _pData : std::make_shared<SAsset>();
×
841
        if (!(*data_ptr << _JsonValue)) return false;
×
842
        _pData = data_ptr;
843
        return true;
×
844
    }
×
845

846
    bool operator>>(const TDataDoc<std::shared_ptr<SAsset>>& _rData, JSONCharValue& _JsonValue)
×
847
    {
848
        if (!_rData.data) return false;
×
849
        return (TDataDoc<SAsset>(*_rData.data, _rData.doc) >> _JsonValue);
×
850
    }
×
851

×
852
    bool operator<<(std::vector<std::shared_ptr<SAsset>>& _vDatas, const JSONCharValue& _JsonValue)
×
853
    {
×
854
        return operator<< <std::shared_ptr<SAsset>>(_vDatas, _JsonValue);
×
855
    }
856

×
857
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAsset>>>& _rData, JSONCharValue& _JsonValue)
×
858
    {
859
        return operator>> <std::shared_ptr<SAsset>>(_rData, _JsonValue);
×
860
    }
×
861

862
    bool operator<<(SBuffer& _rData, const JSONCharValue& _JsonValue)
×
863
    {
864
        {
×
865
            SGlTFChildofRootProperty& super_ptr = _rData;
×
866
            if (!(super_ptr << _JsonValue)) return false;
×
867
        }
×
868
        if (_JsonValue.HasMember("uri") && _JsonValue["uri"].IsString())
×
869
        {
×
870
            _rData.uri = _JsonValue["uri"].GetString();
×
871
        }
872
        if (_JsonValue.HasMember("byteLength") && _JsonValue["byteLength"].IsInt())
×
873
        {
×
874
            _rData.byteLength = _JsonValue["byteLength"].GetInt();
875
        }
×
876
        _rData.schemaType = "buffer.schema.json";
×
877
        return true;
878
    }
×
879

880
    bool operator>>(const TDataDoc<SBuffer>& _rData, JSONCharValue& _JsonValue)
×
881
    {
×
882
        if (!_rData.doc) return false;
×
883
        _JsonValue.SetObject();
×
884
        {
×
885
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
886
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
887
        }
888
        {
×
889
            JSONCharValue json_value;
×
890
            if (!(TDataDoc<std::string>(_rData.data.uri, _rData.doc) >> json_value)) return false;
891
            _JsonValue.AddMember("uri", json_value, _rData.doc->GetAllocator());
×
892
        }
×
893
        {
894
            JSONCharValue json_value;
×
895
            if (!(TDataDoc<int32_t>(_rData.data.byteLength, _rData.doc) >> json_value)) return false;
896
            _JsonValue.AddMember("byteLength", json_value, _rData.doc->GetAllocator());
×
897
        }
×
898
        return true;
×
899
    }
×
900

×
901
    bool operator<<(std::shared_ptr<SBuffer>& _pData, const JSONCharValue& _JsonValue)
×
902
    {
×
903
        std::shared_ptr<SBuffer> data_ptr = !!_pData ? _pData : std::make_shared<SBuffer>();
904
        if (!(*data_ptr << _JsonValue)) return false;
×
905
        _pData = data_ptr;
×
906
        return true;
907
    }
×
908

×
909
    bool operator>>(const TDataDoc<std::shared_ptr<SBuffer>>& _rData, JSONCharValue& _JsonValue)
910
    {
×
911
        if (!_rData.data) return false;
912
        return (TDataDoc<SBuffer>(*_rData.data, _rData.doc) >> _JsonValue);
×
913
    }
×
914

×
915
    bool operator<<(std::vector<std::shared_ptr<SBuffer>>& _vDatas, const JSONCharValue& _JsonValue)
×
916
    {
×
917
        return operator<< <std::shared_ptr<SBuffer>>(_vDatas, _JsonValue);
×
918
    }
×
919

920
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SBuffer>>>& _rData, JSONCharValue& _JsonValue)
×
921
    {
×
922
        return operator>> <std::shared_ptr<SBuffer>>(_rData, _JsonValue);
923
    }
×
924

×
925
    bool operator<<(SBufferView& _rData, const JSONCharValue& _JsonValue)
926
    {
×
927
        {
928
            SGlTFChildofRootProperty& super_ptr = _rData;
×
929
            if (!(super_ptr << _JsonValue)) return false;
×
930
        }
×
931
        if (_JsonValue.HasMember("buffer") && _JsonValue["buffer"].IsInt())
×
932
        {
×
933
            if (!(_rData.buffer << _JsonValue["buffer"])) return false;
×
934
        }
×
935
        if (_JsonValue.HasMember("byteOffset") && _JsonValue["byteOffset"].IsInt())
936
        {
×
937
            _rData.byteOffset = _JsonValue["byteOffset"].GetInt();
×
938
        }
939
        if (_JsonValue.HasMember("byteLength") && _JsonValue["byteLength"].IsInt())
×
940
        {
×
941
            _rData.byteLength = _JsonValue["byteLength"].GetInt();
942
        }
×
943
        if (_JsonValue.HasMember("byteStride") && _JsonValue["byteStride"].IsInt())
944
        {
×
945
            _rData.byteStride = _JsonValue["byteStride"].GetInt();
×
946
        }
×
947
        if (_JsonValue.HasMember("target") && _JsonValue["target"].IsInt())
×
948
        {
×
949
            _rData.target = _JsonValue["target"].GetInt();
×
950
        }
×
951
        _rData.schemaType = "bufferView.schema.json";
952
        return true;
×
953
    }
×
954

955
    bool operator>>(const TDataDoc<SBufferView>& _rData, JSONCharValue& _JsonValue)
×
956
    {
×
957
        if (!_rData.doc) return false;
958
        _JsonValue.SetObject();
×
959
        {
960
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
961
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
962
        }
×
963
        if (!!_rData.data.buffer)
×
964
        {
×
965
            JSONCharValue json_value;
×
966
            if (!(TDataDoc<SGlTFId>(*_rData.data.buffer, _rData.doc) >> json_value)) return false;
×
967
            _JsonValue.AddMember("buffer", json_value, _rData.doc->GetAllocator());
968
        }
×
969
        {
×
970
            JSONCharValue json_value;
971
            if (!(TDataDoc<int32_t>(_rData.data.byteOffset, _rData.doc) >> json_value)) return false;
×
972
            _JsonValue.AddMember("byteOffset", json_value, _rData.doc->GetAllocator());
×
973
        }
974
        {
×
975
            JSONCharValue json_value;
976
            if (!(TDataDoc<int32_t>(_rData.data.byteLength, _rData.doc) >> json_value)) return false;
×
977
            _JsonValue.AddMember("byteLength", json_value, _rData.doc->GetAllocator());
×
978
        }
×
979
        {
×
980
            JSONCharValue json_value;
×
981
            if (!(TDataDoc<int32_t>(_rData.data.byteStride, _rData.doc) >> json_value)) return false;
×
982
            _JsonValue.AddMember("byteStride", json_value, _rData.doc->GetAllocator());
×
983
        }
984
        {
×
985
            JSONCharValue json_value;
×
986
            if (!(TDataDoc<int32_t>(_rData.data.target, _rData.doc) >> json_value)) return false;
987
            _JsonValue.AddMember("target", json_value, _rData.doc->GetAllocator());
×
988
        }
×
989
        return true;
990
    }
×
991

992
    bool operator<<(std::shared_ptr<SBufferView>& _pData, const JSONCharValue& _JsonValue)
×
993
    {
×
994
        std::shared_ptr<SBufferView> data_ptr = !!_pData ? _pData : std::make_shared<SBufferView>();
×
995
        if (!(*data_ptr << _JsonValue)) return false;
×
996
        _pData = data_ptr;
×
997
        return true;
×
998
    }
×
999

1000
    bool operator>>(const TDataDoc<std::shared_ptr<SBufferView>>& _rData, JSONCharValue& _JsonValue)
×
1001
    {
×
1002
        if (!_rData.data) return false;
1003
        return (TDataDoc<SBufferView>(*_rData.data, _rData.doc) >> _JsonValue);
×
1004
    }
×
1005

1006
    bool operator<<(std::vector<std::shared_ptr<SBufferView>>& _vDatas, const JSONCharValue& _JsonValue)
×
1007
    {
1008
        return operator<< <std::shared_ptr<SBufferView>>(_vDatas, _JsonValue);
×
1009
    }
×
1010

×
1011
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SBufferView>>>& _rData, JSONCharValue& _JsonValue)
×
1012
    {
×
1013
        return operator>> <std::shared_ptr<SBufferView>>(_rData, _JsonValue);
×
1014
    }
×
1015

1016
    bool operator<<(SCameraOrthographic& _rData, const JSONCharValue& _JsonValue)
×
1017
    {
×
1018
        {
1019
            SGlTFProperty& super_ptr = _rData;
×
1020
            if (!(super_ptr << _JsonValue)) return false;
×
1021
        }
1022
        if (_JsonValue.HasMember("xmag") && _JsonValue["xmag"].IsNumber())
×
1023
        {
1024
            _rData.xmag = _JsonValue["xmag"].GetFloat();
×
1025
        }
×
1026
        if (_JsonValue.HasMember("ymag") && _JsonValue["ymag"].IsNumber())
×
1027
        {
×
1028
            _rData.ymag = _JsonValue["ymag"].GetFloat();
×
1029
        }
×
1030
        if (_JsonValue.HasMember("zfar") && _JsonValue["zfar"].IsNumber())
×
1031
        {
1032
            _rData.zfar = _JsonValue["zfar"].GetFloat();
×
1033
        }
×
1034
        if (_JsonValue.HasMember("znear") && _JsonValue["znear"].IsNumber())
1035
        {
×
1036
            _rData.znear = _JsonValue["znear"].GetFloat();
×
1037
        }
1038
        _rData.schemaType = "camera.orthographic.schema.json";
×
1039
        return true;
1040
    }
×
1041

×
1042
    bool operator>>(const TDataDoc<SCameraOrthographic>& _rData, JSONCharValue& _JsonValue)
×
1043
    {
×
1044
        if (!_rData.doc) return false;
×
1045
        _JsonValue.SetObject();
×
1046
        {
×
1047
            const SGlTFProperty& super_ptr = _rData.data;
1048
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
1049
        }
×
1050
        {
1051
            JSONCharValue json_value;
×
1052
            if (!(TDataDoc<float>(_rData.data.xmag, _rData.doc) >> json_value)) return false;
×
1053
            _JsonValue.AddMember("xmag", json_value, _rData.doc->GetAllocator());
1054
        }
×
1055
        {
1056
            JSONCharValue json_value;
×
1057
            if (!(TDataDoc<float>(_rData.data.ymag, _rData.doc) >> json_value)) return false;
×
1058
            _JsonValue.AddMember("ymag", json_value, _rData.doc->GetAllocator());
×
1059
        }
×
1060
        {
×
1061
            JSONCharValue json_value;
×
1062
            if (!(TDataDoc<float>(_rData.data.zfar, _rData.doc) >> json_value)) return false;
×
1063
            _JsonValue.AddMember("zfar", json_value, _rData.doc->GetAllocator());
1064
        }
×
1065
        {
×
1066
            JSONCharValue json_value;
1067
            if (!(TDataDoc<float>(_rData.data.znear, _rData.doc) >> json_value)) return false;
×
1068
            _JsonValue.AddMember("znear", json_value, _rData.doc->GetAllocator());
×
1069
        }
1070
        return true;
×
1071
    }
1072

×
1073
    bool operator<<(std::shared_ptr<SCameraOrthographic>& _pData, const JSONCharValue& _JsonValue)
×
1074
    {
×
1075
        std::shared_ptr<SCameraOrthographic> data_ptr = !!_pData ? _pData : std::make_shared<SCameraOrthographic>();
×
1076
        if (!(*data_ptr << _JsonValue)) return false;
×
1077
        _pData = data_ptr;
×
1078
        return true;
×
1079
    }
1080

×
1081
    bool operator>>(const TDataDoc<std::shared_ptr<SCameraOrthographic>>& _rData, JSONCharValue& _JsonValue)
×
1082
    {
1083
        if (!_rData.data) return false;
×
1084
        return (TDataDoc<SCameraOrthographic>(*_rData.data, _rData.doc) >> _JsonValue);
×
1085
    }
1086

×
1087
    bool operator<<(std::vector<std::shared_ptr<SCameraOrthographic>>& _vDatas, const JSONCharValue& _JsonValue)
1088
    {
×
1089
        return operator<< <std::shared_ptr<SCameraOrthographic>>(_vDatas, _JsonValue);
×
1090
    }
×
1091

×
1092
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SCameraOrthographic>>>& _rData, JSONCharValue& _JsonValue)
×
1093
    {
×
1094
        return operator>> <std::shared_ptr<SCameraOrthographic>>(_rData, _JsonValue);
×
1095
    }
1096

×
1097
    bool operator<<(SCameraPerspective& _rData, const JSONCharValue& _JsonValue)
×
1098
    {
1099
        {
×
1100
            SGlTFProperty& super_ptr = _rData;
×
1101
            if (!(super_ptr << _JsonValue)) return false;
1102
        }
×
1103
        if (_JsonValue.HasMember("aspectRatio") && _JsonValue["aspectRatio"].IsNumber())
1104
        {
×
1105
            _rData.aspectRatio = _JsonValue["aspectRatio"].GetFloat();
×
1106
        }
×
1107
        if (_JsonValue.HasMember("yfov") && _JsonValue["yfov"].IsNumber())
×
1108
        {
×
1109
            _rData.yfov = _JsonValue["yfov"].GetFloat();
×
1110
        }
×
1111
        if (_JsonValue.HasMember("zfar") && _JsonValue["zfar"].IsNumber())
1112
        {
×
1113
            _rData.zfar = _JsonValue["zfar"].GetFloat();
×
1114
        }
1115
        if (_JsonValue.HasMember("znear") && _JsonValue["znear"].IsNumber())
×
1116
        {
×
1117
            _rData.znear = _JsonValue["znear"].GetFloat();
1118
        }
×
1119
        _rData.schemaType = "camera.perspective.schema.json";
1120
        return true;
×
1121
    }
×
1122

×
1123
    bool operator>>(const TDataDoc<SCameraPerspective>& _rData, JSONCharValue& _JsonValue)
×
1124
    {
×
1125
        if (!_rData.doc) return false;
×
1126
        _JsonValue.SetObject();
×
1127
        {
1128
            const SGlTFProperty& super_ptr = _rData.data;
×
1129
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
1130
        }
1131
        {
×
1132
            JSONCharValue json_value;
×
1133
            if (!(TDataDoc<float>(_rData.data.aspectRatio, _rData.doc) >> json_value)) return false;
1134
            _JsonValue.AddMember("aspectRatio", json_value, _rData.doc->GetAllocator());
×
1135
        }
1136
        {
×
1137
            JSONCharValue json_value;
×
1138
            if (!(TDataDoc<float>(_rData.data.yfov, _rData.doc) >> json_value)) return false;
×
1139
            _JsonValue.AddMember("yfov", json_value, _rData.doc->GetAllocator());
×
1140
        }
×
1141
        {
×
1142
            JSONCharValue json_value;
×
1143
            if (!(TDataDoc<float>(_rData.data.zfar, _rData.doc) >> json_value)) return false;
1144
            _JsonValue.AddMember("zfar", json_value, _rData.doc->GetAllocator());
×
1145
        }
×
1146
        {
1147
            JSONCharValue json_value;
×
1148
            if (!(TDataDoc<float>(_rData.data.znear, _rData.doc) >> json_value)) return false;
×
1149
            _JsonValue.AddMember("znear", json_value, _rData.doc->GetAllocator());
1150
        }
×
1151
        return true;
1152
    }
×
1153

×
1154
    bool operator<<(std::shared_ptr<SCameraPerspective>& _pData, const JSONCharValue& _JsonValue)
×
1155
    {
×
1156
        std::shared_ptr<SCameraPerspective> data_ptr = !!_pData ? _pData : std::make_shared<SCameraPerspective>();
×
1157
        if (!(*data_ptr << _JsonValue)) return false;
×
1158
        _pData = data_ptr;
×
1159
        return true;
1160
    }
×
1161

×
1162
    bool operator>>(const TDataDoc<std::shared_ptr<SCameraPerspective>>& _rData, JSONCharValue& _JsonValue)
1163
    {
×
1164
        if (!_rData.data) return false;
×
1165
        return (TDataDoc<SCameraPerspective>(*_rData.data, _rData.doc) >> _JsonValue);
1166
    }
×
1167

1168
    bool operator<<(std::vector<std::shared_ptr<SCameraPerspective>>& _vDatas, const JSONCharValue& _JsonValue)
×
1169
    {
×
1170
        return operator<< <std::shared_ptr<SCameraPerspective>>(_vDatas, _JsonValue);
×
1171
    }
×
1172

×
1173
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SCameraPerspective>>>& _rData, JSONCharValue& _JsonValue)
×
1174
    {
×
1175
        return operator>> <std::shared_ptr<SCameraPerspective>>(_rData, _JsonValue);
1176
    }
×
1177

×
1178
    bool operator<<(SCamera& _rData, const JSONCharValue& _JsonValue)
1179
    {
×
1180
        {
×
1181
            SGlTFChildofRootProperty& super_ptr = _rData;
1182
            if (!(super_ptr << _JsonValue)) return false;
×
1183
        }
1184
        if (_JsonValue.HasMember("orthographic") && _JsonValue["orthographic"].IsObject())
×
1185
        {
×
1186
            if (!(_rData.orthographic << _JsonValue["orthographic"])) return false;
×
1187
        }
×
1188
        if (_JsonValue.HasMember("perspective") && _JsonValue["perspective"].IsObject())
×
1189
        {
×
1190
            if (!(_rData.perspective << _JsonValue["perspective"])) return false;
×
1191
        }
1192
        if (_JsonValue.HasMember("type") && _JsonValue["type"].IsString())
×
1193
        {
×
1194
            _rData.type = _JsonValue["type"].GetString();
1195
        }
×
1196
        _rData.schemaType = "camera.schema.json";
×
1197
        return true;
1198
    }
×
1199

1200
    bool operator>>(const TDataDoc<SCamera>& _rData, JSONCharValue& _JsonValue)
×
1201
    {
×
1202
        if (!_rData.doc) return false;
×
1203
        _JsonValue.SetObject();
×
1204
        {
×
1205
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
1206
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
1207
        }
1208
        if (!!_rData.data.orthographic)
×
1209
        {
×
1210
            JSONCharValue json_value;
1211
            if (!(TDataDoc<SCameraOrthographic>(*_rData.data.orthographic, _rData.doc) >> json_value)) return false;
×
1212
            _JsonValue.AddMember("orthographic", json_value, _rData.doc->GetAllocator());
×
1213
        }
1214
        if (!!_rData.data.perspective)
×
1215
        {
1216
            JSONCharValue json_value;
×
1217
            if (!(TDataDoc<SCameraPerspective>(*_rData.data.perspective, _rData.doc) >> json_value)) return false;
×
1218
            _JsonValue.AddMember("perspective", json_value, _rData.doc->GetAllocator());
×
1219
        }
×
1220
        {
×
1221
            JSONCharValue json_value;
×
1222
            if (!(TDataDoc<std::string>(_rData.data.type, _rData.doc) >> json_value)) return false;
×
1223
            _JsonValue.AddMember("type", json_value, _rData.doc->GetAllocator());
1224
        }
×
1225
        return true;
×
1226
    }
1227

×
1228
    bool operator<<(std::shared_ptr<SCamera>& _pData, const JSONCharValue& _JsonValue)
×
1229
    {
1230
        std::shared_ptr<SCamera> data_ptr = !!_pData ? _pData : std::make_shared<SCamera>();
×
1231
        if (!(*data_ptr << _JsonValue)) return false;
1232
        _pData = data_ptr;
×
1233
        return true;
×
1234
    }
×
1235

×
1236
    bool operator>>(const TDataDoc<std::shared_ptr<SCamera>>& _rData, JSONCharValue& _JsonValue)
×
1237
    {
×
1238
        if (!_rData.data) return false;
×
1239
        return (TDataDoc<SCamera>(*_rData.data, _rData.doc) >> _JsonValue);
1240
    }
×
1241

×
1242
    bool operator<<(std::vector<std::shared_ptr<SCamera>>& _vDatas, const JSONCharValue& _JsonValue)
1243
    {
×
1244
        return operator<< <std::shared_ptr<SCamera>>(_vDatas, _JsonValue);
×
1245
    }
1246

×
1247
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SCamera>>>& _rData, JSONCharValue& _JsonValue)
1248
    {
×
1249
        return operator>> <std::shared_ptr<SCamera>>(_rData, _JsonValue);
×
1250
    }
×
1251

×
1252
    bool operator<<(SExtension& _rData, const JSONCharValue& _JsonValue)
×
1253
    {
×
1254
        // Manual code lines
×
1255
        if (_JsonValue.HasMember("KHR_draco_mesh_compression") && _JsonValue["KHR_draco_mesh_compression"].IsObject())
1256
        {
×
1257
            std::shared_ptr<SKHR_draco_mesh_compressionextension> extension;
×
1258
            if (!(extension << _JsonValue["KHR_draco_mesh_compression"])) return false;
1259
            _rData.properties.insert(std::make_pair("KHR_draco_mesh_compression", extension));
×
1260
        }
×
1261
        if (_JsonValue.HasMember("KHR_lights_punctual") && _JsonValue["KHR_lights_punctual"].IsObject())
1262
        {
×
1263
            const JSONCharValue& json_extension = _JsonValue["KHR_lights_punctual"];
1264
            if (json_extension.HasMember("lights"))
×
1265
            {
×
1266
                std::shared_ptr<SKHR_lights_punctualglTFextension> extension;
×
1267
                if (extension << json_extension)
×
1268
                {
×
1269
                    _rData.properties.insert(std::make_pair("KHR_lights_punctual", extension));
×
1270
                }
×
1271
            }
1272
            if (json_extension.HasMember("light"))
×
1273
            {
×
1274
                std::shared_ptr<SKHR_lights_punctualnodeextension> extension;
1275
                if (extension << json_extension)
×
1276
                {
×
1277
                    _rData.properties.insert(std::make_pair("KHR_lights_punctual", extension));
1278
                }
1279
            }
1280
        }
×
1281
        if (_JsonValue.HasMember("KHR_materials_clearcoat") && _JsonValue["KHR_materials_clearcoat"].IsObject())
1282
        {
×
1283
            std::shared_ptr<SKHR_materials_clearcoatglTFextension> extension;
×
1284
            if (!(extension << _JsonValue["KHR_materials_clearcoat"])) return false;
×
1285
            _rData.properties.insert(std::make_pair("KHR_materials_clearcoat", extension));
1286
        }
×
1287
        if (_JsonValue.HasMember("KHR_materials_emissive_strength") && _JsonValue["KHR_materials_emissive_strength"].IsObject())
×
1288
        {
×
1289
            std::shared_ptr<SKHR_materials_emissive_strengthglTFextension> extension;
1290
            if (!(extension << _JsonValue["KHR_materials_emissive_strength"])) return false;
×
1291
            _rData.properties.insert(std::make_pair("KHR_materials_emissive_strength", extension));
1292
        }
×
1293
        if (_JsonValue.HasMember("KHR_materials_ior") && _JsonValue["KHR_materials_ior"].IsObject())
1294
        {
×
1295
            std::shared_ptr<SKHR_materials_iorglTFextension> extension;
×
1296
            if (!(extension << _JsonValue["KHR_materials_ior"])) return false;
×
1297
            _rData.properties.insert(std::make_pair("KHR_materials_ior", extension));
1298
        }
×
1299
        if (_JsonValue.HasMember("KHR_materials_iridescence") && _JsonValue["KHR_materials_iridescence"].IsObject())
×
1300
        {
×
1301
            std::shared_ptr<SKHR_materials_iridescenceglTFextension> extension;
1302
            if (!(extension << _JsonValue["KHR_materials_iridescence"])) return false;
×
1303
            _rData.properties.insert(std::make_pair("KHR_materials_iridescence", extension));
1304
        }
×
1305
        if (_JsonValue.HasMember("KHR_materials_sheen") && _JsonValue["KHR_materials_sheen"].IsObject())
1306
        {
×
1307
            std::shared_ptr<SKHR_materials_sheenglTFextension> extension;
×
1308
            if (!(extension << _JsonValue["KHR_materials_sheen"])) return false;
×
1309
            _rData.properties.insert(std::make_pair("KHR_materials_sheen", extension));
1310
        }
×
1311
        if (_JsonValue.HasMember("KHR_materials_specular") && _JsonValue["KHR_materials_specular"].IsObject())
×
1312
        {
×
1313
            std::shared_ptr<SKHR_materials_specularglTFextension> extension;
1314
            if (!(extension << _JsonValue["KHR_materials_specular"])) return false;
×
1315
            _rData.properties.insert(std::make_pair("KHR_materials_specular", extension));
1316
        }
×
1317
        if (_JsonValue.HasMember("KHR_materials_transmission") && _JsonValue["KHR_materials_transmission"].IsObject())
1318
        {
×
1319
            std::shared_ptr<SKHR_materials_transmissionglTFextension> extension;
×
1320
            if (!(extension << _JsonValue["KHR_materials_transmission"])) return false;
×
1321
            _rData.properties.insert(std::make_pair("KHR_materials_transmission", extension));
1322
        }
×
1323
        if (_JsonValue.HasMember("KHR_materials_unlit") && _JsonValue["KHR_materials_unlit"].IsObject())
×
1324
        {
×
1325
            std::shared_ptr<SKHR_materials_unlitglTFextension> extension;
1326
            if (!(extension << _JsonValue["KHR_materials_unlit"])) return false;
×
1327
            _rData.properties.insert(std::make_pair("KHR_materials_unlit", extension));
1328
        }
×
1329
        if (_JsonValue.HasMember("KHR_materials_variants") && _JsonValue["KHR_materials_variants"].IsObject())
1330
        {
×
1331
            std::shared_ptr<SKHR_materials_variantsglTFextension> extension;
×
1332
            if (!(extension << _JsonValue["KHR_materials_variants"])) return false;
×
1333
            _rData.properties.insert(std::make_pair("KHR_materials_variants", extension));
1334
        }
×
1335
        if (_JsonValue.HasMember("KHR_materials_volume") && _JsonValue["KHR_materials_volume"].IsObject())
×
1336
        {
×
1337
            std::shared_ptr<SKHR_materials_volumeglTFextension> extension;
1338
            if (!(extension << _JsonValue["KHR_materials_volume"])) return false;
×
1339
            _rData.properties.insert(std::make_pair("KHR_materials_volume", extension));
1340
        }
×
1341
        if (_JsonValue.HasMember("KHR_texture_transform") && _JsonValue["KHR_texture_transform"].IsObject())
1342
        {
×
1343
            std::shared_ptr<SKHR_texture_transformtextureInfoextension> extension;
×
1344
            if (!(extension << _JsonValue["KHR_texture_transform"])) return false;
×
1345
            _rData.properties.insert(std::make_pair("KHR_texture_transform", extension));
1346
        }
×
1347
        if (_JsonValue.HasMember("ADOBE_materials_thin_transparency") && _JsonValue["ADOBE_materials_thin_transparency"].IsObject())
×
1348
        {
×
1349
            std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension> extension;
1350
            if (!(extension << _JsonValue["ADOBE_materials_thin_transparency"])) return false;
×
1351
            _rData.properties.insert(std::make_pair("ADOBE_materials_thin_transparency", extension));
1352
        }
×
1353
        if (_JsonValue.HasMember("AGI_articulations") && _JsonValue["AGI_articulations"].IsObject())
1354
        {
×
1355
            std::shared_ptr<SAGI_articulationsglTFextension> extension;
×
1356
            if (!(extension << _JsonValue["AGI_articulations"])) return false;
×
1357
            _rData.properties.insert(std::make_pair("AGI_articulations", extension));
1358
        }
×
1359
        if (_JsonValue.HasMember("AGI_stk_metadata") && _JsonValue["AGI_stk_metadata"].IsObject())
×
1360
        {
×
1361
            std::shared_ptr<SAGI_stk_metadataglTFNodeextension> extension;
1362
            if (!(extension << _JsonValue["AGI_stk_metadata"])) return false;
×
1363
            _rData.properties.insert(std::make_pair("AGI_stk_metadata", extension));
1364
        }
×
1365
        if (_JsonValue.HasMember("CESIUM_primitive_outline") && _JsonValue["CESIUM_primitive_outline"].IsObject())
1366
        {
×
1367
            std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension> extension;
×
1368
            if (!(extension << _JsonValue["CESIUM_primitive_outline"])) return false;
×
1369
            _rData.properties.insert(std::make_pair("CESIUM_primitive_outline", extension));
1370
        }
×
1371
        if (_JsonValue.HasMember("EXT_lights_ies") && _JsonValue["EXT_lights_ies"].IsObject())
×
1372
        {
×
1373
            std::shared_ptr<SEXT_lights_iesglTFextension> extension;
1374
            if (!(extension << _JsonValue["EXT_lights_ies"])) return false;
×
1375
            _rData.properties.insert(std::make_pair("EXT_lights_ies", extension));
1376
        }
×
1377
        if (_JsonValue.HasMember("EXT_mesh_gpu_instancing") && _JsonValue["EXT_mesh_gpu_instancing"].IsObject())
1378
        {
×
1379
            std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension> extension;
×
1380
            if (!(extension << _JsonValue["EXT_mesh_gpu_instancing"])) return false;
×
1381
            _rData.properties.insert(std::make_pair("EXT_mesh_gpu_instancing", extension));
1382
        }
×
1383
        if (_JsonValue.HasMember("EXT_texture_webp") && _JsonValue["EXT_texture_webp"].IsObject())
×
1384
        {
×
1385
            std::shared_ptr<SEXT_texture_webpglTFextension> extension;
1386
            if (!(extension << _JsonValue["EXT_texture_webp"])) return false;
×
1387
            _rData.properties.insert(std::make_pair("EXT_texture_webp", extension));
1388
        }
×
1389
        if (_JsonValue.HasMember("FB_geometry_metadata") && _JsonValue["FB_geometry_metadata"].IsObject())
1390
        {
×
1391
            std::shared_ptr<SFB_geometry_metadatasceneextension> extension;
×
1392
            if (!(extension << _JsonValue["FB_geometry_metadata"])) return false;
×
1393
            _rData.properties.insert(std::make_pair("FB_geometry_metadata", extension));
1394
        }
×
1395
        if (_JsonValue.HasMember("MSFT_lod") && _JsonValue["MSFT_lod"].IsObject())
×
1396
        {
×
1397
            std::shared_ptr<SMSFT_lodglTFextension> extension;
1398
            if (!(extension << _JsonValue["MSFT_lod"])) return false;
×
1399
            _rData.properties.insert(std::make_pair("MSFT_lod", extension));
1400
        }
×
1401
        if (_JsonValue.HasMember("MSFT_texture_dds") && _JsonValue["MSFT_texture_dds"].IsObject())
1402
        {
×
1403
            std::shared_ptr<SMSFT_texture_ddsextension> extension;
×
1404
            if (!(extension << _JsonValue["MSFT_texture_dds"])) return false;
×
1405
            _rData.properties.insert(std::make_pair("MSFT_texture_dds", extension));
1406
        }
×
1407
        _rData.schemaType = "extension.schema.json";
×
1408
        return true;
×
1409
    }
1410

×
1411
    bool operator>>(const TDataDoc<SExtension>& _rData, JSONCharValue& _JsonValue)
1412
    {
×
1413
        // Manual code lines
1414
        if (!_rData.doc) return false;
×
1415
        _JsonValue.SetObject();
×
1416
        for (const std::pair<std::string, std::shared_ptr<SObject>>& extensionProperty : _rData.data.properties)
×
1417
        {
1418
            const std::shared_ptr<SObject>& extensionValue = extensionProperty.second;
×
1419
            if (!extensionValue) return false;
×
1420
            if (extensionValue->schemaType == "node.KHR_draco_mesh_compression.schema.json")
×
1421
            {
1422
                const SKHR_draco_mesh_compressionextension& extension = *((const SKHR_draco_mesh_compressionextension*)extensionValue.get());
×
1423
                JSONCharValue json_value;
1424
                if (!(TDataDoc<SKHR_draco_mesh_compressionextension>(extension, _rData.doc) >> json_value)) return false;
×
1425
                _JsonValue.AddMember("KHR_draco_mesh_compression", json_value, _rData.doc->GetAllocator());
1426
            }
×
1427
            else if (extensionValue->schemaType == "node.KHR_lights_punctual.schema.json")
×
1428
            {
×
1429
                const SKHR_lights_punctualnodeextension& extension = *((const SKHR_lights_punctualnodeextension*)extensionValue.get());
1430
                JSONCharValue json_value;
×
1431
                if (!(TDataDoc<SKHR_lights_punctualnodeextension>(extension, _rData.doc) >> json_value)) return false;
×
1432
                _JsonValue.AddMember("KHR_lights_punctual", json_value, _rData.doc->GetAllocator());
×
1433
            }
1434
            else if (extensionValue->schemaType == "glTF.KHR_lights_punctual.schema.json")
×
1435
            {
1436
                const SKHR_lights_punctualglTFextension& extension = *((const SKHR_lights_punctualglTFextension*)extensionValue.get());
×
1437
                JSONCharValue json_value;
1438
                if (!(TDataDoc<SKHR_lights_punctualglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1439
                _JsonValue.AddMember("KHR_lights_punctual", json_value, _rData.doc->GetAllocator());
×
1440
            }
×
1441
            else if (extensionValue->schemaType == "glTF.KHR_materials_clearcoat.schema.json")
1442
            {
×
1443
                const SKHR_materials_clearcoatglTFextension& extension = *((const SKHR_materials_clearcoatglTFextension*)extensionValue.get());
×
1444
                JSONCharValue json_value;
×
1445
                if (!(TDataDoc<SKHR_materials_clearcoatglTFextension>(extension, _rData.doc) >> json_value)) return false;
1446
                _JsonValue.AddMember("KHR_materials_clearcoat", json_value, _rData.doc->GetAllocator());
×
1447
            }
1448
            else if (extensionValue->schemaType == "glTF.KHR_materials_emissive_strength.schema.json")
×
1449
            {
1450
                const SKHR_materials_emissive_strengthglTFextension& extension = *((const SKHR_materials_emissive_strengthglTFextension*)extensionValue.get());
×
1451
                JSONCharValue json_value;
×
1452
                if (!(TDataDoc<SKHR_materials_emissive_strengthglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1453
                _JsonValue.AddMember("KHR_materials_emissive_strength", json_value, _rData.doc->GetAllocator());
1454
            }
×
1455
            else if (extensionValue->schemaType == "glTF.KHR_materials_ior.schema.json")
×
1456
            {
×
1457
                const SKHR_materials_iorglTFextension& extension = *((const SKHR_materials_iorglTFextension*)extensionValue.get());
1458
                JSONCharValue json_value;
×
1459
                if (!(TDataDoc<SKHR_materials_iorglTFextension>(extension, _rData.doc) >> json_value)) return false;
1460
                _JsonValue.AddMember("KHR_materials_ior", json_value, _rData.doc->GetAllocator());
×
1461
            }
1462
            else if (extensionValue->schemaType == "glTF.KHR_materials_iridescence.schema.json")
×
1463
            {
×
1464
                const SKHR_materials_iridescenceglTFextension& extension = *((const SKHR_materials_iridescenceglTFextension*)extensionValue.get());
×
1465
                JSONCharValue json_value;
1466
                if (!(TDataDoc<SKHR_materials_iridescenceglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1467
                _JsonValue.AddMember("KHR_materials_iridescence", json_value, _rData.doc->GetAllocator());
×
1468
            }
×
1469
            else if (extensionValue->schemaType == "glTF.KHR_materials_sheen.schema.json")
1470
            {
×
1471
                const SKHR_materials_sheenglTFextension& extension = *((const SKHR_materials_sheenglTFextension*)extensionValue.get());
1472
                JSONCharValue json_value;
×
1473
                if (!(TDataDoc<SKHR_materials_sheenglTFextension>(extension, _rData.doc) >> json_value)) return false;
1474
                _JsonValue.AddMember("KHR_materials_sheen", json_value, _rData.doc->GetAllocator());
×
1475
            }
×
1476
            else if (extensionValue->schemaType == "glTF.KHR_materials_specular.schema.json")
×
1477
            {
1478
                const SKHR_materials_specularglTFextension& extension = *((const SKHR_materials_specularglTFextension*)extensionValue.get());
×
1479
                JSONCharValue json_value;
×
1480
                if (!(TDataDoc<SKHR_materials_specularglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1481
                _JsonValue.AddMember("KHR_materials_specular", json_value, _rData.doc->GetAllocator());
1482
            }
×
1483
            else if (extensionValue->schemaType == "glTF.KHR_materials_transmission.schema.json")
1484
            {
×
1485
                const SKHR_materials_transmissionglTFextension& extension = *((const SKHR_materials_transmissionglTFextension*)extensionValue.get());
1486
                JSONCharValue json_value;
×
1487
                if (!(TDataDoc<SKHR_materials_transmissionglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1488
                _JsonValue.AddMember("KHR_materials_transmission", json_value, _rData.doc->GetAllocator());
×
1489
            }
1490
            else if (extensionValue->schemaType == "glTF.KHR_materials_unlit.schema.json")
×
1491
            {
×
1492
                const SKHR_materials_unlitglTFextension& extension = *((const SKHR_materials_unlitglTFextension*)extensionValue.get());
×
1493
                JSONCharValue json_value;
1494
                if (!(TDataDoc<SKHR_materials_unlitglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1495
                _JsonValue.AddMember("KHR_materials_unlit", json_value, _rData.doc->GetAllocator());
1496
            }
×
1497
            else if (extensionValue->schemaType == "glTF.KHR_materials_variants.schema.json")
1498
            {
×
1499
                const SKHR_materials_variantsglTFextension& extension = *((const SKHR_materials_variantsglTFextension*)extensionValue.get());
×
1500
                JSONCharValue json_value;
×
1501
                if (!(TDataDoc<SKHR_materials_variantsglTFextension>(extension, _rData.doc) >> json_value)) return false;
1502
                _JsonValue.AddMember("KHR_materials_variants", json_value, _rData.doc->GetAllocator());
×
1503
            }
×
1504
            else if (extensionValue->schemaType == "glTF.KHR_materials_volume.schema.json")
×
1505
            {
1506
                const SKHR_materials_volumeglTFextension& extension = *((const SKHR_materials_volumeglTFextension*)extensionValue.get());
×
1507
                JSONCharValue json_value;
1508
                if (!(TDataDoc<SKHR_materials_volumeglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1509
                _JsonValue.AddMember("KHR_materials_volume", json_value, _rData.doc->GetAllocator());
1510
            }
×
1511
            else if (extensionValue->schemaType == "glTF.KHR_texture_transform.schema.json")
×
1512
            {
×
1513
                const SKHR_texture_transformtextureInfoextension& extension = *((const SKHR_texture_transformtextureInfoextension*)extensionValue.get());
1514
                JSONCharValue json_value;
×
1515
                if (!(TDataDoc<SKHR_texture_transformtextureInfoextension>(extension, _rData.doc) >> json_value)) return false;
×
1516
                _JsonValue.AddMember("KHR_texture_transform", json_value, _rData.doc->GetAllocator());
×
1517
            }
1518
            else if (extensionValue->schemaType == "glTF.ADOBE_materials_thin_transparency.schema.json")
×
1519
            {
1520
                const SADOBE_materials_thin_transparencyglTFextension& extension = *((const SADOBE_materials_thin_transparencyglTFextension*)extensionValue.get());
×
1521
                JSONCharValue json_value;
1522
                if (!(TDataDoc<SADOBE_materials_thin_transparencyglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1523
                _JsonValue.AddMember("ADOBE_materials_thin_transparency", json_value, _rData.doc->GetAllocator());
×
1524
            }
×
1525
            else if (extensionValue->schemaType == "glTF.AGI_articulations.schema.json")
1526
            {
×
1527
                const SAGI_articulationsglTFextension& extension = *((const SAGI_articulationsglTFextension*)extensionValue.get());
×
1528
                JSONCharValue json_value;
×
1529
                if (!(TDataDoc<SAGI_articulationsglTFextension>(extension, _rData.doc) >> json_value)) return false;
1530
                _JsonValue.AddMember("AGI_articulations", json_value, _rData.doc->GetAllocator());
×
1531
            }
1532
            else if (extensionValue->schemaType == "glTF.AGI_stk_metadata.schema.json")
×
1533
            {
1534
                const SAGI_stk_metadataglTFextension& extension = *((const SAGI_stk_metadataglTFextension*)extensionValue.get());
×
1535
                JSONCharValue json_value;
×
1536
                if (!(TDataDoc<SAGI_stk_metadataglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1537
                _JsonValue.AddMember("AGI_stk_metadata", json_value, _rData.doc->GetAllocator());
1538
            }
×
1539
            else if (extensionValue->schemaType == "glTF.CESIUM_primitive_outline.schema.json")
×
1540
            {
×
1541
                const SCESIUM_primitive_outlineglTFprimitiveextension& extension = *((const SCESIUM_primitive_outlineglTFprimitiveextension*)extensionValue.get());
1542
                JSONCharValue json_value;
×
1543
                if (!(TDataDoc<SCESIUM_primitive_outlineglTFprimitiveextension>(extension, _rData.doc) >> json_value)) return false;
1544
                _JsonValue.AddMember("CESIUM_primitive_outline", json_value, _rData.doc->GetAllocator());
×
1545
            }
1546
            else if (extensionValue->schemaType == "glTF.EXT_lights_ies.schema.json")
×
1547
            {
×
1548
                const SEXT_lights_iesglTFextension& extension = *((const SEXT_lights_iesglTFextension*)extensionValue.get());
×
1549
                JSONCharValue json_value;
1550
                if (!(TDataDoc<SEXT_lights_iesglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1551
                _JsonValue.AddMember("EXT_lights_ies", json_value, _rData.doc->GetAllocator());
×
1552
            }
×
1553
            else if (extensionValue->schemaType == "glTF.EXT_mesh_gpu_instancing.schema.json")
1554
            {
×
1555
                const SEXT_mesh_gpu_instancingglTFextension& extension = *((const SEXT_mesh_gpu_instancingglTFextension*)extensionValue.get());
1556
                JSONCharValue json_value;
×
1557
                if (!(TDataDoc<SEXT_mesh_gpu_instancingglTFextension>(extension, _rData.doc) >> json_value)) return false;
1558
                _JsonValue.AddMember("EXT_mesh_gpu_instancing", json_value, _rData.doc->GetAllocator());
×
1559
            }
×
1560
            else if (extensionValue->schemaType == "glTF.EXT_texture_webp.schema.json")
×
1561
            {
1562
                const SEXT_texture_webpglTFextension& extension = *((const SEXT_texture_webpglTFextension*)extensionValue.get());
×
1563
                JSONCharValue json_value;
×
1564
                if (!(TDataDoc<SEXT_texture_webpglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1565
                _JsonValue.AddMember("EXT_texture_webp", json_value, _rData.doc->GetAllocator());
1566
            }
×
1567
            else if (extensionValue->schemaType == "glTF.FB_geometry_metadata.schema.json")
1568
            {
×
1569
                const SFB_geometry_metadatasceneextension& extension = *((const SFB_geometry_metadatasceneextension*)extensionValue.get());
1570
                JSONCharValue json_value;
×
1571
                if (!(TDataDoc<SFB_geometry_metadatasceneextension>(extension, _rData.doc) >> json_value)) return false;
×
1572
                _JsonValue.AddMember("FB_geometry_metadata", json_value, _rData.doc->GetAllocator());
×
1573
            }
1574
            else if (extensionValue->schemaType == "glTF.MSFT_lod.schema.json")
×
1575
            {
×
1576
                const SMSFT_lodglTFextension& extension = *((const SMSFT_lodglTFextension*)extensionValue.get());
×
1577
                JSONCharValue json_value;
1578
                if (!(TDataDoc<SMSFT_lodglTFextension>(extension, _rData.doc) >> json_value)) return false;
×
1579
                _JsonValue.AddMember("MSFT_lod", json_value, _rData.doc->GetAllocator());
1580
            }
×
1581
            else if (extensionValue->schemaType == "glTF.MSFT_texture_dds.schema.json")
1582
            {
×
1583
                const SMSFT_texture_ddsextension& extension = *((const SMSFT_texture_ddsextension*)extensionValue.get());
×
1584
                JSONCharValue json_value;
×
1585
                if (!(TDataDoc<SMSFT_texture_ddsextension>(extension, _rData.doc) >> json_value)) return false;
1586
                _JsonValue.AddMember("MSFT_texture_dds", json_value, _rData.doc->GetAllocator());
×
1587
            }
×
1588
        }
×
1589
        return true;
1590
    }
×
1591

1592
    bool operator<<(std::shared_ptr<SExtension>& _pData, const JSONCharValue& _JsonValue)
×
1593
    {
1594
        std::shared_ptr<SExtension> data_ptr = !!_pData ? _pData : std::make_shared<SExtension>();
×
1595
        if (!(*data_ptr << _JsonValue)) return false;
×
1596
        _pData = data_ptr;
×
1597
        return true;
1598
    }
×
1599

×
1600
    bool operator>>(const TDataDoc<std::shared_ptr<SExtension>>& _rData, JSONCharValue& _JsonValue)
×
1601
    {
1602
        if (!_rData.data) return false;
×
1603
        return (TDataDoc<SExtension>(*_rData.data, _rData.doc) >> _JsonValue);
1604
    }
×
1605

1606
    bool operator<<(std::vector<std::shared_ptr<SExtension>>& _vDatas, const JSONCharValue& _JsonValue)
×
1607
    {
×
1608
        return operator<< <std::shared_ptr<SExtension>>(_vDatas, _JsonValue);
×
1609
    }
1610

×
1611
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SExtension>>>& _rData, JSONCharValue& _JsonValue)
×
1612
    {
×
1613
        return operator>> <std::shared_ptr<SExtension>>(_rData, _JsonValue);
1614
    }
×
1615

1616
    bool operator<<(SExtras& _rData, const JSONCharValue& _JsonValue)
×
1617
    {
1618
        _rData.schemaType = "extras.schema.json";
×
1619
        return true;
×
1620
    }
×
1621

1622
    bool operator>>(const TDataDoc<SExtras>& _rData, JSONCharValue& _JsonValue)
×
1623
    {
×
1624
        if (!_rData.doc) return false;
×
1625
        _JsonValue.SetObject();
1626
        return true;
×
1627
    }
1628

×
1629
    bool operator<<(std::shared_ptr<SExtras>& _pData, const JSONCharValue& _JsonValue)
1630
    {
×
1631
        std::shared_ptr<SExtras> data_ptr = !!_pData ? _pData : std::make_shared<SExtras>();
×
1632
        if (!(*data_ptr << _JsonValue)) return false;
×
1633
        _pData = data_ptr;
1634
        return true;
×
1635
    }
×
1636

×
1637
    bool operator>>(const TDataDoc<std::shared_ptr<SExtras>>& _rData, JSONCharValue& _JsonValue)
1638
    {
×
1639
        if (!_rData.data) return false;
1640
        return (TDataDoc<SExtras>(*_rData.data, _rData.doc) >> _JsonValue);
×
1641
    }
1642

×
1643
    bool operator<<(std::vector<std::shared_ptr<SExtras>>& _vDatas, const JSONCharValue& _JsonValue)
×
1644
    {
×
1645
        return operator<< <std::shared_ptr<SExtras>>(_vDatas, _JsonValue);
1646
    }
×
1647

×
1648
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SExtras>>>& _rData, JSONCharValue& _JsonValue)
×
1649
    {
1650
        return operator>> <std::shared_ptr<SExtras>>(_rData, _JsonValue);
×
1651
    }
1652

×
1653
    bool operator<<(SGlTF& _rData, const JSONCharValue& _JsonValue)
1654
    {
×
1655
        {
×
1656
            SGlTFProperty& super_ptr = _rData;
×
1657
            if (!(super_ptr << _JsonValue)) return false;
1658
        }
×
1659
        if (_JsonValue.HasMember("extensionsUsed") && _JsonValue["extensionsUsed"].IsArray())
×
1660
        {
×
1661
            if (!(_rData.extensionsUsed << _JsonValue["extensionsUsed"])) return false;
1662
        }
×
1663
        if (_JsonValue.HasMember("extensionsRequired") && _JsonValue["extensionsRequired"].IsArray())
1664
        {
×
1665
            if (!(_rData.extensionsRequired << _JsonValue["extensionsRequired"])) return false;
1666
        }
×
1667
        if (_JsonValue.HasMember("accessors") && _JsonValue["accessors"].IsArray())
×
1668
        {
×
1669
            if (!(_rData.accessors << _JsonValue["accessors"])) return false;
1670
        }
×
1671
        if (_JsonValue.HasMember("animations") && _JsonValue["animations"].IsArray())
×
1672
        {
×
1673
            if (!(_rData.animations << _JsonValue["animations"])) return false;
1674
        }
×
1675
        if (_JsonValue.HasMember("asset") && _JsonValue["asset"].IsObject())
1676
        {
×
1677
            if (!(_rData.asset << _JsonValue["asset"])) return false;
1678
        }
×
1679
        if (_JsonValue.HasMember("buffers") && _JsonValue["buffers"].IsArray())
×
1680
        {
×
1681
            if (!(_rData.buffers << _JsonValue["buffers"])) return false;
1682
        }
×
1683
        if (_JsonValue.HasMember("bufferViews") && _JsonValue["bufferViews"].IsArray())
×
1684
        {
×
1685
            if (!(_rData.bufferViews << _JsonValue["bufferViews"])) return false;
1686
        }
×
1687
        if (_JsonValue.HasMember("cameras") && _JsonValue["cameras"].IsArray())
1688
        {
×
1689
            if (!(_rData.cameras << _JsonValue["cameras"])) return false;
1690
        }
×
1691
        if (_JsonValue.HasMember("images") && _JsonValue["images"].IsArray())
×
1692
        {
×
1693
            if (!(_rData.images << _JsonValue["images"])) return false;
1694
        }
×
1695
        if (_JsonValue.HasMember("materials") && _JsonValue["materials"].IsArray())
×
1696
        {
×
1697
            if (!(_rData.materials << _JsonValue["materials"])) return false;
1698
        }
×
1699
        if (_JsonValue.HasMember("meshes") && _JsonValue["meshes"].IsArray())
1700
        {
×
1701
            if (!(_rData.meshes << _JsonValue["meshes"])) return false;
1702
        }
×
1703
        if (_JsonValue.HasMember("nodes") && _JsonValue["nodes"].IsArray())
×
1704
        {
×
1705
            if (!(_rData.nodes << _JsonValue["nodes"])) return false;
1706
        }
×
1707
        if (_JsonValue.HasMember("samplers") && _JsonValue["samplers"].IsArray())
×
1708
        {
×
1709
            if (!(_rData.samplers << _JsonValue["samplers"])) return false;
1710
        }
×
1711
        if (_JsonValue.HasMember("scene") && _JsonValue["scene"].IsInt())
1712
        {
×
1713
            if (!(_rData.scene << _JsonValue["scene"])) return false;
1714
        }
×
1715
        if (_JsonValue.HasMember("scenes") && _JsonValue["scenes"].IsArray())
×
1716
        {
×
1717
            if (!(_rData.scenes << _JsonValue["scenes"])) return false;
1718
        }
×
1719
        if (_JsonValue.HasMember("skins") && _JsonValue["skins"].IsArray())
×
1720
        {
×
1721
            if (!(_rData.skins << _JsonValue["skins"])) return false;
1722
        }
×
1723
        if (_JsonValue.HasMember("textures") && _JsonValue["textures"].IsArray())
1724
        {
×
1725
            if (!(_rData.textures << _JsonValue["textures"])) return false;
1726
        }
×
1727
        _rData.schemaType = "glTF.schema.json";
×
1728
        return true;
×
1729
    }
1730

×
1731
    bool operator>>(const TDataDoc<SGlTF>& _rData, JSONCharValue& _JsonValue)
×
1732
    {
×
1733
        if (!_rData.doc) return false;
1734
        _JsonValue.SetObject();
×
1735
        {
1736
            const SGlTFProperty& super_ptr = _rData.data;
×
1737
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
1738
        }
×
1739
        if (!_rData.data.extensionsUsed.empty())
×
1740
        {
×
1741
            JSONCharValue json_value;
1742
            if (!(TDataDoc<std::vector<std::string>>(_rData.data.extensionsUsed, _rData.doc) >> json_value)) return false;
×
1743
            _JsonValue.AddMember("extensionsUsed", json_value, _rData.doc->GetAllocator());
×
1744
        }
×
1745
        if (!_rData.data.extensionsRequired.empty())
1746
        {
×
1747
            JSONCharValue json_value;
1748
            if (!(TDataDoc<std::vector<std::string>>(_rData.data.extensionsRequired, _rData.doc) >> json_value)) return false;
×
1749
            _JsonValue.AddMember("extensionsRequired", json_value, _rData.doc->GetAllocator());
1750
        }
×
1751
        if (!_rData.data.accessors.empty())
×
1752
        {
×
1753
            JSONCharValue json_value;
1754
            if (!(TDataDoc<std::vector<std::shared_ptr<SAccessor>>>(_rData.data.accessors, _rData.doc) >> json_value)) return false;
×
1755
            _JsonValue.AddMember("accessors", json_value, _rData.doc->GetAllocator());
×
1756
        }
×
1757
        if (!_rData.data.animations.empty())
1758
        {
×
1759
            JSONCharValue json_value;
1760
            if (!(TDataDoc<std::vector<std::shared_ptr<SAnimation>>>(_rData.data.animations, _rData.doc) >> json_value)) return false;
×
1761
            _JsonValue.AddMember("animations", json_value, _rData.doc->GetAllocator());
1762
        }
×
1763
        if (!!_rData.data.asset)
×
1764
        {
×
1765
            JSONCharValue json_value;
1766
            if (!(TDataDoc<SAsset>(*_rData.data.asset, _rData.doc) >> json_value)) return false;
×
1767
            _JsonValue.AddMember("asset", json_value, _rData.doc->GetAllocator());
×
1768
        }
×
1769
        if (!_rData.data.buffers.empty())
1770
        {
×
1771
            JSONCharValue json_value;
1772
            if (!(TDataDoc<std::vector<std::shared_ptr<SBuffer>>>(_rData.data.buffers, _rData.doc) >> json_value)) return false;
×
1773
            _JsonValue.AddMember("buffers", json_value, _rData.doc->GetAllocator());
1774
        }
×
1775
        if (!_rData.data.bufferViews.empty())
×
1776
        {
×
1777
            JSONCharValue json_value;
1778
            if (!(TDataDoc<std::vector<std::shared_ptr<SBufferView>>>(_rData.data.bufferViews, _rData.doc) >> json_value)) return false;
×
1779
            _JsonValue.AddMember("bufferViews", json_value, _rData.doc->GetAllocator());
×
1780
        }
×
1781
        if (!_rData.data.cameras.empty())
1782
        {
×
1783
            JSONCharValue json_value;
1784
            if (!(TDataDoc<std::vector<std::shared_ptr<SCamera>>>(_rData.data.cameras, _rData.doc) >> json_value)) return false;
×
1785
            _JsonValue.AddMember("cameras", json_value, _rData.doc->GetAllocator());
1786
        }
×
1787
        if (!_rData.data.images.empty())
×
1788
        {
×
1789
            JSONCharValue json_value;
1790
            if (!(TDataDoc<std::vector<std::shared_ptr<SImage>>>(_rData.data.images, _rData.doc) >> json_value)) return false;
×
1791
            _JsonValue.AddMember("images", json_value, _rData.doc->GetAllocator());
×
1792
        }
×
1793
        if (!_rData.data.materials.empty())
1794
        {
×
1795
            JSONCharValue json_value;
1796
            if (!(TDataDoc<std::vector<std::shared_ptr<SMaterial>>>(_rData.data.materials, _rData.doc) >> json_value)) return false;
×
1797
            _JsonValue.AddMember("materials", json_value, _rData.doc->GetAllocator());
1798
        }
×
1799
        if (!_rData.data.meshes.empty())
×
1800
        {
×
1801
            JSONCharValue json_value;
1802
            if (!(TDataDoc<std::vector<std::shared_ptr<SMesh>>>(_rData.data.meshes, _rData.doc) >> json_value)) return false;
×
1803
            _JsonValue.AddMember("meshes", json_value, _rData.doc->GetAllocator());
×
1804
        }
×
1805
        if (!_rData.data.nodes.empty())
1806
        {
×
1807
            JSONCharValue json_value;
1808
            if (!(TDataDoc<std::vector<std::shared_ptr<SNode>>>(_rData.data.nodes, _rData.doc) >> json_value)) return false;
×
1809
            _JsonValue.AddMember("nodes", json_value, _rData.doc->GetAllocator());
1810
        }
×
1811
        if (!_rData.data.samplers.empty())
×
1812
        {
×
1813
            JSONCharValue json_value;
1814
            if (!(TDataDoc<std::vector<std::shared_ptr<SSampler>>>(_rData.data.samplers, _rData.doc) >> json_value)) return false;
×
1815
            _JsonValue.AddMember("samplers", json_value, _rData.doc->GetAllocator());
×
1816
        }
×
1817
        if (!!_rData.data.scene)
1818
        {
×
1819
            JSONCharValue json_value;
1820
            if (!(TDataDoc<SGlTFId>(*_rData.data.scene, _rData.doc) >> json_value)) return false;
×
1821
            _JsonValue.AddMember("scene", json_value, _rData.doc->GetAllocator());
1822
        }
×
1823
        if (!_rData.data.scenes.empty())
×
1824
        {
×
1825
            JSONCharValue json_value;
1826
            if (!(TDataDoc<std::vector<std::shared_ptr<SScene>>>(_rData.data.scenes, _rData.doc) >> json_value)) return false;
×
1827
            _JsonValue.AddMember("scenes", json_value, _rData.doc->GetAllocator());
×
1828
        }
×
1829
        if (!_rData.data.skins.empty())
1830
        {
×
1831
            JSONCharValue json_value;
1832
            if (!(TDataDoc<std::vector<std::shared_ptr<SSkin>>>(_rData.data.skins, _rData.doc) >> json_value)) return false;
×
1833
            _JsonValue.AddMember("skins", json_value, _rData.doc->GetAllocator());
1834
        }
×
1835
        if (!_rData.data.textures.empty())
×
1836
        {
×
1837
            JSONCharValue json_value;
1838
            if (!(TDataDoc<std::vector<std::shared_ptr<STexture>>>(_rData.data.textures, _rData.doc) >> json_value)) return false;
×
1839
            _JsonValue.AddMember("textures", json_value, _rData.doc->GetAllocator());
×
1840
        }
×
1841
        return true;
1842
    }
×
1843

1844
    bool operator<<(std::shared_ptr<SGlTF>& _pData, const JSONCharValue& _JsonValue)
×
1845
    {
1846
        std::shared_ptr<SGlTF> data_ptr = !!_pData ? _pData : std::make_shared<SGlTF>();
×
1847
        if (!(*data_ptr << _JsonValue)) return false;
×
1848
        _pData = data_ptr;
×
1849
        return true;
1850
    }
×
1851

×
1852
    bool operator>>(const TDataDoc<std::shared_ptr<SGlTF>>& _rData, JSONCharValue& _JsonValue)
×
1853
    {
1854
        if (!_rData.data) return false;
×
1855
        return (TDataDoc<SGlTF>(*_rData.data, _rData.doc) >> _JsonValue);
1856
    }
×
1857

1858
    bool operator<<(std::vector<std::shared_ptr<SGlTF>>& _vDatas, const JSONCharValue& _JsonValue)
×
1859
    {
×
1860
        return operator<< <std::shared_ptr<SGlTF>>(_vDatas, _JsonValue);
×
1861
    }
1862

×
1863
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SGlTF>>>& _rData, JSONCharValue& _JsonValue)
×
1864
    {
×
1865
        return operator>> <std::shared_ptr<SGlTF>>(_rData, _JsonValue);
1866
    }
×
1867

1868
    bool operator<<(SGlTFChildofRootProperty& _rData, const JSONCharValue& _JsonValue)
×
1869
    {
1870
        {
×
1871
            SGlTFProperty& super_ptr = _rData;
×
1872
            if (!(super_ptr << _JsonValue)) return false;
×
1873
        }
1874
        if (_JsonValue.HasMember("name") && _JsonValue["name"].IsString())
×
1875
        {
×
1876
            _rData.name = _JsonValue["name"].GetString();
×
1877
        }
1878
        _rData.schemaType = "glTFChildOfRootProperty.schema.json";
×
1879
        return true;
1880
    }
×
1881

1882
    bool operator>>(const TDataDoc<SGlTFChildofRootProperty>& _rData, JSONCharValue& _JsonValue)
×
1883
    {
×
1884
        if (!_rData.doc) return false;
×
1885
        _JsonValue.SetObject();
1886
        {
×
1887
            const SGlTFProperty& super_ptr = _rData.data;
×
1888
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
1889
        }
1890
        {
×
1891
            JSONCharValue json_value;
1892
            if (!(TDataDoc<std::string>(_rData.data.name, _rData.doc) >> json_value)) return false;
×
1893
            _JsonValue.AddMember("name", json_value, _rData.doc->GetAllocator());
1894
        }
×
1895
        return true;
×
1896
    }
×
1897

1898
    bool operator<<(std::shared_ptr<SGlTFChildofRootProperty>& _pData, const JSONCharValue& _JsonValue)
×
1899
    {
×
1900
        std::shared_ptr<SGlTFChildofRootProperty> data_ptr = !!_pData ? _pData : std::make_shared<SGlTFChildofRootProperty>();
×
1901
        if (!(*data_ptr << _JsonValue)) return false;
1902
        _pData = data_ptr;
×
1903
        return true;
1904
    }
×
1905

1906
    bool operator>>(const TDataDoc<std::shared_ptr<SGlTFChildofRootProperty>>& _rData, JSONCharValue& _JsonValue)
×
1907
    {
×
1908
        if (!_rData.data) return false;
×
1909
        return (TDataDoc<SGlTFChildofRootProperty>(*_rData.data, _rData.doc) >> _JsonValue);
1910
    }
×
1911

×
1912
    bool operator<<(std::vector<std::shared_ptr<SGlTFChildofRootProperty>>& _vDatas, const JSONCharValue& _JsonValue)
×
1913
    {
1914
        return operator<< <std::shared_ptr<SGlTFChildofRootProperty>>(_vDatas, _JsonValue);
×
1915
    }
1916

×
1917
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SGlTFChildofRootProperty>>>& _rData, JSONCharValue& _JsonValue)
1918
    {
×
1919
        return operator>> <std::shared_ptr<SGlTFChildofRootProperty>>(_rData, _JsonValue);
×
1920
    }
×
1921

1922
    bool operator<<(SGlTFId& _rData, const JSONCharValue& _JsonValue)
×
1923
    {
×
1924
        if (!(_rData.int32_tValue << _JsonValue)) return false;
×
1925
        _rData.schemaType = "glTFid.schema.json";
1926
        return true;
×
1927
    }
1928

×
1929
    bool operator>>(const TDataDoc<SGlTFId>& _rData, JSONCharValue& _JsonValue)
1930
    {
×
1931
        if (!_rData.doc) return false;
×
1932
        _JsonValue.SetObject();
×
1933
        if (!(TDataDoc<int32_t>(_rData.data.int32_tValue, _rData.doc) >> _JsonValue)) return false;
1934
        return true;
×
1935
    }
×
1936

×
1937
    bool operator<<(std::shared_ptr<SGlTFId>& _pData, const JSONCharValue& _JsonValue)
1938
    {
×
1939
        std::shared_ptr<SGlTFId> data_ptr = !!_pData ? _pData : std::make_shared<SGlTFId>();
1940
        if (!(*data_ptr << _JsonValue)) return false;
×
1941
        _pData = data_ptr;
1942
        return true;
×
1943
    }
×
1944

×
1945
    bool operator>>(const TDataDoc<std::shared_ptr<SGlTFId>>& _rData, JSONCharValue& _JsonValue)
1946
    {
×
1947
        if (!_rData.data) return false;
×
1948
        return (TDataDoc<SGlTFId>(*_rData.data, _rData.doc) >> _JsonValue);
×
1949
    }
1950

×
1951
    bool operator<<(std::vector<std::shared_ptr<SGlTFId>>& _vDatas, const JSONCharValue& _JsonValue)
1952
    {
×
1953
        return operator<< <std::shared_ptr<SGlTFId>>(_vDatas, _JsonValue);
1954
    }
×
1955

×
1956
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SGlTFId>>>& _rData, JSONCharValue& _JsonValue)
×
1957
    {
1958
        return operator>> <std::shared_ptr<SGlTFId>>(_rData, _JsonValue);
×
1959
    }
×
1960

×
1961
    bool operator<<(SGlTFProperty& _rData, const JSONCharValue& _JsonValue)
1962
    {
×
1963
        if (_JsonValue.HasMember("extensions") && _JsonValue["extensions"].IsObject())
1964
        {
×
1965
            if (!(_rData.extensions << _JsonValue["extensions"])) return false;
1966
        }
×
1967
        if (_JsonValue.HasMember("extras") && _JsonValue["extras"].IsObject())
×
1968
        {
×
1969
            if (!(_rData.extras << _JsonValue["extras"])) return false;
1970
        }
×
1971
        _rData.schemaType = "glTFProperty.schema.json";
×
1972
        return true;
×
1973
    }
1974

×
1975
    bool operator>>(const TDataDoc<SGlTFProperty>& _rData, JSONCharValue& _JsonValue)
1976
    {
×
1977
        if (!_rData.doc) return false;
1978
        _JsonValue.SetObject();
×
1979
        if (!!_rData.data.extensions)
×
1980
        {
×
1981
            JSONCharValue json_value;
1982
            if (!(TDataDoc<SExtension>(*_rData.data.extensions, _rData.doc) >> json_value)) return false;
×
1983
            _JsonValue.AddMember("extensions", json_value, _rData.doc->GetAllocator());
×
1984
        }
×
1985
        if (!!_rData.data.extras)
1986
        {
×
1987
            JSONCharValue json_value;
1988
            if (!(TDataDoc<SExtras>(*_rData.data.extras, _rData.doc) >> json_value)) return false;
×
1989
            _JsonValue.AddMember("extras", json_value, _rData.doc->GetAllocator());
1990
        }
×
1991
        return true;
×
1992
    }
×
1993

1994
    bool operator<<(std::shared_ptr<SGlTFProperty>& _pData, const JSONCharValue& _JsonValue)
×
1995
    {
×
1996
        std::shared_ptr<SGlTFProperty> data_ptr = !!_pData ? _pData : std::make_shared<SGlTFProperty>();
×
1997
        if (!(*data_ptr << _JsonValue)) return false;
1998
        _pData = data_ptr;
×
1999
        return true;
2000
    }
×
2001

2002
    bool operator>>(const TDataDoc<std::shared_ptr<SGlTFProperty>>& _rData, JSONCharValue& _JsonValue)
×
2003
    {
×
2004
        if (!_rData.data) return false;
×
2005
        return (TDataDoc<SGlTFProperty>(*_rData.data, _rData.doc) >> _JsonValue);
2006
    }
×
2007

×
2008
    bool operator<<(std::vector<std::shared_ptr<SGlTFProperty>>& _vDatas, const JSONCharValue& _JsonValue)
×
2009
    {
2010
        return operator<< <std::shared_ptr<SGlTFProperty>>(_vDatas, _JsonValue);
×
2011
    }
2012

×
2013
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SGlTFProperty>>>& _rData, JSONCharValue& _JsonValue)
2014
    {
×
2015
        return operator>> <std::shared_ptr<SGlTFProperty>>(_rData, _JsonValue);
×
2016
    }
×
2017

2018
    bool operator<<(SImage& _rData, const JSONCharValue& _JsonValue)
×
2019
    {
×
2020
        {
×
2021
            SGlTFChildofRootProperty& super_ptr = _rData;
2022
            if (!(super_ptr << _JsonValue)) return false;
×
2023
        }
2024
        if (_JsonValue.HasMember("uri") && _JsonValue["uri"].IsString())
×
2025
        {
2026
            _rData.uri = _JsonValue["uri"].GetString();
×
2027
        }
×
2028
        if (_JsonValue.HasMember("mimeType") && _JsonValue["mimeType"].IsString())
×
2029
        {
2030
            _rData.mimeType = _JsonValue["mimeType"].GetString();
×
2031
        }
×
2032
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
×
2033
        {
2034
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
×
2035
        }
2036
        _rData.schemaType = "image.schema.json";
×
2037
        return true;
2038
    }
×
2039

×
2040
    bool operator>>(const TDataDoc<SImage>& _rData, JSONCharValue& _JsonValue)
×
2041
    {
2042
        if (!_rData.doc) return false;
×
2043
        _JsonValue.SetObject();
×
2044
        {
×
2045
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2046
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
2047
        }
2048
        {
×
2049
            JSONCharValue json_value;
2050
            if (!(TDataDoc<std::string>(_rData.data.uri, _rData.doc) >> json_value)) return false;
×
2051
            _JsonValue.AddMember("uri", json_value, _rData.doc->GetAllocator());
×
2052
        }
×
2053
        {
2054
            JSONCharValue json_value;
×
2055
            if (!(TDataDoc<std::string>(_rData.data.mimeType, _rData.doc) >> json_value)) return false;
×
2056
            _JsonValue.AddMember("mimeType", json_value, _rData.doc->GetAllocator());
×
2057
        }
2058
        if (!!_rData.data.bufferView)
×
2059
        {
2060
            JSONCharValue json_value;
×
2061
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
2062
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
×
2063
        }
×
2064
        return true;
×
2065
    }
2066

×
2067
    bool operator<<(std::shared_ptr<SImage>& _pData, const JSONCharValue& _JsonValue)
×
2068
    {
×
2069
        std::shared_ptr<SImage> data_ptr = !!_pData ? _pData : std::make_shared<SImage>();
2070
        if (!(*data_ptr << _JsonValue)) return false;
×
2071
        _pData = data_ptr;
2072
        return true;
×
2073
    }
2074

×
2075
    bool operator>>(const TDataDoc<std::shared_ptr<SImage>>& _rData, JSONCharValue& _JsonValue)
×
2076
    {
×
2077
        if (!_rData.data) return false;
2078
        return (TDataDoc<SImage>(*_rData.data, _rData.doc) >> _JsonValue);
×
2079
    }
×
2080

×
2081
    bool operator<<(std::vector<std::shared_ptr<SImage>>& _vDatas, const JSONCharValue& _JsonValue)
2082
    {
×
2083
        return operator<< <std::shared_ptr<SImage>>(_vDatas, _JsonValue);
2084
    }
×
2085

2086
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SImage>>>& _rData, JSONCharValue& _JsonValue)
×
2087
    {
×
2088
        return operator>> <std::shared_ptr<SImage>>(_rData, _JsonValue);
×
2089
    }
2090

×
2091
    bool operator<<(SMaterialNormalTextureInfo& _rData, const JSONCharValue& _JsonValue)
×
2092
    {
×
2093
        {
2094
            STextureInfo& super_ptr = _rData;
×
2095
            if (!(super_ptr << _JsonValue)) return false;
2096
        }
×
2097
        if (_JsonValue.HasMember("scale") && _JsonValue["scale"].IsNumber())
2098
        {
×
2099
            _rData.scale = _JsonValue["scale"].GetFloat();
×
2100
        }
×
2101
        _rData.schemaType = "material.normalTextureInfo.schema.json";
2102
        return true;
×
2103
    }
×
2104

×
2105
    bool operator>>(const TDataDoc<SMaterialNormalTextureInfo>& _rData, JSONCharValue& _JsonValue)
2106
    {
×
2107
        if (!_rData.doc) return false;
2108
        _JsonValue.SetObject();
×
2109
        {
2110
            const STextureInfo& super_ptr = _rData.data;
×
2111
            if (!(TDataDoc<STextureInfo>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
2112
        }
×
2113
        {
2114
            JSONCharValue json_value;
×
2115
            if (!(TDataDoc<float>(_rData.data.scale, _rData.doc) >> json_value)) return false;
×
2116
            _JsonValue.AddMember("scale", json_value, _rData.doc->GetAllocator());
×
2117
        }
2118
        return true;
×
2119
    }
2120

×
2121
    bool operator<<(std::shared_ptr<SMaterialNormalTextureInfo>& _pData, const JSONCharValue& _JsonValue)
2122
    {
×
2123
        std::shared_ptr<SMaterialNormalTextureInfo> data_ptr = !!_pData ? _pData : std::make_shared<SMaterialNormalTextureInfo>();
×
2124
        if (!(*data_ptr << _JsonValue)) return false;
×
2125
        _pData = data_ptr;
2126
        return true;
×
2127
    }
×
2128

×
2129
    bool operator>>(const TDataDoc<std::shared_ptr<SMaterialNormalTextureInfo>>& _rData, JSONCharValue& _JsonValue)
2130
    {
×
2131
        if (!_rData.data) return false;
2132
        return (TDataDoc<SMaterialNormalTextureInfo>(*_rData.data, _rData.doc) >> _JsonValue);
×
2133
    }
2134

×
2135
    bool operator<<(std::vector<std::shared_ptr<SMaterialNormalTextureInfo>>& _vDatas, const JSONCharValue& _JsonValue)
×
2136
    {
×
2137
        return operator<< <std::shared_ptr<SMaterialNormalTextureInfo>>(_vDatas, _JsonValue);
2138
    }
×
2139

×
2140
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMaterialNormalTextureInfo>>>& _rData, JSONCharValue& _JsonValue)
×
2141
    {
2142
        return operator>> <std::shared_ptr<SMaterialNormalTextureInfo>>(_rData, _JsonValue);
×
2143
    }
2144

×
2145
    bool operator<<(SMaterialOcclusionTextureInfo& _rData, const JSONCharValue& _JsonValue)
2146
    {
×
2147
        {
×
2148
            STextureInfo& super_ptr = _rData;
×
2149
            if (!(super_ptr << _JsonValue)) return false;
2150
        }
×
2151
        if (_JsonValue.HasMember("strength") && _JsonValue["strength"].IsNumber())
×
2152
        {
×
2153
            _rData.strength = _JsonValue["strength"].GetFloat();
2154
        }
×
2155
        _rData.schemaType = "material.occlusionTextureInfo.schema.json";
2156
        return true;
2157
    }
2158

31✔
2159
    bool operator>>(const TDataDoc<SMaterialOcclusionTextureInfo>& _rData, JSONCharValue& _JsonValue)
2160
    {
31✔
2161
        if (!_rData.doc) return false;
31✔
2162
        _JsonValue.SetObject();
31✔
2163
        {
227✔
2164
            const STextureInfo& super_ptr = _rData.data;
2165
            if (!(TDataDoc<STextureInfo>(super_ptr, _rData.doc) >> _JsonValue)) return false;
98✔
2166
        }
98✔
2167
        {
98✔
2168
            JSONCharValue json_value;
2169
            if (!(TDataDoc<float>(_rData.data.strength, _rData.doc) >> json_value)) return false;
31✔
2170
            _JsonValue.AddMember("strength", json_value, _rData.doc->GetAllocator());
31✔
2171
        }
31✔
2172
        return true;
2173
    }
2174

×
2175
    bool operator<<(std::shared_ptr<SMaterialOcclusionTextureInfo>& _pData, const JSONCharValue& _JsonValue)
2176
    {
×
2177
        std::shared_ptr<SMaterialOcclusionTextureInfo> data_ptr = !!_pData ? _pData : std::make_shared<SMaterialOcclusionTextureInfo>();
×
2178
        if (!(*data_ptr << _JsonValue)) return false;
×
2179
        _pData = data_ptr;
2180
        return true;
×
2181
    }
×
2182

×
2183
    bool operator>>(const TDataDoc<std::shared_ptr<SMaterialOcclusionTextureInfo>>& _rData, JSONCharValue& _JsonValue)
×
2184
    {
2185
        if (!_rData.data) return false;
×
2186
        return (TDataDoc<SMaterialOcclusionTextureInfo>(*_rData.data, _rData.doc) >> _JsonValue);
2187
    }
2188

621✔
2189
    bool operator<<(std::vector<std::shared_ptr<SMaterialOcclusionTextureInfo>>& _vDatas, const JSONCharValue& _JsonValue)
2190
    {
2191
        return operator<< <std::shared_ptr<SMaterialOcclusionTextureInfo>>(_vDatas, _JsonValue);
621✔
2192
    }
621✔
2193

2194
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMaterialOcclusionTextureInfo>>>& _rData, JSONCharValue& _JsonValue)
621✔
2195
    {
2196
        return operator>> <std::shared_ptr<SMaterialOcclusionTextureInfo>>(_rData, _JsonValue);
615✔
2197
    }
2198

621✔
2199
    bool operator<<(SMaterialPBRMetallicRoughness& _rData, const JSONCharValue& _JsonValue)
2200
    {
578✔
2201
        {
2202
            SGlTFProperty& super_ptr = _rData;
621✔
2203
            if (!(super_ptr << _JsonValue)) return false;
2204
        }
621✔
2205
        if (_JsonValue.HasMember("baseColorFactor") && _JsonValue["baseColorFactor"].IsArray())
2206
        {
621✔
2207
            if (!(_rData.baseColorFactor << _JsonValue["baseColorFactor"])) return false;
2208
        }
×
2209
        if (_JsonValue.HasMember("baseColorTexture") && _JsonValue["baseColorTexture"].IsObject())
2210
        {
621✔
2211
            if (!(_rData.baseColorTexture << _JsonValue["baseColorTexture"])) return false;
2212
        }
621✔
2213
        if (_JsonValue.HasMember("metallicFactor") && _JsonValue["metallicFactor"].IsNumber())
2214
        {
621✔
2215
            _rData.metallicFactor = _JsonValue["metallicFactor"].GetFloat();
2216
        }
621✔
2217
        if (_JsonValue.HasMember("roughnessFactor") && _JsonValue["roughnessFactor"].IsNumber())
2218
        {
621✔
2219
            _rData.roughnessFactor = _JsonValue["roughnessFactor"].GetFloat();
2220
        }
603✔
2221
        if (_JsonValue.HasMember("metallicRoughnessTexture") && _JsonValue["metallicRoughnessTexture"].IsObject())
2222
        {
621✔
2223
            if (!(_rData.metallicRoughnessTexture << _JsonValue["metallicRoughnessTexture"])) return false;
2224
        }
603✔
2225
        _rData.schemaType = "material.pbrMetallicRoughness.schema.json";
2226
        return true;
621✔
2227
    }
2228

×
2229
    bool operator>>(const TDataDoc<SMaterialPBRMetallicRoughness>& _rData, JSONCharValue& _JsonValue)
2230
    {
621✔
2231
        if (!_rData.doc) return false;
621✔
2232
        _JsonValue.SetObject();
2233
        {
2234
            const SGlTFProperty& super_ptr = _rData.data;
×
2235
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2236
        }
×
2237
        if (!_rData.data.baseColorFactor.empty())
×
2238
        {
2239
            JSONCharValue json_value;
×
2240
            if (!(TDataDoc<std::vector<float>>(_rData.data.baseColorFactor, _rData.doc) >> json_value)) return false;
×
2241
            _JsonValue.AddMember("baseColorFactor", json_value, _rData.doc->GetAllocator());
2242
        }
×
2243
        if (!!_rData.data.baseColorTexture)
2244
        {
×
2245
            JSONCharValue json_value;
×
2246
            if (!(TDataDoc<STextureInfo>(*_rData.data.baseColorTexture, _rData.doc) >> json_value)) return false;
×
2247
            _JsonValue.AddMember("baseColorTexture", json_value, _rData.doc->GetAllocator());
2248
        }
2249
        {
×
2250
            JSONCharValue json_value;
×
2251
            if (!(TDataDoc<float>(_rData.data.metallicFactor, _rData.doc) >> json_value)) return false;
×
2252
            _JsonValue.AddMember("metallicFactor", json_value, _rData.doc->GetAllocator());
2253
        }
2254
        {
×
2255
            JSONCharValue json_value;
×
2256
            if (!(TDataDoc<float>(_rData.data.roughnessFactor, _rData.doc) >> json_value)) return false;
×
2257
            _JsonValue.AddMember("roughnessFactor", json_value, _rData.doc->GetAllocator());
2258
        }
2259
        if (!!_rData.data.metallicRoughnessTexture)
×
2260
        {
×
2261
            JSONCharValue json_value;
×
2262
            if (!(TDataDoc<STextureInfo>(*_rData.data.metallicRoughnessTexture, _rData.doc) >> json_value)) return false;
2263
            _JsonValue.AddMember("metallicRoughnessTexture", json_value, _rData.doc->GetAllocator());
2264
        }
×
2265
        return true;
×
2266
    }
×
2267

2268
    bool operator<<(std::shared_ptr<SMaterialPBRMetallicRoughness>& _pData, const JSONCharValue& _JsonValue)
2269
    {
×
2270
        std::shared_ptr<SMaterialPBRMetallicRoughness> data_ptr = !!_pData ? _pData : std::make_shared<SMaterialPBRMetallicRoughness>();
×
2271
        if (!(*data_ptr << _JsonValue)) return false;
×
2272
        _pData = data_ptr;
2273
        return true;
×
2274
    }
2275

×
2276
    bool operator>>(const TDataDoc<std::shared_ptr<SMaterialPBRMetallicRoughness>>& _rData, JSONCharValue& _JsonValue)
×
2277
    {
×
2278
        if (!_rData.data) return false;
2279
        return (TDataDoc<SMaterialPBRMetallicRoughness>(*_rData.data, _rData.doc) >> _JsonValue);
×
2280
    }
2281

×
2282
    bool operator<<(std::vector<std::shared_ptr<SMaterialPBRMetallicRoughness>>& _vDatas, const JSONCharValue& _JsonValue)
×
2283
    {
×
2284
        return operator<< <std::shared_ptr<SMaterialPBRMetallicRoughness>>(_vDatas, _JsonValue);
2285
    }
×
2286

2287
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMaterialPBRMetallicRoughness>>>& _rData, JSONCharValue& _JsonValue)
×
2288
    {
×
2289
        return operator>> <std::shared_ptr<SMaterialPBRMetallicRoughness>>(_rData, _JsonValue);
×
2290
    }
2291

×
2292
    bool operator<<(SMaterial& _rData, const JSONCharValue& _JsonValue)
2293
    {
2294
        {
621✔
2295
            SGlTFChildofRootProperty& super_ptr = _rData;
2296
            if (!(super_ptr << _JsonValue)) return false;
621✔
2297
        }
621✔
2298
        if (_JsonValue.HasMember("pbrMetallicRoughness") && _JsonValue["pbrMetallicRoughness"].IsObject())
621✔
2299
        {
621✔
2300
            if (!(_rData.pbrMetallicRoughness << _JsonValue["pbrMetallicRoughness"])) return false;
621✔
2301
        }
2302
        if (_JsonValue.HasMember("normalTexture") && _JsonValue["normalTexture"].IsObject())
×
2303
        {
2304
            if (!(_rData.normalTexture << _JsonValue["normalTexture"])) return false;
×
2305
        }
×
2306
        if (_JsonValue.HasMember("occlusionTexture") && _JsonValue["occlusionTexture"].IsObject())
2307
        {
2308
            if (!(_rData.occlusionTexture << _JsonValue["occlusionTexture"])) return false;
17✔
2309
        }
2310
        if (_JsonValue.HasMember("emissiveTexture") && _JsonValue["emissiveTexture"].IsObject())
17✔
2311
        {
2312
            if (!(_rData.emissiveTexture << _JsonValue["emissiveTexture"])) return false;
2313
        }
×
2314
        if (_JsonValue.HasMember("emissiveFactor") && _JsonValue["emissiveFactor"].IsArray())
2315
        {
×
2316
            if (!(_rData.emissiveFactor << _JsonValue["emissiveFactor"])) return false;
2317
        }
2318
        if (_JsonValue.HasMember("alphaMode") && _JsonValue["alphaMode"].IsString())
×
2319
        {
2320
            _rData.alphaMode = _JsonValue["alphaMode"].GetString();
2321
        }
×
2322
        if (_JsonValue.HasMember("alphaCutoff") && _JsonValue["alphaCutoff"].IsNumber())
×
2323
        {
2324
            _rData.alphaCutoff = _JsonValue["alphaCutoff"].GetFloat();
×
2325
        }
2326
        if (_JsonValue.HasMember("doubleSided") && _JsonValue["doubleSided"].IsBool())
×
2327
        {
2328
            _rData.doubleSided = _JsonValue["doubleSided"].GetBool();
×
2329
        }
2330
        _rData.schemaType = "material.schema.json";
×
2331
        return true;
2332
    }
×
2333

2334
    bool operator>>(const TDataDoc<SMaterial>& _rData, JSONCharValue& _JsonValue)
×
2335
    {
2336
        if (!_rData.doc) return false;
×
2337
        _JsonValue.SetObject();
×
2338
        {
2339
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2340
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
2341
        }
2342
        if (!!_rData.data.pbrMetallicRoughness)
×
2343
        {
×
2344
            JSONCharValue json_value;
2345
            if (!(TDataDoc<SMaterialPBRMetallicRoughness>(*_rData.data.pbrMetallicRoughness, _rData.doc) >> json_value)) return false;
×
2346
            _JsonValue.AddMember("pbrMetallicRoughness", json_value, _rData.doc->GetAllocator());
×
2347
        }
2348
        if (!!_rData.data.normalTexture)
×
2349
        {
2350
            JSONCharValue json_value;
×
2351
            if (!(TDataDoc<SMaterialNormalTextureInfo>(*_rData.data.normalTexture, _rData.doc) >> json_value)) return false;
×
2352
            _JsonValue.AddMember("normalTexture", json_value, _rData.doc->GetAllocator());
×
2353
        }
2354
        if (!!_rData.data.occlusionTexture)
2355
        {
×
2356
            JSONCharValue json_value;
×
2357
            if (!(TDataDoc<SMaterialOcclusionTextureInfo>(*_rData.data.occlusionTexture, _rData.doc) >> json_value)) return false;
×
2358
            _JsonValue.AddMember("occlusionTexture", json_value, _rData.doc->GetAllocator());
2359
        }
2360
        if (!!_rData.data.emissiveTexture)
×
2361
        {
×
2362
            JSONCharValue json_value;
×
2363
            if (!(TDataDoc<STextureInfo>(*_rData.data.emissiveTexture, _rData.doc) >> json_value)) return false;
2364
            _JsonValue.AddMember("emissiveTexture", json_value, _rData.doc->GetAllocator());
×
2365
        }
2366
        if (!_rData.data.emissiveFactor.empty())
2367
        {
×
2368
            JSONCharValue json_value;
2369
            if (!(TDataDoc<std::vector<float>>(_rData.data.emissiveFactor, _rData.doc) >> json_value)) return false;
×
2370
            _JsonValue.AddMember("emissiveFactor", json_value, _rData.doc->GetAllocator());
×
2371
        }
×
2372
        {
×
2373
            JSONCharValue json_value;
2374
            if (!(TDataDoc<std::string>(_rData.data.alphaMode, _rData.doc) >> json_value)) return false;
2375
            _JsonValue.AddMember("alphaMode", json_value, _rData.doc->GetAllocator());
×
2376
        }
2377
        {
×
2378
            JSONCharValue json_value;
×
2379
            if (!(TDataDoc<float>(_rData.data.alphaCutoff, _rData.doc) >> json_value)) return false;
2380
            _JsonValue.AddMember("alphaCutoff", json_value, _rData.doc->GetAllocator());
2381
        }
×
2382
        {
2383
            JSONCharValue json_value;
×
2384
            if (!(TDataDoc<bool>(_rData.data.doubleSided, _rData.doc) >> json_value)) return false;
2385
            _JsonValue.AddMember("doubleSided", json_value, _rData.doc->GetAllocator());
2386
        }
×
2387
        return true;
2388
    }
×
2389

2390
    bool operator<<(std::shared_ptr<SMaterial>& _pData, const JSONCharValue& _JsonValue)
2391
    {
×
2392
        std::shared_ptr<SMaterial> data_ptr = !!_pData ? _pData : std::make_shared<SMaterial>();
2393
        if (!(*data_ptr << _JsonValue)) return false;
2394
        _pData = data_ptr;
×
2395
        return true;
×
2396
    }
2397

×
2398
    bool operator>>(const TDataDoc<std::shared_ptr<SMaterial>>& _rData, JSONCharValue& _JsonValue)
2399
    {
×
2400
        if (!_rData.data) return false;
2401
        return (TDataDoc<SMaterial>(*_rData.data, _rData.doc) >> _JsonValue);
×
2402
    }
2403

×
2404
    bool operator<<(std::vector<std::shared_ptr<SMaterial>>& _vDatas, const JSONCharValue& _JsonValue)
2405
    {
×
2406
        return operator<< <std::shared_ptr<SMaterial>>(_vDatas, _JsonValue);
2407
    }
×
2408

2409
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMaterial>>>& _rData, JSONCharValue& _JsonValue)
×
2410
    {
×
2411
        return operator>> <std::shared_ptr<SMaterial>>(_rData, _JsonValue);
2412
    }
2413

×
2414
    bool operator<<(SMeshPrimitive& _rData, const JSONCharValue& _JsonValue)
2415
    {
×
2416
        {
×
2417
            SGlTFProperty& super_ptr = _rData;
2418
            if (!(super_ptr << _JsonValue)) return false;
×
2419
        }
×
2420
        if (_JsonValue.HasMember("attributes") && _JsonValue["attributes"].IsObject())
2421
        {
2422
            if (!(_rData.attributes << _JsonValue["attributes"])) return false;
×
2423
        }
×
2424
        if (_JsonValue.HasMember("indices") && _JsonValue["indices"].IsInt())
×
2425
        {
2426
            if (!(_rData.indices << _JsonValue["indices"])) return false;
×
2427
        }
2428
        if (_JsonValue.HasMember("material") && _JsonValue["material"].IsInt())
×
2429
        {
×
2430
            if (!(_rData.material << _JsonValue["material"])) return false;
×
2431
        }
2432
        if (_JsonValue.HasMember("mode") && _JsonValue["mode"].IsInt())
×
2433
        {
2434
            _rData.mode = _JsonValue["mode"].GetInt();
×
2435
        }
×
2436
        if (_JsonValue.HasMember("targets") && _JsonValue["targets"].IsArray())
×
2437
        {
2438
            if (!(_rData.targets << _JsonValue["targets"])) return false;
×
2439
        }
2440
        _rData.schemaType = "mesh.primitive.schema.json";
2441
        return true;
×
2442
    }
2443

×
2444
    bool operator>>(const TDataDoc<SMeshPrimitive>& _rData, JSONCharValue& _JsonValue)
×
2445
    {
×
2446
        if (!_rData.doc) return false;
×
2447
        _JsonValue.SetObject();
2448
        {
2449
            const SGlTFProperty& super_ptr = _rData.data;
×
2450
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2451
        }
×
2452
        if (!_rData.data.attributes.empty())
×
2453
        {
2454
            JSONCharValue json_value;
2455
            if (!(TDataDoc<std::map<std::string, std::shared_ptr<SGlTFId>>>(_rData.data.attributes, _rData.doc) >> json_value)) return false;
×
2456
            _JsonValue.AddMember("attributes", json_value, _rData.doc->GetAllocator());
2457
        }
×
2458
        if (!!_rData.data.indices)
2459
        {
2460
            JSONCharValue json_value;
×
2461
            if (!(TDataDoc<SGlTFId>(*_rData.data.indices, _rData.doc) >> json_value)) return false;
2462
            _JsonValue.AddMember("indices", json_value, _rData.doc->GetAllocator());
×
2463
        }
2464
        if (!!_rData.data.material)
2465
        {
×
2466
            JSONCharValue json_value;
2467
            if (!(TDataDoc<SGlTFId>(*_rData.data.material, _rData.doc) >> json_value)) return false;
2468
            _JsonValue.AddMember("material", json_value, _rData.doc->GetAllocator());
×
2469
        }
×
2470
        {
2471
            JSONCharValue json_value;
×
2472
            if (!(TDataDoc<int32_t>(_rData.data.mode, _rData.doc) >> json_value)) return false;
2473
            _JsonValue.AddMember("mode", json_value, _rData.doc->GetAllocator());
×
2474
        }
2475
        if (!_rData.data.targets.empty())
×
2476
        {
2477
            JSONCharValue json_value;
×
2478
            if (!(TDataDoc<std::vector<std::map<std::string, std::shared_ptr<SGlTFId>>>>(_rData.data.targets, _rData.doc) >> json_value)) return false;
2479
            _JsonValue.AddMember("targets", json_value, _rData.doc->GetAllocator());
×
2480
        }
×
2481
        return true;
2482
    }
2483

×
2484
    bool operator<<(std::shared_ptr<SMeshPrimitive>& _pData, const JSONCharValue& _JsonValue)
2485
    {
×
2486
        std::shared_ptr<SMeshPrimitive> data_ptr = !!_pData ? _pData : std::make_shared<SMeshPrimitive>();
×
2487
        if (!(*data_ptr << _JsonValue)) return false;
2488
        _pData = data_ptr;
×
2489
        return true;
×
2490
    }
2491

×
2492
    bool operator>>(const TDataDoc<std::shared_ptr<SMeshPrimitive>>& _rData, JSONCharValue& _JsonValue)
2493
    {
×
2494
        if (!_rData.data) return false;
×
2495
        return (TDataDoc<SMeshPrimitive>(*_rData.data, _rData.doc) >> _JsonValue);
×
2496
    }
2497

2498
    bool operator<<(std::vector<std::shared_ptr<SMeshPrimitive>>& _vDatas, const JSONCharValue& _JsonValue)
×
2499
    {
×
2500
        return operator<< <std::shared_ptr<SMeshPrimitive>>(_vDatas, _JsonValue);
×
2501
    }
2502

×
2503
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMeshPrimitive>>>& _rData, JSONCharValue& _JsonValue)
2504
    {
2505
        return operator>> <std::shared_ptr<SMeshPrimitive>>(_rData, _JsonValue);
×
2506
    }
2507

×
2508
    bool operator<<(SMesh& _rData, const JSONCharValue& _JsonValue)
×
2509
    {
×
2510
        {
×
2511
            SGlTFChildofRootProperty& super_ptr = _rData;
2512
            if (!(super_ptr << _JsonValue)) return false;
2513
        }
×
2514
        if (_JsonValue.HasMember("primitives") && _JsonValue["primitives"].IsArray())
2515
        {
×
2516
            if (!(_rData.primitives << _JsonValue["primitives"])) return false;
×
2517
        }
2518
        if (_JsonValue.HasMember("weights") && _JsonValue["weights"].IsArray())
2519
        {
×
2520
            if (!(_rData.weights << _JsonValue["weights"])) return false;
2521
        }
×
2522
        _rData.schemaType = "mesh.schema.json";
2523
        return true;
2524
    }
×
2525

2526
    bool operator>>(const TDataDoc<SMesh>& _rData, JSONCharValue& _JsonValue)
×
2527
    {
2528
        if (!_rData.doc) return false;
2529
        _JsonValue.SetObject();
384✔
2530
        {
2531
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2532
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
384✔
2533
        }
384✔
2534
        if (!_rData.data.primitives.empty())
2535
        {
384✔
2536
            JSONCharValue json_value;
2537
            if (!(TDataDoc<std::vector<std::shared_ptr<SMeshPrimitive>>>(_rData.data.primitives, _rData.doc) >> json_value)) return false;
384✔
2538
            _JsonValue.AddMember("primitives", json_value, _rData.doc->GetAllocator());
2539
        }
384✔
2540
        if (!_rData.data.weights.empty())
2541
        {
384✔
2542
            JSONCharValue json_value;
2543
            if (!(TDataDoc<std::vector<float>>(_rData.data.weights, _rData.doc) >> json_value)) return false;
384✔
2544
            _JsonValue.AddMember("weights", json_value, _rData.doc->GetAllocator());
384✔
2545
        }
2546
        return true;
2547
    }
×
2548

2549
    bool operator<<(std::shared_ptr<SMesh>& _pData, const JSONCharValue& _JsonValue)
×
2550
    {
×
2551
        std::shared_ptr<SMesh> data_ptr = !!_pData ? _pData : std::make_shared<SMesh>();
2552
        if (!(*data_ptr << _JsonValue)) return false;
×
2553
        _pData = data_ptr;
×
2554
        return true;
2555
    }
×
2556

2557
    bool operator>>(const TDataDoc<std::shared_ptr<SMesh>>& _rData, JSONCharValue& _JsonValue)
×
2558
    {
×
2559
        if (!_rData.data) return false;
×
2560
        return (TDataDoc<SMesh>(*_rData.data, _rData.doc) >> _JsonValue);
2561
    }
×
2562

2563
    bool operator<<(std::vector<std::shared_ptr<SMesh>>& _vDatas, const JSONCharValue& _JsonValue)
×
2564
    {
×
2565
        return operator<< <std::shared_ptr<SMesh>>(_vDatas, _JsonValue);
×
2566
    }
2567

×
2568
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMesh>>>& _rData, JSONCharValue& _JsonValue)
2569
    {
2570
        return operator>> <std::shared_ptr<SMesh>>(_rData, _JsonValue);
384✔
2571
    }
2572

384✔
2573
    bool operator<<(SNode& _rData, const JSONCharValue& _JsonValue)
384✔
2574
    {
384✔
2575
        {
384✔
2576
            SGlTFChildofRootProperty& super_ptr = _rData;
384✔
2577
            if (!(super_ptr << _JsonValue)) return false;
2578
        }
×
2579
        if (_JsonValue.HasMember("camera") && _JsonValue["camera"].IsInt())
2580
        {
×
2581
            if (!(_rData.camera << _JsonValue["camera"])) return false;
×
2582
        }
2583
        if (_JsonValue.HasMember("children") && _JsonValue["children"].IsArray())
2584
        {
4✔
2585
            if (!(_rData.children << _JsonValue["children"])) return false;
2586
        }
4✔
2587
        if (_JsonValue.HasMember("skin") && _JsonValue["skin"].IsInt())
2588
        {
2589
            if (!(_rData.skin << _JsonValue["skin"])) return false;
×
2590
        }
2591
        if (_JsonValue.HasMember("matrix") && _JsonValue["matrix"].IsArray())
×
2592
        {
2593
            if (!(_rData.matrix << _JsonValue["matrix"])) return false;
2594
        }
384✔
2595
        if (_JsonValue.HasMember("mesh") && _JsonValue["mesh"].IsInt())
2596
        {
2597
            if (!(_rData.mesh << _JsonValue["mesh"])) return false;
384✔
2598
        }
384✔
2599
        if (_JsonValue.HasMember("rotation") && _JsonValue["rotation"].IsArray())
2600
        {
384✔
2601
            if (!(_rData.rotation << _JsonValue["rotation"])) return false;
2602
        }
384✔
2603
        if (_JsonValue.HasMember("scale") && _JsonValue["scale"].IsArray())
2604
        {
384✔
2605
            if (!(_rData.scale << _JsonValue["scale"])) return false;
2606
        }
384✔
2607
        if (_JsonValue.HasMember("translation") && _JsonValue["translation"].IsArray())
2608
        {
384✔
2609
            if (!(_rData.translation << _JsonValue["translation"])) return false;
384✔
2610
        }
2611
        if (_JsonValue.HasMember("weights") && _JsonValue["weights"].IsArray())
2612
        {
×
2613
            if (!(_rData.weights << _JsonValue["weights"])) return false;
2614
        }
×
2615
        _rData.schemaType = "node.schema.json";
×
2616
        return true;
2617
    }
×
2618

×
2619
    bool operator>>(const TDataDoc<SNode>& _rData, JSONCharValue& _JsonValue)
2620
    {
×
2621
        if (!_rData.doc) return false;
2622
        _JsonValue.SetObject();
×
2623
        {
×
2624
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
2625
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2626
        }
2627
        if (!!_rData.data.camera)
×
2628
        {
×
2629
            JSONCharValue json_value;
×
2630
            if (!(TDataDoc<SGlTFId>(*_rData.data.camera, _rData.doc) >> json_value)) return false;
2631
            _JsonValue.AddMember("camera", json_value, _rData.doc->GetAllocator());
×
2632
        }
2633
        if (!_rData.data.children.empty())
2634
        {
384✔
2635
            JSONCharValue json_value;
2636
            if (!(TDataDoc<std::vector<std::shared_ptr<SGlTFId>>>(_rData.data.children, _rData.doc) >> json_value)) return false;
384✔
2637
            _JsonValue.AddMember("children", json_value, _rData.doc->GetAllocator());
384✔
2638
        }
384✔
2639
        if (!!_rData.data.skin)
384✔
2640
        {
384✔
2641
            JSONCharValue json_value;
2642
            if (!(TDataDoc<SGlTFId>(*_rData.data.skin, _rData.doc) >> json_value)) return false;
×
2643
            _JsonValue.AddMember("skin", json_value, _rData.doc->GetAllocator());
2644
        }
×
2645
        if (!_rData.data.matrix.empty())
×
2646
        {
2647
            JSONCharValue json_value;
2648
            if (!(TDataDoc<std::vector<float>>(_rData.data.matrix, _rData.doc) >> json_value)) return false;
×
2649
            _JsonValue.AddMember("matrix", json_value, _rData.doc->GetAllocator());
2650
        }
×
2651
        if (!!_rData.data.mesh)
2652
        {
2653
            JSONCharValue json_value;
×
2654
            if (!(TDataDoc<SGlTFId>(*_rData.data.mesh, _rData.doc) >> json_value)) return false;
2655
            _JsonValue.AddMember("mesh", json_value, _rData.doc->GetAllocator());
×
2656
        }
2657
        if (!_rData.data.rotation.empty())
2658
        {
384✔
2659
            JSONCharValue json_value;
2660
            if (!(TDataDoc<std::vector<float>>(_rData.data.rotation, _rData.doc) >> json_value)) return false;
2661
            _JsonValue.AddMember("rotation", json_value, _rData.doc->GetAllocator());
384✔
2662
        }
384✔
2663
        if (!_rData.data.scale.empty())
2664
        {
384✔
2665
            JSONCharValue json_value;
2666
            if (!(TDataDoc<std::vector<float>>(_rData.data.scale, _rData.doc) >> json_value)) return false;
384✔
2667
            _JsonValue.AddMember("scale", json_value, _rData.doc->GetAllocator());
2668
        }
384✔
2669
        if (!_rData.data.translation.empty())
2670
        {
384✔
2671
            JSONCharValue json_value;
2672
            if (!(TDataDoc<std::vector<float>>(_rData.data.translation, _rData.doc) >> json_value)) return false;
384✔
2673
            _JsonValue.AddMember("translation", json_value, _rData.doc->GetAllocator());
2674
        }
384✔
2675
        if (!_rData.data.weights.empty())
2676
        {
384✔
2677
            JSONCharValue json_value;
384✔
2678
            if (!(TDataDoc<std::vector<float>>(_rData.data.weights, _rData.doc) >> json_value)) return false;
2679
            _JsonValue.AddMember("weights", json_value, _rData.doc->GetAllocator());
2680
        }
×
2681
        return true;
2682
    }
×
2683

×
2684
    bool operator<<(std::shared_ptr<SNode>& _pData, const JSONCharValue& _JsonValue)
2685
    {
×
2686
        std::shared_ptr<SNode> data_ptr = !!_pData ? _pData : std::make_shared<SNode>();
×
2687
        if (!(*data_ptr << _JsonValue)) return false;
2688
        _pData = data_ptr;
×
2689
        return true;
2690
    }
×
2691

×
2692
    bool operator>>(const TDataDoc<std::shared_ptr<SNode>>& _rData, JSONCharValue& _JsonValue)
×
2693
    {
2694
        if (!_rData.data) return false;
2695
        return (TDataDoc<SNode>(*_rData.data, _rData.doc) >> _JsonValue);
×
2696
    }
×
2697

×
2698
    bool operator<<(std::vector<std::shared_ptr<SNode>>& _vDatas, const JSONCharValue& _JsonValue)
2699
    {
×
2700
        return operator<< <std::shared_ptr<SNode>>(_vDatas, _JsonValue);
2701
    }
×
2702

×
2703
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SNode>>>& _rData, JSONCharValue& _JsonValue)
×
2704
    {
2705
        return operator>> <std::shared_ptr<SNode>>(_rData, _JsonValue);
×
2706
    }
2707

2708
    bool operator<<(SSampler& _rData, const JSONCharValue& _JsonValue)
384✔
2709
    {
2710
        {
384✔
2711
            SGlTFChildofRootProperty& super_ptr = _rData;
384✔
2712
            if (!(super_ptr << _JsonValue)) return false;
384✔
2713
        }
384✔
2714
        if (_JsonValue.HasMember("magFilter") && _JsonValue["magFilter"].IsInt())
384✔
2715
        {
2716
            _rData.magFilter = _JsonValue["magFilter"].GetInt();
×
2717
        }
2718
        if (_JsonValue.HasMember("minFilter") && _JsonValue["minFilter"].IsInt())
×
2719
        {
×
2720
            _rData.minFilter = _JsonValue["minFilter"].GetInt();
2721
        }
2722
        if (_JsonValue.HasMember("wrapS") && _JsonValue["wrapS"].IsInt())
4✔
2723
        {
2724
            _rData.wrapS = _JsonValue["wrapS"].GetInt();
4✔
2725
        }
2726
        if (_JsonValue.HasMember("wrapT") && _JsonValue["wrapT"].IsInt())
2727
        {
×
2728
            _rData.wrapT = _JsonValue["wrapT"].GetInt();
2729
        }
×
2730
        _rData.schemaType = "sampler.schema.json";
2731
        return true;
2732
    }
4✔
2733

2734
    bool operator>>(const TDataDoc<SSampler>& _rData, JSONCharValue& _JsonValue)
2735
    {
4✔
2736
        if (!_rData.doc) return false;
4✔
2737
        _JsonValue.SetObject();
2738
        {
4✔
2739
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2740
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4✔
2741
        }
2742
        {
4✔
2743
            JSONCharValue json_value;
2744
            if (!(TDataDoc<int32_t>(_rData.data.magFilter, _rData.doc) >> json_value)) return false;
4✔
2745
            _JsonValue.AddMember("magFilter", json_value, _rData.doc->GetAllocator());
2746
        }
4✔
2747
        {
4✔
2748
            JSONCharValue json_value;
2749
            if (!(TDataDoc<int32_t>(_rData.data.minFilter, _rData.doc) >> json_value)) return false;
2750
            _JsonValue.AddMember("minFilter", json_value, _rData.doc->GetAllocator());
×
2751
        }
2752
        {
×
2753
            JSONCharValue json_value;
×
2754
            if (!(TDataDoc<int32_t>(_rData.data.wrapS, _rData.doc) >> json_value)) return false;
2755
            _JsonValue.AddMember("wrapS", json_value, _rData.doc->GetAllocator());
×
2756
        }
×
2757
        {
2758
            JSONCharValue json_value;
×
2759
            if (!(TDataDoc<int32_t>(_rData.data.wrapT, _rData.doc) >> json_value)) return false;
2760
            _JsonValue.AddMember("wrapT", json_value, _rData.doc->GetAllocator());
×
2761
        }
×
2762
        return true;
×
2763
    }
2764

×
2765
    bool operator<<(std::shared_ptr<SSampler>& _pData, const JSONCharValue& _JsonValue)
2766
    {
×
2767
        std::shared_ptr<SSampler> data_ptr = !!_pData ? _pData : std::make_shared<SSampler>();
×
2768
        if (!(*data_ptr << _JsonValue)) return false;
×
2769
        _pData = data_ptr;
2770
        return true;
×
2771
    }
2772

2773
    bool operator>>(const TDataDoc<std::shared_ptr<SSampler>>& _rData, JSONCharValue& _JsonValue)
4✔
2774
    {
2775
        if (!_rData.data) return false;
4✔
2776
        return (TDataDoc<SSampler>(*_rData.data, _rData.doc) >> _JsonValue);
4✔
2777
    }
4✔
2778

4✔
2779
    bool operator<<(std::vector<std::shared_ptr<SSampler>>& _vDatas, const JSONCharValue& _JsonValue)
4✔
2780
    {
2781
        return operator<< <std::shared_ptr<SSampler>>(_vDatas, _JsonValue);
×
2782
    }
2783

×
2784
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SSampler>>>& _rData, JSONCharValue& _JsonValue)
×
2785
    {
2786
        return operator>> <std::shared_ptr<SSampler>>(_rData, _JsonValue);
2787
    }
4✔
2788

2789
    bool operator<<(SScene& _rData, const JSONCharValue& _JsonValue)
4✔
2790
    {
2791
        {
2792
            SGlTFChildofRootProperty& super_ptr = _rData;
×
2793
            if (!(super_ptr << _JsonValue)) return false;
2794
        }
×
2795
        if (_JsonValue.HasMember("nodes") && _JsonValue["nodes"].IsArray())
2796
        {
2797
            if (!(_rData.nodes << _JsonValue["nodes"])) return false;
17✔
2798
        }
2799
        _rData.schemaType = "scene.schema.json";
2800
        return true;
17✔
2801
    }
17✔
2802

2803
    bool operator>>(const TDataDoc<SScene>& _rData, JSONCharValue& _JsonValue)
17✔
2804
    {
2805
        if (!_rData.doc) return false;
6✔
2806
        _JsonValue.SetObject();
2807
        {
17✔
2808
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2809
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
14✔
2810
        }
2811
        if (!_rData.data.nodes.empty())
17✔
2812
        {
2813
            JSONCharValue json_value;
17✔
2814
            if (!(TDataDoc<std::vector<std::shared_ptr<SGlTFId>>>(_rData.data.nodes, _rData.doc) >> json_value)) return false;
2815
            _JsonValue.AddMember("nodes", json_value, _rData.doc->GetAllocator());
17✔
2816
        }
2817
        return true;
×
2818
    }
2819

17✔
2820
    bool operator<<(std::shared_ptr<SScene>& _pData, const JSONCharValue& _JsonValue)
17✔
2821
    {
2822
        std::shared_ptr<SScene> data_ptr = !!_pData ? _pData : std::make_shared<SScene>();
2823
        if (!(*data_ptr << _JsonValue)) return false;
×
2824
        _pData = data_ptr;
2825
        return true;
×
2826
    }
×
2827

2828
    bool operator>>(const TDataDoc<std::shared_ptr<SScene>>& _rData, JSONCharValue& _JsonValue)
×
2829
    {
×
2830
        if (!_rData.data) return false;
2831
        return (TDataDoc<SScene>(*_rData.data, _rData.doc) >> _JsonValue);
2832
    }
×
2833

×
2834
    bool operator<<(std::vector<std::shared_ptr<SScene>>& _vDatas, const JSONCharValue& _JsonValue)
×
2835
    {
2836
        return operator<< <std::shared_ptr<SScene>>(_vDatas, _JsonValue);
2837
    }
×
2838

×
2839
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SScene>>>& _rData, JSONCharValue& _JsonValue)
×
2840
    {
2841
        return operator>> <std::shared_ptr<SScene>>(_rData, _JsonValue);
2842
    }
×
2843

×
2844
    bool operator<<(SSkin& _rData, const JSONCharValue& _JsonValue)
×
2845
    {
2846
        {
2847
            SGlTFChildofRootProperty& super_ptr = _rData;
×
2848
            if (!(super_ptr << _JsonValue)) return false;
×
2849
        }
×
2850
        if (_JsonValue.HasMember("inverseBindMatrices") && _JsonValue["inverseBindMatrices"].IsInt())
2851
        {
×
2852
            if (!(_rData.inverseBindMatrices << _JsonValue["inverseBindMatrices"])) return false;
2853
        }
2854
        if (_JsonValue.HasMember("skeleton") && _JsonValue["skeleton"].IsInt())
17✔
2855
        {
2856
            if (!(_rData.skeleton << _JsonValue["skeleton"])) return false;
17✔
2857
        }
17✔
2858
        if (_JsonValue.HasMember("joints") && _JsonValue["joints"].IsArray())
17✔
2859
        {
17✔
2860
            if (!(_rData.joints << _JsonValue["joints"])) return false;
17✔
2861
        }
2862
        _rData.schemaType = "skin.schema.json";
×
2863
        return true;
2864
    }
×
2865

×
2866
    bool operator>>(const TDataDoc<SSkin>& _rData, JSONCharValue& _JsonValue)
2867
    {
2868
        if (!_rData.doc) return false;
×
2869
        _JsonValue.SetObject();
2870
        {
×
2871
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2872
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2873
        }
×
2874
        if (!!_rData.data.inverseBindMatrices)
2875
        {
×
2876
            JSONCharValue json_value;
2877
            if (!(TDataDoc<SGlTFId>(*_rData.data.inverseBindMatrices, _rData.doc) >> json_value)) return false;
2878
            _JsonValue.AddMember("inverseBindMatrices", json_value, _rData.doc->GetAllocator());
17✔
2879
        }
2880
        if (!!_rData.data.skeleton)
2881
        {
17✔
2882
            JSONCharValue json_value;
17✔
2883
            if (!(TDataDoc<SGlTFId>(*_rData.data.skeleton, _rData.doc) >> json_value)) return false;
2884
            _JsonValue.AddMember("skeleton", json_value, _rData.doc->GetAllocator());
17✔
2885
        }
2886
        if (!_rData.data.joints.empty())
16✔
2887
        {
2888
            JSONCharValue json_value;
17✔
2889
            if (!(TDataDoc<std::vector<std::shared_ptr<SGlTFId>>>(_rData.data.joints, _rData.doc) >> json_value)) return false;
2890
            _JsonValue.AddMember("joints", json_value, _rData.doc->GetAllocator());
17✔
2891
        }
2892
        return true;
17✔
2893
    }
17✔
2894

2895
    bool operator<<(std::shared_ptr<SSkin>& _pData, const JSONCharValue& _JsonValue)
2896
    {
×
2897
        std::shared_ptr<SSkin> data_ptr = !!_pData ? _pData : std::make_shared<SSkin>();
2898
        if (!(*data_ptr << _JsonValue)) return false;
×
2899
        _pData = data_ptr;
×
2900
        return true;
2901
    }
×
2902

×
2903
    bool operator>>(const TDataDoc<std::shared_ptr<SSkin>>& _rData, JSONCharValue& _JsonValue)
2904
    {
2905
        if (!_rData.data) return false;
×
2906
        return (TDataDoc<SSkin>(*_rData.data, _rData.doc) >> _JsonValue);
×
2907
    }
×
2908

2909
    bool operator<<(std::vector<std::shared_ptr<SSkin>>& _vDatas, const JSONCharValue& _JsonValue)
2910
    {
×
2911
        return operator<< <std::shared_ptr<SSkin>>(_vDatas, _JsonValue);
×
2912
    }
×
2913

2914
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SSkin>>>& _rData, JSONCharValue& _JsonValue)
×
2915
    {
2916
        return operator>> <std::shared_ptr<SSkin>>(_rData, _JsonValue);
2917
    }
17✔
2918

2919
    bool operator<<(STexture& _rData, const JSONCharValue& _JsonValue)
17✔
2920
    {
17✔
2921
        {
17✔
2922
            SGlTFChildofRootProperty& super_ptr = _rData;
17✔
2923
            if (!(super_ptr << _JsonValue)) return false;
17✔
2924
        }
2925
        if (_JsonValue.HasMember("sampler") && _JsonValue["sampler"].IsInt())
×
2926
        {
2927
            if (!(_rData.sampler << _JsonValue["sampler"])) return false;
×
2928
        }
×
2929
        if (_JsonValue.HasMember("source") && _JsonValue["source"].IsInt())
2930
        {
2931
            if (!(_rData.source << _JsonValue["source"])) return false;
17✔
2932
        }
2933
        _rData.schemaType = "texture.schema.json";
17✔
2934
        return true;
2935
    }
2936

×
2937
    bool operator>>(const TDataDoc<STexture>& _rData, JSONCharValue& _JsonValue)
2938
    {
×
2939
        if (!_rData.doc) return false;
2940
        _JsonValue.SetObject();
2941
        {
124✔
2942
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
2943
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2944
        }
124✔
2945
        if (!!_rData.data.sampler)
124✔
2946
        {
2947
            JSONCharValue json_value;
124✔
2948
            if (!(TDataDoc<SGlTFId>(*_rData.data.sampler, _rData.doc) >> json_value)) return false;
2949
            _JsonValue.AddMember("sampler", json_value, _rData.doc->GetAllocator());
124✔
2950
        }
2951
        if (!!_rData.data.source)
124✔
2952
        {
2953
            JSONCharValue json_value;
123✔
2954
            if (!(TDataDoc<SGlTFId>(*_rData.data.source, _rData.doc) >> json_value)) return false;
2955
            _JsonValue.AddMember("source", json_value, _rData.doc->GetAllocator());
124✔
2956
        }
2957
        return true;
124✔
2958
    }
2959

124✔
2960
    bool operator<<(std::shared_ptr<STexture>& _pData, const JSONCharValue& _JsonValue)
2961
    {
22✔
2962
        std::shared_ptr<STexture> data_ptr = !!_pData ? _pData : std::make_shared<STexture>();
2963
        if (!(*data_ptr << _JsonValue)) return false;
124✔
2964
        _pData = data_ptr;
2965
        return true;
68✔
2966
    }
2967

124✔
2968
    bool operator>>(const TDataDoc<std::shared_ptr<STexture>>& _rData, JSONCharValue& _JsonValue)
124✔
2969
    {
2970
        if (!_rData.data) return false;
2971
        return (TDataDoc<STexture>(*_rData.data, _rData.doc) >> _JsonValue);
×
2972
    }
2973

×
2974
    bool operator<<(std::vector<std::shared_ptr<STexture>>& _vDatas, const JSONCharValue& _JsonValue)
×
2975
    {
2976
        return operator<< <std::shared_ptr<STexture>>(_vDatas, _JsonValue);
×
2977
    }
×
2978

2979
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<STexture>>>& _rData, JSONCharValue& _JsonValue)
×
2980
    {
2981
        return operator>> <std::shared_ptr<STexture>>(_rData, _JsonValue);
×
2982
    }
×
2983

×
2984
    bool operator<<(STextureInfo& _rData, const JSONCharValue& _JsonValue)
2985
    {
2986
        {
×
2987
            SGlTFProperty& super_ptr = _rData;
×
2988
            if (!(super_ptr << _JsonValue)) return false;
×
2989
        }
2990
        if (_JsonValue.HasMember("index") && _JsonValue["index"].IsInt())
2991
        {
×
2992
            if (!(_rData.index << _JsonValue["index"])) return false;
×
2993
        }
×
2994
        if (_JsonValue.HasMember("texCoord") && _JsonValue["texCoord"].IsInt())
2995
        {
2996
            _rData.texCoord = _JsonValue["texCoord"].GetInt();
×
2997
        }
×
2998
        _rData.schemaType = "textureInfo.schema.json";
×
2999
        return true;
3000
    }
3001

×
3002
    bool operator>>(const TDataDoc<STextureInfo>& _rData, JSONCharValue& _JsonValue)
×
3003
    {
×
3004
        if (!_rData.doc) return false;
3005
        _JsonValue.SetObject();
×
3006
        {
3007
            const SGlTFProperty& super_ptr = _rData.data;
3008
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
124✔
3009
        }
3010
        if (!!_rData.data.index)
124✔
3011
        {
124✔
3012
            JSONCharValue json_value;
124✔
3013
            if (!(TDataDoc<SGlTFId>(*_rData.data.index, _rData.doc) >> json_value)) return false;
124✔
3014
            _JsonValue.AddMember("index", json_value, _rData.doc->GetAllocator());
124✔
3015
        }
3016
        {
×
3017
            JSONCharValue json_value;
3018
            if (!(TDataDoc<int32_t>(_rData.data.texCoord, _rData.doc) >> json_value)) return false;
×
3019
            _JsonValue.AddMember("texCoord", json_value, _rData.doc->GetAllocator());
×
3020
        }
3021
        return true;
3022
    }
17✔
3023

3024
    bool operator<<(std::shared_ptr<STextureInfo>& _pData, const JSONCharValue& _JsonValue)
17✔
3025
    {
3026
        std::shared_ptr<STextureInfo> data_ptr = !!_pData ? _pData : std::make_shared<STextureInfo>();
3027
        if (!(*data_ptr << _JsonValue)) return false;
×
3028
        _pData = data_ptr;
3029
        return true;
×
3030
    }
3031

3032
    bool operator>>(const TDataDoc<std::shared_ptr<STextureInfo>>& _rData, JSONCharValue& _JsonValue)
1✔
3033
    {
3034
        if (!_rData.data) return false;
3035
        return (TDataDoc<STextureInfo>(*_rData.data, _rData.doc) >> _JsonValue);
1✔
3036
    }
1✔
3037

3038
    bool operator<<(std::vector<std::shared_ptr<STextureInfo>>& _vDatas, const JSONCharValue& _JsonValue)
1✔
3039
    {
3040
        return operator<< <std::shared_ptr<STextureInfo>>(_vDatas, _JsonValue);
1✔
3041
    }
3042

1✔
3043
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<STextureInfo>>>& _rData, JSONCharValue& _JsonValue)
3044
    {
1✔
3045
        return operator>> <std::shared_ptr<STextureInfo>>(_rData, _JsonValue);
3046
    }
1✔
3047

3048
    bool operator<<(SKHR_draco_mesh_compressionextension& _rData, const JSONCharValue& _JsonValue)
1✔
3049
    {
3050
        {
1✔
3051
            SGlTFProperty& super_ptr = _rData;
3052
            if (!(super_ptr << _JsonValue)) return false;
1✔
3053
        }
3054
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
1✔
3055
        {
1✔
3056
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
3057
        }
3058
        if (_JsonValue.HasMember("attributes") && _JsonValue["attributes"].IsObject())
×
3059
        {
3060
            if (!(_rData.attributes << _JsonValue["attributes"])) return false;
×
3061
        }
×
3062
        _rData.schemaType = "mesh.primitive.KHR_draco_mesh_compression.schema.json";
3063
        return true;
×
3064
    }
×
3065

3066
    bool operator>>(const TDataDoc<SKHR_draco_mesh_compressionextension>& _rData, JSONCharValue& _JsonValue)
3067
    {
×
3068
        if (!_rData.doc) return false;
×
3069
        _JsonValue.SetObject();
×
3070
        {
3071
            const SGlTFProperty& super_ptr = _rData.data;
3072
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
3073
        }
×
3074
        if (!!_rData.data.bufferView)
×
3075
        {
3076
            JSONCharValue json_value;
3077
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
×
3078
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
×
3079
        }
×
3080
        if (!_rData.data.attributes.empty())
3081
        {
3082
            JSONCharValue json_value;
×
3083
            if (!(TDataDoc<std::map<std::string, std::shared_ptr<SGlTFId>>>(_rData.data.attributes, _rData.doc) >> json_value)) return false;
×
3084
            _JsonValue.AddMember("attributes", json_value, _rData.doc->GetAllocator());
×
3085
        }
3086
        return true;
×
3087
    }
3088

3089
    bool operator<<(std::shared_ptr<SKHR_draco_mesh_compressionextension>& _pData, const JSONCharValue& _JsonValue)
1✔
3090
    {
3091
        std::shared_ptr<SKHR_draco_mesh_compressionextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_draco_mesh_compressionextension>();
1✔
3092
        if (!(*data_ptr << _JsonValue)) return false;
1✔
3093
        _pData = data_ptr;
1✔
3094
        return true;
1✔
3095
    }
1✔
3096

3097
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_draco_mesh_compressionextension>>& _rData, JSONCharValue& _JsonValue)
×
3098
    {
3099
        if (!_rData.data) return false;
×
3100
        return (TDataDoc<SKHR_draco_mesh_compressionextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
3101
    }
3102

3103
    bool operator<<(std::vector<std::shared_ptr<SKHR_draco_mesh_compressionextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3104
    {
3105
        return operator<< <std::shared_ptr<SKHR_draco_mesh_compressionextension>>(_vDatas, _JsonValue);
×
3106
    }
3107

3108
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_draco_mesh_compressionextension>>>& _rData, JSONCharValue& _JsonValue)
×
3109
    {
3110
        return operator>> <std::shared_ptr<SKHR_draco_mesh_compressionextension>>(_rData, _JsonValue);
×
3111
    }
3112

3113
    bool operator<<(SKHR_lights_punctualglTFextension& _rData, const JSONCharValue& _JsonValue)
4✔
3114
    {
3115
        {
3116
            SGlTFProperty& super_ptr = _rData;
4✔
3117
            if (!(super_ptr << _JsonValue)) return false;
4✔
3118
        }
3119
        if (_JsonValue.HasMember("lights") && _JsonValue["lights"].IsArray())
4✔
3120
        {
3121
            if (!(_rData.lights << _JsonValue["lights"])) return false;
4✔
3122
        }
3123
        _rData.schemaType = "glTF.KHR_lights_punctual.schema.json";
4✔
3124
        return true;
3125
    }
4✔
3126

3127
    bool operator>>(const TDataDoc<SKHR_lights_punctualglTFextension>& _rData, JSONCharValue& _JsonValue)
4✔
3128
    {
3129
        if (!_rData.doc) return false;
4✔
3130
        _JsonValue.SetObject();
3131
        {
4✔
3132
            const SGlTFProperty& super_ptr = _rData.data;
3133
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4✔
3134
        }
3135
        if (!_rData.data.lights.empty())
4✔
3136
        {
4✔
3137
            JSONCharValue json_value;
3138
            if (!(TDataDoc<std::vector<std::shared_ptr<SLight>>>(_rData.data.lights, _rData.doc) >> json_value)) return false;
3139
            _JsonValue.AddMember("lights", json_value, _rData.doc->GetAllocator());
×
3140
        }
3141
        return true;
×
3142
    }
×
3143

3144
    bool operator<<(std::shared_ptr<SKHR_lights_punctualglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3145
    {
×
3146
        std::shared_ptr<SKHR_lights_punctualglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_lights_punctualglTFextension>();
3147
        if (!(*data_ptr << _JsonValue)) return false;
3148
        _pData = data_ptr;
×
3149
        return true;
×
3150
    }
×
3151

3152
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_lights_punctualglTFextension>>& _rData, JSONCharValue& _JsonValue)
3153
    {
×
3154
        if (!_rData.data) return false;
×
3155
        return (TDataDoc<SKHR_lights_punctualglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
3156
    }
3157

3158
    bool operator<<(std::vector<std::shared_ptr<SKHR_lights_punctualglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3159
    {
×
3160
        return operator<< <std::shared_ptr<SKHR_lights_punctualglTFextension>>(_vDatas, _JsonValue);
×
3161
    }
3162

3163
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_lights_punctualglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3164
    {
×
3165
        return operator>> <std::shared_ptr<SKHR_lights_punctualglTFextension>>(_rData, _JsonValue);
×
3166
    }
3167

×
3168
    bool operator<<(SLight& _rData, const JSONCharValue& _JsonValue)
3169
    {
3170
        {
4✔
3171
            SGlTFChildofRootProperty& super_ptr = _rData;
3172
            if (!(super_ptr << _JsonValue)) return false;
4✔
3173
        }
4✔
3174
        if (_JsonValue.HasMember("color") && _JsonValue["color"].IsArray())
4✔
3175
        {
4✔
3176
            if (!(_rData.color << _JsonValue["color"])) return false;
4✔
3177
        }
3178
        if (_JsonValue.HasMember("intensity") && _JsonValue["intensity"].IsNumber())
×
3179
        {
3180
            _rData.intensity = _JsonValue["intensity"].GetFloat();
×
3181
        }
×
3182
        if (_JsonValue.HasMember("spot") && _JsonValue["spot"].IsObject())
3183
        {
3184
            if (!(_rData.spot << _JsonValue["spot"])) return false;
×
3185
        }
3186
        if (_JsonValue.HasMember("type") && _JsonValue["type"].IsString())
×
3187
        {
3188
            _rData.type = _JsonValue["type"].GetString();
3189
        }
×
3190
        if (_JsonValue.HasMember("range") && _JsonValue["range"].IsNumber())
3191
        {
×
3192
            _rData.range = _JsonValue["range"].GetFloat();
3193
        }
3194
        _rData.schemaType = "light.schema.json";
5✔
3195
        return true;
3196
    }
3197

5✔
3198
    bool operator>>(const TDataDoc<SLight>& _rData, JSONCharValue& _JsonValue)
5✔
3199
    {
3200
        if (!_rData.doc) return false;
5✔
3201
        _JsonValue.SetObject();
3202
        {
1✔
3203
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
3204
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
5✔
3205
        }
3206
        if (!_rData.data.color.empty())
4✔
3207
        {
3208
            JSONCharValue json_value;
5✔
3209
            if (!(TDataDoc<std::vector<float>>(_rData.data.color, _rData.doc) >> json_value)) return false;
3210
            _JsonValue.AddMember("color", json_value, _rData.doc->GetAllocator());
5✔
3211
        }
3212
        {
5✔
3213
            JSONCharValue json_value;
5✔
3214
            if (!(TDataDoc<float>(_rData.data.intensity, _rData.doc) >> json_value)) return false;
3215
            _JsonValue.AddMember("intensity", json_value, _rData.doc->GetAllocator());
3216
        }
×
3217
        if (!!_rData.data.spot)
3218
        {
×
3219
            JSONCharValue json_value;
×
3220
            if (!(TDataDoc<SLightspot>(*_rData.data.spot, _rData.doc) >> json_value)) return false;
3221
            _JsonValue.AddMember("spot", json_value, _rData.doc->GetAllocator());
×
3222
        }
×
3223
        {
3224
            JSONCharValue json_value;
×
3225
            if (!(TDataDoc<std::string>(_rData.data.type, _rData.doc) >> json_value)) return false;
3226
            _JsonValue.AddMember("type", json_value, _rData.doc->GetAllocator());
×
3227
        }
×
3228
        {
×
3229
            JSONCharValue json_value;
3230
            if (!(TDataDoc<float>(_rData.data.range, _rData.doc) >> json_value)) return false;
×
3231
            _JsonValue.AddMember("range", json_value, _rData.doc->GetAllocator());
3232
        }
×
3233
        return true;
×
3234
    }
×
3235

3236
    bool operator<<(std::shared_ptr<SLight>& _pData, const JSONCharValue& _JsonValue)
3237
    {
×
3238
        std::shared_ptr<SLight> data_ptr = !!_pData ? _pData : std::make_shared<SLight>();
×
3239
        if (!(*data_ptr << _JsonValue)) return false;
×
3240
        _pData = data_ptr;
3241
        return true;
×
3242
    }
3243

3244
    bool operator>>(const TDataDoc<std::shared_ptr<SLight>>& _rData, JSONCharValue& _JsonValue)
5✔
3245
    {
3246
        if (!_rData.data) return false;
5✔
3247
        return (TDataDoc<SLight>(*_rData.data, _rData.doc) >> _JsonValue);
5✔
3248
    }
5✔
3249

5✔
3250
    bool operator<<(std::vector<std::shared_ptr<SLight>>& _vDatas, const JSONCharValue& _JsonValue)
5✔
3251
    {
3252
        return operator<< <std::shared_ptr<SLight>>(_vDatas, _JsonValue);
×
3253
    }
3254

×
3255
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SLight>>>& _rData, JSONCharValue& _JsonValue)
×
3256
    {
3257
        return operator>> <std::shared_ptr<SLight>>(_rData, _JsonValue);
3258
    }
4✔
3259

3260
    bool operator<<(SLightspot& _rData, const JSONCharValue& _JsonValue)
4✔
3261
    {
3262
        {
3263
            SGlTFProperty& super_ptr = _rData;
×
3264
            if (!(super_ptr << _JsonValue)) return false;
3265
        }
×
3266
        if (_JsonValue.HasMember("innerConeAngle") && _JsonValue["innerConeAngle"].IsNumber())
3267
        {
3268
            _rData.innerConeAngle = _JsonValue["innerConeAngle"].GetFloat();
8✔
3269
        }
3270
        if (_JsonValue.HasMember("outerConeAngle") && _JsonValue["outerConeAngle"].IsNumber())
3271
        {
8✔
3272
            _rData.outerConeAngle = _JsonValue["outerConeAngle"].GetFloat();
3273
        }
1✔
3274
        _rData.schemaType = "light.spot.schema.json";
1✔
3275
        return true;
1✔
3276
    }
1✔
3277

8✔
3278
    bool operator>>(const TDataDoc<SLightspot>& _rData, JSONCharValue& _JsonValue)
3279
    {
×
3280
        if (!_rData.doc) return false;
×
3281
        _JsonValue.SetObject();
3282
        {
×
3283
            const SGlTFProperty& super_ptr = _rData.data;
×
3284
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
3285
        }
×
3286
        {
3287
            JSONCharValue json_value;
3288
            if (!(TDataDoc<float>(_rData.data.innerConeAngle, _rData.doc) >> json_value)) return false;
×
3289
            _JsonValue.AddMember("innerConeAngle", json_value, _rData.doc->GetAllocator());
3290
        }
×
3291
        {
×
3292
            JSONCharValue json_value;
3293
            if (!(TDataDoc<float>(_rData.data.outerConeAngle, _rData.doc) >> json_value)) return false;
×
3294
            _JsonValue.AddMember("outerConeAngle", json_value, _rData.doc->GetAllocator());
3295
        }
3296
        return true;
3297
    }
8✔
3298

3299
    bool operator<<(std::shared_ptr<SLightspot>& _pData, const JSONCharValue& _JsonValue)
×
3300
    {
×
3301
        std::shared_ptr<SLightspot> data_ptr = !!_pData ? _pData : std::make_shared<SLightspot>();
×
3302
        if (!(*data_ptr << _JsonValue)) return false;
3303
        _pData = data_ptr;
8✔
3304
        return true;
3305
    }
×
3306

×
3307
    bool operator>>(const TDataDoc<std::shared_ptr<SLightspot>>& _rData, JSONCharValue& _JsonValue)
×
3308
    {
3309
        if (!_rData.data) return false;
8✔
3310
        return (TDataDoc<SLightspot>(*_rData.data, _rData.doc) >> _JsonValue);
3311
    }
×
3312

×
3313
    bool operator<<(std::vector<std::shared_ptr<SLightspot>>& _vDatas, const JSONCharValue& _JsonValue)
×
3314
    {
3315
        return operator<< <std::shared_ptr<SLightspot>>(_vDatas, _JsonValue);
8✔
3316
    }
3317

×
3318
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SLightspot>>>& _rData, JSONCharValue& _JsonValue)
×
3319
    {
×
3320
        return operator>> <std::shared_ptr<SLightspot>>(_rData, _JsonValue);
3321
    }
8✔
3322

3323
    bool operator<<(SKHR_lights_punctualnodeextension& _rData, const JSONCharValue& _JsonValue)
×
3324
    {
×
3325
        {
×
3326
            SGlTFProperty& super_ptr = _rData;
3327
            if (!(super_ptr << _JsonValue)) return false;
8✔
3328
        }
3329
        if (_JsonValue.HasMember("light") && _JsonValue["light"].IsInt())
×
3330
        {
×
3331
            if (!(_rData.light << _JsonValue["light"])) return false;
×
3332
        }
3333
        _rData.schemaType = "node.KHR_lights_punctual.schema.json";
8✔
3334
        return true;
3335
    }
×
3336

×
3337
    bool operator>>(const TDataDoc<SKHR_lights_punctualnodeextension>& _rData, JSONCharValue& _JsonValue)
×
3338
    {
3339
        if (!_rData.doc) return false;
8✔
3340
        _JsonValue.SetObject();
3341
        {
2✔
3342
            const SGlTFProperty& super_ptr = _rData.data;
2✔
3343
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2✔
3344
        }
2✔
3345
        if (!!_rData.data.light)
8✔
3346
        {
3347
            JSONCharValue json_value;
2✔
3348
            if (!(TDataDoc<SGlTFId>(*_rData.data.light, _rData.doc) >> json_value)) return false;
2✔
3349
            _JsonValue.AddMember("light", json_value, _rData.doc->GetAllocator());
2✔
3350
        }
2✔
3351
        return true;
8✔
3352
    }
3353

×
3354
    bool operator<<(std::shared_ptr<SKHR_lights_punctualnodeextension>& _pData, const JSONCharValue& _JsonValue)
×
3355
    {
×
3356
        std::shared_ptr<SKHR_lights_punctualnodeextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_lights_punctualnodeextension>();
3357
        if (!(*data_ptr << _JsonValue)) return false;
8✔
3358
        _pData = data_ptr;
3359
        return true;
×
3360
    }
×
3361

×
3362
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_lights_punctualnodeextension>>& _rData, JSONCharValue& _JsonValue)
3363
    {
8✔
3364
        if (!_rData.data) return false;
3365
        return (TDataDoc<SKHR_lights_punctualnodeextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
3366
    }
×
3367

×
3368
    bool operator<<(std::vector<std::shared_ptr<SKHR_lights_punctualnodeextension>>& _vDatas, const JSONCharValue& _JsonValue)
3369
    {
8✔
3370
        return operator<< <std::shared_ptr<SKHR_lights_punctualnodeextension>>(_vDatas, _JsonValue);
3371
    }
×
3372

×
3373
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_lights_punctualnodeextension>>>& _rData, JSONCharValue& _JsonValue)
×
3374
    {
3375
        return operator>> <std::shared_ptr<SKHR_lights_punctualnodeextension>>(_rData, _JsonValue);
8✔
3376
    }
3377

×
3378
    bool operator<<(SKHR_materials_clearcoatglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3379
    {
×
3380
        {
3381
            SGlTFProperty& super_ptr = _rData;
8✔
3382
            if (!(super_ptr << _JsonValue)) return false;
3383
        }
×
3384
        if (_JsonValue.HasMember("clearcoatFactor") && _JsonValue["clearcoatFactor"].IsNumber())
×
3385
        {
×
3386
            _rData.clearcoatFactor = _JsonValue["clearcoatFactor"].GetFloat();
3387
        }
8✔
3388
        if (_JsonValue.HasMember("clearcoatTexture") && _JsonValue["clearcoatTexture"].IsObject())
3389
        {
×
3390
            if (!(_rData.clearcoatTexture << _JsonValue["clearcoatTexture"])) return false;
×
3391
        }
×
3392
        if (_JsonValue.HasMember("clearcoatRoughnessFactor") && _JsonValue["clearcoatRoughnessFactor"].IsNumber())
3393
        {
8✔
3394
            _rData.clearcoatRoughnessFactor = _JsonValue["clearcoatRoughnessFactor"].GetFloat();
3395
        }
×
3396
        if (_JsonValue.HasMember("clearcoatRoughnessTexture") && _JsonValue["clearcoatRoughnessTexture"].IsObject())
×
3397
        {
×
3398
            if (!(_rData.clearcoatRoughnessTexture << _JsonValue["clearcoatRoughnessTexture"])) return false;
3399
        }
8✔
3400
        if (_JsonValue.HasMember("clearcoatNormalTexture") && _JsonValue["clearcoatNormalTexture"].IsObject())
3401
        {
×
3402
            if (!(_rData.clearcoatNormalTexture << _JsonValue["clearcoatNormalTexture"])) return false;
×
3403
        }
×
3404
        _rData.schemaType = "glTF.KHR_materials_clearcoat.schema.json";
3405
        return true;
8✔
3406
    }
3407

×
3408
    bool operator>>(const TDataDoc<SKHR_materials_clearcoatglTFextension>& _rData, JSONCharValue& _JsonValue)
×
3409
    {
×
3410
        if (!_rData.doc) return false;
3411
        _JsonValue.SetObject();
8✔
3412
        {
3413
            const SGlTFProperty& super_ptr = _rData.data;
×
3414
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
3415
        }
×
3416
        {
3417
            JSONCharValue json_value;
8✔
3418
            if (!(TDataDoc<float>(_rData.data.clearcoatFactor, _rData.doc) >> json_value)) return false;
3419
            _JsonValue.AddMember("clearcoatFactor", json_value, _rData.doc->GetAllocator());
×
3420
        }
×
3421
        if (!!_rData.data.clearcoatTexture)
×
3422
        {
3423
            JSONCharValue json_value;
8✔
3424
            if (!(TDataDoc<STextureInfo>(*_rData.data.clearcoatTexture, _rData.doc) >> json_value)) return false;
8✔
3425
            _JsonValue.AddMember("clearcoatTexture", json_value, _rData.doc->GetAllocator());
3426
        }
3427
        {
×
3428
            JSONCharValue json_value;
3429
            if (!(TDataDoc<float>(_rData.data.clearcoatRoughnessFactor, _rData.doc) >> json_value)) return false;
3430
            _JsonValue.AddMember("clearcoatRoughnessFactor", json_value, _rData.doc->GetAllocator());
×
3431
        }
×
3432
        if (!!_rData.data.clearcoatRoughnessTexture)
×
3433
        {
3434
            JSONCharValue json_value;
×
3435
            if (!(TDataDoc<STextureInfo>(*_rData.data.clearcoatRoughnessTexture, _rData.doc) >> json_value)) return false;
×
3436
            _JsonValue.AddMember("clearcoatRoughnessTexture", json_value, _rData.doc->GetAllocator());
×
3437
        }
3438
        if (!!_rData.data.clearcoatNormalTexture)
×
3439
        {
×
3440
            JSONCharValue json_value;
×
3441
            if (!(TDataDoc<SMaterialNormalTextureInfo>(*_rData.data.clearcoatNormalTexture, _rData.doc) >> json_value)) return false;
×
3442
            _JsonValue.AddMember("clearcoatNormalTexture", json_value, _rData.doc->GetAllocator());
3443
        }
×
3444
        return true;
3445
    }
×
3446

×
3447
    bool operator<<(std::shared_ptr<SKHR_materials_clearcoatglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3448
    {
×
3449
        std::shared_ptr<SKHR_materials_clearcoatglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_clearcoatglTFextension>();
3450
        if (!(*data_ptr << _JsonValue)) return false;
×
3451
        _pData = data_ptr;
3452
        return true;
×
3453
    }
×
3454

×
3455
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_clearcoatglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
3456
    {
3457
        if (!_rData.data) return false;
×
3458
        return (TDataDoc<SKHR_materials_clearcoatglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3459
    }
×
3460

×
3461
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_clearcoatglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3462
    {
×
3463
        return operator<< <std::shared_ptr<SKHR_materials_clearcoatglTFextension>>(_vDatas, _JsonValue);
3464
    }
×
3465

3466
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_clearcoatglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3467
    {
×
3468
        return operator>> <std::shared_ptr<SKHR_materials_clearcoatglTFextension>>(_rData, _JsonValue);
×
3469
    }
×
3470

3471
    bool operator<<(SKHR_materials_emissive_strengthglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3472
    {
3473
        {
×
3474
            SGlTFProperty& super_ptr = _rData;
×
3475
            if (!(super_ptr << _JsonValue)) return false;
×
3476
        }
×
3477
        if (_JsonValue.HasMember("emissiveStrength") && _JsonValue["emissiveStrength"].IsNumber())
3478
        {
×
3479
            _rData.emissiveStrength = _JsonValue["emissiveStrength"].GetFloat();
3480
        }
×
3481
        _rData.schemaType = "glTF.KHR_materials_emissive_strength.schema.json";
×
3482
        return true;
×
3483
    }
×
3484

3485
    bool operator>>(const TDataDoc<SKHR_materials_emissive_strengthglTFextension>& _rData, JSONCharValue& _JsonValue)
×
3486
    {
3487
        if (!_rData.doc) return false;
×
3488
        _JsonValue.SetObject();
×
3489
        {
×
3490
            const SGlTFProperty& super_ptr = _rData.data;
×
3491
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
3492
        }
×
3493
        {
3494
            JSONCharValue json_value;
×
3495
            if (!(TDataDoc<float>(_rData.data.emissiveStrength, _rData.doc) >> json_value)) return false;
×
3496
            _JsonValue.AddMember("emissiveStrength", json_value, _rData.doc->GetAllocator());
×
3497
        }
×
3498
        return true;
3499
    }
×
3500

3501
    bool operator<<(std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3502
    {
×
3503
        std::shared_ptr<SKHR_materials_emissive_strengthglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_emissive_strengthglTFextension>();
×
3504
        if (!(*data_ptr << _JsonValue)) return false;
×
3505
        _pData = data_ptr;
3506
        return true;
×
3507
    }
3508

×
3509
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
3510
    {
×
3511
        if (!_rData.data) return false;
×
3512
        return (TDataDoc<SKHR_materials_emissive_strengthglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3513
    }
×
3514

3515
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3516
    {
×
3517
        return operator<< <std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>>(_vDatas, _JsonValue);
×
3518
    }
×
3519

3520
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3521
    {
3522
        return operator>> <std::shared_ptr<SKHR_materials_emissive_strengthglTFextension>>(_rData, _JsonValue);
×
3523
    }
×
3524

×
3525
    bool operator<<(SKHR_materials_iorglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3526
    {
3527
        {
×
3528
            SGlTFProperty& super_ptr = _rData;
3529
            if (!(super_ptr << _JsonValue)) return false;
×
3530
        }
×
3531
        if (_JsonValue.HasMember("ior") && _JsonValue["ior"].IsNumber())
×
3532
        {
×
3533
            _rData.ior = _JsonValue["ior"].GetFloat();
3534
        }
×
3535
        _rData.schemaType = "glTF.KHR_materials_ior.schema.json";
3536
        return true;
×
3537
    }
×
3538

×
3539
    bool operator>>(const TDataDoc<SKHR_materials_iorglTFextension>& _rData, JSONCharValue& _JsonValue)
×
3540
    {
3541
        if (!_rData.doc) return false;
×
3542
        _JsonValue.SetObject();
3543
        {
×
3544
            const SGlTFProperty& super_ptr = _rData.data;
×
3545
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
3546
        }
×
3547
        {
3548
            JSONCharValue json_value;
×
3549
            if (!(TDataDoc<float>(_rData.data.ior, _rData.doc) >> json_value)) return false;
3550
            _JsonValue.AddMember("ior", json_value, _rData.doc->GetAllocator());
×
3551
        }
×
3552
        return true;
×
3553
    }
×
3554

3555
    bool operator<<(std::shared_ptr<SKHR_materials_iorglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3556
    {
3557
        std::shared_ptr<SKHR_materials_iorglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_iorglTFextension>();
×
3558
        if (!(*data_ptr << _JsonValue)) return false;
×
3559
        _pData = data_ptr;
×
3560
        return true;
×
3561
    }
3562

×
3563
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_iorglTFextension>>& _rData, JSONCharValue& _JsonValue)
3564
    {
×
3565
        if (!_rData.data) return false;
×
3566
        return (TDataDoc<SKHR_materials_iorglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
3567
    }
×
3568

3569
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_iorglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3570
    {
3571
        return operator<< <std::shared_ptr<SKHR_materials_iorglTFextension>>(_vDatas, _JsonValue);
×
3572
    }
×
3573

×
3574
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_iorglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3575
    {
3576
        return operator>> <std::shared_ptr<SKHR_materials_iorglTFextension>>(_rData, _JsonValue);
×
3577
    }
3578

×
3579
    bool operator<<(SKHR_materials_iridescenceglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3580
    {
×
3581
        {
×
3582
            SGlTFProperty& super_ptr = _rData;
3583
            if (!(super_ptr << _JsonValue)) return false;
×
3584
        }
3585
        if (_JsonValue.HasMember("iridescenceFactor") && _JsonValue["iridescenceFactor"].IsNumber())
×
3586
        {
×
3587
            _rData.iridescenceFactor = _JsonValue["iridescenceFactor"].GetFloat();
×
3588
        }
×
3589
        if (_JsonValue.HasMember("iridescenceTexture") && _JsonValue["iridescenceTexture"].IsObject())
3590
        {
×
3591
            if (!(_rData.iridescenceTexture << _JsonValue["iridescenceTexture"])) return false;
3592
        }
×
3593
        if (_JsonValue.HasMember("iridescenceIor") && _JsonValue["iridescenceIor"].IsNumber())
×
3594
        {
×
3595
            _rData.iridescenceIor = _JsonValue["iridescenceIor"].GetFloat();
×
3596
        }
3597
        if (_JsonValue.HasMember("iridescenceThicknessMinimum") && _JsonValue["iridescenceThicknessMinimum"].IsNumber())
×
3598
        {
3599
            _rData.iridescenceThicknessMinimum = _JsonValue["iridescenceThicknessMinimum"].GetFloat();
×
3600
        }
×
3601
        if (_JsonValue.HasMember("iridescenceThicknessMaximum") && _JsonValue["iridescenceThicknessMaximum"].IsNumber())
×
3602
        {
×
3603
            _rData.iridescenceThicknessMaximum = _JsonValue["iridescenceThicknessMaximum"].GetFloat();
3604
        }
3605
        if (_JsonValue.HasMember("iridescenceThicknessTexture") && _JsonValue["iridescenceThicknessTexture"].IsObject())
×
3606
        {
3607
            if (!(_rData.iridescenceThicknessTexture << _JsonValue["iridescenceThicknessTexture"])) return false;
3608
        }
8✔
3609
        _rData.schemaType = "glTF.KHR_materials_iridescence.schema.json";
3610
        return true;
8✔
3611
    }
8✔
3612

8✔
3613
    bool operator>>(const TDataDoc<SKHR_materials_iridescenceglTFextension>& _rData, JSONCharValue& _JsonValue)
8✔
3614
    {
8✔
3615
        if (!_rData.doc) return false;
3616
        _JsonValue.SetObject();
×
3617
        {
3618
            const SGlTFProperty& super_ptr = _rData.data;
×
3619
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
3620
        }
3621
        {
3622
            JSONCharValue json_value;
×
3623
            if (!(TDataDoc<float>(_rData.data.iridescenceFactor, _rData.doc) >> json_value)) return false;
3624
            _JsonValue.AddMember("iridescenceFactor", json_value, _rData.doc->GetAllocator());
×
3625
        }
3626
        if (!!_rData.data.iridescenceTexture)
3627
        {
×
3628
            JSONCharValue json_value;
3629
            if (!(TDataDoc<STextureInfo>(*_rData.data.iridescenceTexture, _rData.doc) >> json_value)) return false;
×
3630
            _JsonValue.AddMember("iridescenceTexture", json_value, _rData.doc->GetAllocator());
3631
        }
3632
        {
4✔
3633
            JSONCharValue json_value;
3634
            if (!(TDataDoc<float>(_rData.data.iridescenceIor, _rData.doc) >> json_value)) return false;
4✔
3635
            _JsonValue.AddMember("iridescenceIor", json_value, _rData.doc->GetAllocator());
4✔
3636
        }
3637
        {
3638
            JSONCharValue json_value;
×
3639
            if (!(TDataDoc<float>(_rData.data.iridescenceThicknessMinimum, _rData.doc) >> json_value)) return false;
3640
            _JsonValue.AddMember("iridescenceThicknessMinimum", json_value, _rData.doc->GetAllocator());
×
3641
        }
×
3642
        {
×
3643
            JSONCharValue json_value;
3644
            if (!(TDataDoc<float>(_rData.data.iridescenceThicknessMaximum, _rData.doc) >> json_value)) return false;
3645
            _JsonValue.AddMember("iridescenceThicknessMaximum", json_value, _rData.doc->GetAllocator());
4✔
3646
        }
3647
        if (!!_rData.data.iridescenceThicknessTexture)
4✔
3648
        {
4✔
3649
            JSONCharValue json_value;
4✔
3650
            if (!(TDataDoc<STextureInfo>(*_rData.data.iridescenceThicknessTexture, _rData.doc) >> json_value)) return false;
4✔
3651
            _JsonValue.AddMember("iridescenceThicknessTexture", json_value, _rData.doc->GetAllocator());
4✔
3652
        }
3653
        return true;
×
3654
    }
3655

×
3656
    bool operator<<(std::shared_ptr<SKHR_materials_iridescenceglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3657
    {
3658
        std::shared_ptr<SKHR_materials_iridescenceglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_iridescenceglTFextension>();
3659
        if (!(*data_ptr << _JsonValue)) return false;
×
3660
        _pData = data_ptr;
3661
        return true;
×
3662
    }
3663

3664
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_iridescenceglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
3665
    {
3666
        if (!_rData.data) return false;
×
3667
        return (TDataDoc<SKHR_materials_iridescenceglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3668
    }
3669

17✔
3670
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_iridescenceglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
3671
    {
3672
        return operator<< <std::shared_ptr<SKHR_materials_iridescenceglTFextension>>(_vDatas, _JsonValue);
17✔
3673
    }
17✔
3674

3675
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_iridescenceglTFextension>>>& _rData, JSONCharValue& _JsonValue)
17✔
3676
    {
3677
        return operator>> <std::shared_ptr<SKHR_materials_iridescenceglTFextension>>(_rData, _JsonValue);
5✔
3678
    }
3679

17✔
3680
    bool operator<<(SKHR_materials_sheenglTFextension& _rData, const JSONCharValue& _JsonValue)
3681
    {
2✔
3682
        {
3683
            SGlTFProperty& super_ptr = _rData;
17✔
3684
            if (!(super_ptr << _JsonValue)) return false;
3685
        }
17✔
3686
        if (_JsonValue.HasMember("sheenColorFactor") && _JsonValue["sheenColorFactor"].IsArray())
3687
        {
17✔
3688
            if (!(_rData.sheenColorFactor << _JsonValue["sheenColorFactor"])) return false;
3689
        }
4✔
3690
        if (_JsonValue.HasMember("sheenColorTexture") && _JsonValue["sheenColorTexture"].IsObject())
3691
        {
17✔
3692
            if (!(_rData.sheenColorTexture << _JsonValue["sheenColorTexture"])) return false;
3693
        }
17✔
3694
        if (_JsonValue.HasMember("sheenRoughnessFactor") && _JsonValue["sheenRoughnessFactor"].IsNumber())
3695
        {
17✔
3696
            _rData.sheenRoughnessFactor = _JsonValue["sheenRoughnessFactor"].GetFloat();
3697
        }
17✔
3698
        if (_JsonValue.HasMember("sheenRoughnessTexture") && _JsonValue["sheenRoughnessTexture"].IsObject())
3699
        {
17✔
3700
            if (!(_rData.sheenRoughnessTexture << _JsonValue["sheenRoughnessTexture"])) return false;
3701
        }
17✔
3702
        _rData.schemaType = "glTF.KHR_materials_sheen.schema.json";
3703
        return true;
17✔
3704
    }
3705

4✔
3706
    bool operator>>(const TDataDoc<SKHR_materials_sheenglTFextension>& _rData, JSONCharValue& _JsonValue)
3707
    {
17✔
3708
        if (!_rData.doc) return false;
3709
        _JsonValue.SetObject();
13✔
3710
        {
3711
            const SGlTFProperty& super_ptr = _rData.data;
17✔
3712
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
3713
        }
14✔
3714
        if (!_rData.data.sheenColorFactor.empty())
3715
        {
17✔
3716
            JSONCharValue json_value;
3717
            if (!(TDataDoc<std::vector<float>>(_rData.data.sheenColorFactor, _rData.doc) >> json_value)) return false;
17✔
3718
            _JsonValue.AddMember("sheenColorFactor", json_value, _rData.doc->GetAllocator());
3719
        }
17✔
3720
        if (!!_rData.data.sheenColorTexture)
3721
        {
17✔
3722
            JSONCharValue json_value;
3723
            if (!(TDataDoc<STextureInfo>(*_rData.data.sheenColorTexture, _rData.doc) >> json_value)) return false;
17✔
3724
            _JsonValue.AddMember("sheenColorTexture", json_value, _rData.doc->GetAllocator());
3725
        }
12✔
3726
        {
3727
            JSONCharValue json_value;
17✔
3728
            if (!(TDataDoc<float>(_rData.data.sheenRoughnessFactor, _rData.doc) >> json_value)) return false;
3729
            _JsonValue.AddMember("sheenRoughnessFactor", json_value, _rData.doc->GetAllocator());
14✔
3730
        }
3731
        if (!!_rData.data.sheenRoughnessTexture)
17✔
3732
        {
3733
            JSONCharValue json_value;
17✔
3734
            if (!(TDataDoc<STextureInfo>(*_rData.data.sheenRoughnessTexture, _rData.doc) >> json_value)) return false;
3735
            _JsonValue.AddMember("sheenRoughnessTexture", json_value, _rData.doc->GetAllocator());
17✔
3736
        }
3737
        return true;
4✔
3738
    }
3739

17✔
3740
    bool operator<<(std::shared_ptr<SKHR_materials_sheenglTFextension>& _pData, const JSONCharValue& _JsonValue)
3741
    {
13✔
3742
        std::shared_ptr<SKHR_materials_sheenglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_sheenglTFextension>();
3743
        if (!(*data_ptr << _JsonValue)) return false;
17✔
3744
        _pData = data_ptr;
17✔
3745
        return true;
3746
    }
3747

×
3748
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_sheenglTFextension>>& _rData, JSONCharValue& _JsonValue)
3749
    {
×
3750
        if (!_rData.data) return false;
×
3751
        return (TDataDoc<SKHR_materials_sheenglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3752
    }
×
3753

×
3754
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_sheenglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
3755
    {
×
3756
        return operator<< <std::shared_ptr<SKHR_materials_sheenglTFextension>>(_vDatas, _JsonValue);
3757
    }
×
3758

×
3759
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_sheenglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3760
    {
3761
        return operator>> <std::shared_ptr<SKHR_materials_sheenglTFextension>>(_rData, _JsonValue);
×
3762
    }
3763

×
3764
    bool operator<<(SKHR_materials_specularglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3765
    {
×
3766
        {
3767
            SGlTFProperty& super_ptr = _rData;
×
3768
            if (!(super_ptr << _JsonValue)) return false;
3769
        }
×
3770
        if (_JsonValue.HasMember("specularFactor") && _JsonValue["specularFactor"].IsNumber())
×
3771
        {
×
3772
            _rData.specularFactor = _JsonValue["specularFactor"].GetFloat();
3773
        }
×
3774
        if (_JsonValue.HasMember("specularTexture") && _JsonValue["specularTexture"].IsObject())
3775
        {
×
3776
            if (!(_rData.specularTexture << _JsonValue["specularTexture"])) return false;
×
3777
        }
×
3778
        if (_JsonValue.HasMember("specularColorFactor") && _JsonValue["specularColorFactor"].IsArray())
3779
        {
×
3780
            if (!(_rData.specularColorFactor << _JsonValue["specularColorFactor"])) return false;
3781
        }
×
3782
        if (_JsonValue.HasMember("specularColorTexture") && _JsonValue["specularColorTexture"].IsObject())
×
3783
        {
×
3784
            if (!(_rData.specularColorTexture << _JsonValue["specularColorTexture"])) return false;
3785
        }
×
3786
        _rData.schemaType = "glTF.KHR_materials_specular.schema.json";
3787
        return true;
×
3788
    }
×
3789

×
3790
    bool operator>>(const TDataDoc<SKHR_materials_specularglTFextension>& _rData, JSONCharValue& _JsonValue)
3791
    {
×
3792
        if (!_rData.doc) return false;
3793
        _JsonValue.SetObject();
×
3794
        {
×
3795
            const SGlTFProperty& super_ptr = _rData.data;
×
3796
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
3797
        }
×
3798
        {
3799
            JSONCharValue json_value;
×
3800
            if (!(TDataDoc<float>(_rData.data.specularFactor, _rData.doc) >> json_value)) return false;
×
3801
            _JsonValue.AddMember("specularFactor", json_value, _rData.doc->GetAllocator());
×
3802
        }
3803
        if (!!_rData.data.specularTexture)
×
3804
        {
3805
            JSONCharValue json_value;
×
3806
            if (!(TDataDoc<STextureInfo>(*_rData.data.specularTexture, _rData.doc) >> json_value)) return false;
×
3807
            _JsonValue.AddMember("specularTexture", json_value, _rData.doc->GetAllocator());
×
3808
        }
3809
        if (!_rData.data.specularColorFactor.empty())
×
3810
        {
3811
            JSONCharValue json_value;
×
3812
            if (!(TDataDoc<std::vector<float>>(_rData.data.specularColorFactor, _rData.doc) >> json_value)) return false;
×
3813
            _JsonValue.AddMember("specularColorFactor", json_value, _rData.doc->GetAllocator());
×
3814
        }
3815
        if (!!_rData.data.specularColorTexture)
×
3816
        {
3817
            JSONCharValue json_value;
×
3818
            if (!(TDataDoc<STextureInfo>(*_rData.data.specularColorTexture, _rData.doc) >> json_value)) return false;
×
3819
            _JsonValue.AddMember("specularColorTexture", json_value, _rData.doc->GetAllocator());
×
3820
        }
3821
        return true;
×
3822
    }
3823

×
3824
    bool operator<<(std::shared_ptr<SKHR_materials_specularglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3825
    {
×
3826
        std::shared_ptr<SKHR_materials_specularglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_specularglTFextension>();
3827
        if (!(*data_ptr << _JsonValue)) return false;
×
3828
        _pData = data_ptr;
3829
        return true;
×
3830
    }
×
3831

×
3832
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_specularglTFextension>>& _rData, JSONCharValue& _JsonValue)
3833
    {
×
3834
        if (!_rData.data) return false;
3835
        return (TDataDoc<SKHR_materials_specularglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
3836
    }
×
3837

×
3838
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_specularglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
3839
    {
×
3840
        return operator<< <std::shared_ptr<SKHR_materials_specularglTFextension>>(_vDatas, _JsonValue);
3841
    }
×
3842

×
3843
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_specularglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3844
    {
3845
        return operator>> <std::shared_ptr<SKHR_materials_specularglTFextension>>(_rData, _JsonValue);
×
3846
    }
3847

×
3848
    bool operator<<(SKHR_materials_transmissionglTFextension& _rData, const JSONCharValue& _JsonValue)
×
3849
    {
×
3850
        {
3851
            SGlTFProperty& super_ptr = _rData;
×
3852
            if (!(super_ptr << _JsonValue)) return false;
3853
        }
×
3854
        if (_JsonValue.HasMember("transmissionFactor") && _JsonValue["transmissionFactor"].IsNumber())
×
3855
        {
×
3856
            _rData.transmissionFactor = _JsonValue["transmissionFactor"].GetFloat();
3857
        }
×
3858
        if (_JsonValue.HasMember("transmissionTexture") && _JsonValue["transmissionTexture"].IsObject())
3859
        {
3860
            if (!(_rData.transmissionTexture << _JsonValue["transmissionTexture"])) return false;
×
3861
        }
3862
        _rData.schemaType = "glTF.KHR_materials_transmission.schema.json";
×
3863
        return true;
×
3864
    }
×
3865

×
3866
    bool operator>>(const TDataDoc<SKHR_materials_transmissionglTFextension>& _rData, JSONCharValue& _JsonValue)
3867
    {
3868
        if (!_rData.doc) return false;
×
3869
        _JsonValue.SetObject();
3870
        {
×
3871
            const SGlTFProperty& super_ptr = _rData.data;
×
3872
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
3873
        }
3874
        {
×
3875
            JSONCharValue json_value;
3876
            if (!(TDataDoc<float>(_rData.data.transmissionFactor, _rData.doc) >> json_value)) return false;
×
3877
            _JsonValue.AddMember("transmissionFactor", json_value, _rData.doc->GetAllocator());
3878
        }
3879
        if (!!_rData.data.transmissionTexture)
×
3880
        {
3881
            JSONCharValue json_value;
×
3882
            if (!(TDataDoc<STextureInfo>(*_rData.data.transmissionTexture, _rData.doc) >> json_value)) return false;
3883
            _JsonValue.AddMember("transmissionTexture", json_value, _rData.doc->GetAllocator());
3884
        }
1,124✔
3885
        return true;
3886
    }
3887

1,124✔
3888
    bool operator<<(std::shared_ptr<SKHR_materials_transmissionglTFextension>& _pData, const JSONCharValue& _JsonValue)
1,124✔
3889
    {
3890
        std::shared_ptr<SKHR_materials_transmissionglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_transmissionglTFextension>();
1,124✔
3891
        if (!(*data_ptr << _JsonValue)) return false;
3892
        _pData = data_ptr;
130✔
3893
        return true;
3894
    }
1,124✔
3895

1,124✔
3896
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_transmissionglTFextension>>& _rData, JSONCharValue& _JsonValue)
3897
    {
3898
        if (!_rData.data) return false;
×
3899
        return (TDataDoc<SKHR_materials_transmissionglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3900
    }
×
3901

×
3902
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_transmissionglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
3903
    {
×
3904
        return operator<< <std::shared_ptr<SKHR_materials_transmissionglTFextension>>(_vDatas, _JsonValue);
×
3905
    }
3906

3907
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_transmissionglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
3908
    {
×
3909
        return operator>> <std::shared_ptr<SKHR_materials_transmissionglTFextension>>(_rData, _JsonValue);
×
3910
    }
3911

×
3912
    bool operator<<(SKHR_materials_unlitglTFextension& _rData, const JSONCharValue& _JsonValue)
3913
    {
3914
        {
3✔
3915
            SGlTFProperty& super_ptr = _rData;
3916
            if (!(super_ptr << _JsonValue)) return false;
3✔
3917
        }
3✔
3918
        _rData.schemaType = "glTF.KHR_materials_unlit.schema.json";
3✔
3919
        return true;
3✔
3920
    }
3✔
3921

3922
    bool operator>>(const TDataDoc<SKHR_materials_unlitglTFextension>& _rData, JSONCharValue& _JsonValue)
×
3923
    {
3924
        if (!_rData.doc) return false;
×
3925
        _JsonValue.SetObject();
×
3926
        {
3927
            const SGlTFProperty& super_ptr = _rData.data;
3928
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
1✔
3929
        }
3930
        return true;
1✔
3931
    }
3932

3933
    bool operator<<(std::shared_ptr<SKHR_materials_unlitglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
3934
    {
3935
        std::shared_ptr<SKHR_materials_unlitglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_unlitglTFextension>();
×
3936
        if (!(*data_ptr << _JsonValue)) return false;
3937
        _pData = data_ptr;
3938
        return true;
2,907✔
3939
    }
3940

2,907✔
3941
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_unlitglTFextension>>& _rData, JSONCharValue& _JsonValue)
2,907✔
3942
    {
2,907✔
3943
        if (!_rData.data) return false;
3944
        return (TDataDoc<SKHR_materials_unlitglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
3945
    }
×
3946

3947
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_unlitglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
3948
    {
×
3949
        return operator<< <std::shared_ptr<SKHR_materials_unlitglTFextension>>(_vDatas, _JsonValue);
×
3950
    }
×
3951

3952
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_unlitglTFextension>>>& _rData, JSONCharValue& _JsonValue)
3953
    {
2,907✔
3954
        return operator>> <std::shared_ptr<SKHR_materials_unlitglTFextension>>(_rData, _JsonValue);
3955
    }
2,907✔
3956

2,907✔
3957
    bool operator<<(SKHR_materials_variantsglTFextension& _rData, const JSONCharValue& _JsonValue)
2,907✔
3958
    {
2,907✔
3959
        {
2,907✔
3960
            SGlTFProperty& super_ptr = _rData;
3961
            if (!(super_ptr << _JsonValue)) return false;
×
3962
        }
3963
        if (_JsonValue.HasMember("variants") && _JsonValue["variants"].IsArray())
×
3964
        {
×
3965
            if (!(_rData.variants << _JsonValue["variants"])) return false;
3966
        }
3967
        _rData.schemaType = "glTF.KHR_materials_variants.schema.json";
140✔
3968
        return true;
3969
    }
140✔
3970

3971
    bool operator>>(const TDataDoc<SKHR_materials_variantsglTFextension>& _rData, JSONCharValue& _JsonValue)
3972
    {
×
3973
        if (!_rData.doc) return false;
3974
        _JsonValue.SetObject();
×
3975
        {
3976
            const SGlTFProperty& super_ptr = _rData.data;
3977
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
2,407✔
3978
        }
3979
        if (!_rData.data.variants.empty())
2,407✔
3980
        {
3981
            JSONCharValue json_value;
8✔
3982
            if (!(TDataDoc<std::vector<std::shared_ptr<SGlTFChildofRootProperty>>>(_rData.data.variants, _rData.doc) >> json_value)) return false;
3983
            _JsonValue.AddMember("variants", json_value, _rData.doc->GetAllocator());
2,407✔
3984
        }
3985
        return true;
4✔
3986
    }
3987

2,407✔
3988
    bool operator<<(std::shared_ptr<SKHR_materials_variantsglTFextension>& _pData, const JSONCharValue& _JsonValue)
2,407✔
3989
    {
3990
        std::shared_ptr<SKHR_materials_variantsglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_variantsglTFextension>();
3991
        if (!(*data_ptr << _JsonValue)) return false;
×
3992
        _pData = data_ptr;
3993
        return true;
×
3994
    }
×
3995

×
3996
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_variantsglTFextension>>& _rData, JSONCharValue& _JsonValue)
3997
    {
×
3998
        if (!_rData.data) return false;
×
3999
        return (TDataDoc<SKHR_materials_variantsglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
4000
    }
4001

×
4002
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_variantsglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
4003
    {
×
4004
        return operator<< <std::shared_ptr<SKHR_materials_variantsglTFextension>>(_vDatas, _JsonValue);
×
4005
    }
×
4006

4007
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_variantsglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
4008
    {
4009
        return operator>> <std::shared_ptr<SKHR_materials_variantsglTFextension>>(_rData, _JsonValue);
4010
    }
×
4011

4012
    bool operator<<(SKHR_materials_variantsmeshprimitiveextension& _rData, const JSONCharValue& _JsonValue)
×
4013
    {
×
4014
        {
×
4015
            SGlTFProperty& super_ptr = _rData;
×
4016
            if (!(super_ptr << _JsonValue)) return false;
4017
        }
4018
        if (_JsonValue.HasMember("mappings") && _JsonValue["mappings"].IsArray())
×
4019
        {
4020
            if (!(_rData.mappings << _JsonValue["mappings"])) return false;
×
4021
        }
×
4022
        _rData.schemaType = "mesh.primitive.KHR_materials_variants.schema.json";
4023
        return true;
4024
    }
×
4025

4026
    bool operator>>(const TDataDoc<SKHR_materials_variantsmeshprimitiveextension>& _rData, JSONCharValue& _JsonValue)
×
4027
    {
4028
        if (!_rData.doc) return false;
4029
        _JsonValue.SetObject();
×
4030
        {
4031
            const SGlTFProperty& super_ptr = _rData.data;
×
4032
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4033
        }
4034
        if (!_rData.data.mappings.empty())
58✔
4035
        {
4036
            JSONCharValue json_value;
4037
            if (!(TDataDoc<std::vector<std::shared_ptr<SGlTFProperty>>>(_rData.data.mappings, _rData.doc) >> json_value)) return false;
58✔
4038
            _JsonValue.AddMember("mappings", json_value, _rData.doc->GetAllocator());
58✔
4039
        }
4040
        return true;
58✔
4041
    }
4042

27✔
4043
    bool operator<<(std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>& _pData, const JSONCharValue& _JsonValue)
4044
    {
58✔
4045
        std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_variantsmeshprimitiveextension>();
4046
        if (!(*data_ptr << _JsonValue)) return false;
41✔
4047
        _pData = data_ptr;
4048
        return true;
58✔
4049
    }
4050

31✔
4051
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>>& _rData, JSONCharValue& _JsonValue)
4052
    {
58✔
4053
        if (!_rData.data) return false;
58✔
4054
        return (TDataDoc<SKHR_materials_variantsmeshprimitiveextension>(*_rData.data, _rData.doc) >> _JsonValue);
4055
    }
4056

×
4057
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>>& _vDatas, const JSONCharValue& _JsonValue)
4058
    {
×
4059
        return operator<< <std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>>(_vDatas, _JsonValue);
×
4060
    }
4061

×
4062
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>>>& _rData, JSONCharValue& _JsonValue)
×
4063
    {
4064
        return operator>> <std::shared_ptr<SKHR_materials_variantsmeshprimitiveextension>>(_rData, _JsonValue);
4065
    }
×
4066

×
4067
    bool operator<<(SKHR_materials_volumeglTFextension& _rData, const JSONCharValue& _JsonValue)
×
4068
    {
4069
        {
4070
            SGlTFProperty& super_ptr = _rData;
×
4071
            if (!(super_ptr << _JsonValue)) return false;
×
4072
        }
×
4073
        if (_JsonValue.HasMember("thicknessFactor") && _JsonValue["thicknessFactor"].IsNumber())
4074
        {
×
4075
            _rData.thicknessFactor = _JsonValue["thicknessFactor"].GetFloat();
4076
        }
×
4077
        if (_JsonValue.HasMember("thicknessTexture") && _JsonValue["thicknessTexture"].IsObject())
×
4078
        {
×
4079
            if (!(_rData.thicknessTexture << _JsonValue["thicknessTexture"])) return false;
4080
        }
×
4081
        if (_JsonValue.HasMember("attenuationDistance") && _JsonValue["attenuationDistance"].IsNumber())
4082
        {
4083
            _rData.attenuationDistance = _JsonValue["attenuationDistance"].GetFloat();
58✔
4084
        }
4085
        if (_JsonValue.HasMember("attenuationColor") && _JsonValue["attenuationColor"].IsArray())
58✔
4086
        {
58✔
4087
            if (!(_rData.attenuationColor << _JsonValue["attenuationColor"])) return false;
58✔
4088
        }
58✔
4089
        _rData.schemaType = "glTF.KHR_materials_volume.schema.json";
58✔
4090
        return true;
4091
    }
×
4092

4093
    bool operator>>(const TDataDoc<SKHR_materials_volumeglTFextension>& _rData, JSONCharValue& _JsonValue)
×
4094
    {
×
4095
        if (!_rData.doc) return false;
4096
        _JsonValue.SetObject();
4097
        {
13✔
4098
            const SGlTFProperty& super_ptr = _rData.data;
4099
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
13✔
4100
        }
4101
        {
4102
            JSONCharValue json_value;
×
4103
            if (!(TDataDoc<float>(_rData.data.thicknessFactor, _rData.doc) >> json_value)) return false;
4104
            _JsonValue.AddMember("thicknessFactor", json_value, _rData.doc->GetAllocator());
×
4105
        }
4106
        if (!!_rData.data.thicknessTexture)
4107
        {
5✔
4108
            JSONCharValue json_value;
4109
            if (!(TDataDoc<STextureInfo>(*_rData.data.thicknessTexture, _rData.doc) >> json_value)) return false;
4110
            _JsonValue.AddMember("thicknessTexture", json_value, _rData.doc->GetAllocator());
5✔
4111
        }
5✔
4112
        {
4113
            JSONCharValue json_value;
5✔
4114
            if (!(TDataDoc<float>(_rData.data.attenuationDistance, _rData.doc) >> json_value)) return false;
4115
            _JsonValue.AddMember("attenuationDistance", json_value, _rData.doc->GetAllocator());
3✔
4116
        }
4117
        if (!_rData.data.attenuationColor.empty())
5✔
4118
        {
5✔
4119
            JSONCharValue json_value;
4120
            if (!(TDataDoc<std::vector<float>>(_rData.data.attenuationColor, _rData.doc) >> json_value)) return false;
4121
            _JsonValue.AddMember("attenuationColor", json_value, _rData.doc->GetAllocator());
×
4122
        }
4123
        return true;
×
4124
    }
×
4125

4126
    bool operator<<(std::shared_ptr<SKHR_materials_volumeglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
4127
    {
×
4128
        std::shared_ptr<SKHR_materials_volumeglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_materials_volumeglTFextension>();
4129
        if (!(*data_ptr << _JsonValue)) return false;
4130
        _pData = data_ptr;
×
4131
        return true;
×
4132
    }
×
4133

4134
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_materials_volumeglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
4135
    {
4136
        if (!_rData.data) return false;
4137
        return (TDataDoc<SKHR_materials_volumeglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
5✔
4138
    }
4139

5✔
4140
    bool operator<<(std::vector<std::shared_ptr<SKHR_materials_volumeglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
5✔
4141
    {
5✔
4142
        return operator<< <std::shared_ptr<SKHR_materials_volumeglTFextension>>(_vDatas, _JsonValue);
5✔
4143
    }
5✔
4144

4145
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_materials_volumeglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
4146
    {
4147
        return operator>> <std::shared_ptr<SKHR_materials_volumeglTFextension>>(_rData, _JsonValue);
×
4148
    }
×
4149

4150
    bool operator<<(SKHR_texture_transformtextureInfoextension& _rData, const JSONCharValue& _JsonValue)
4151
    {
×
4152
        {
4153
            SGlTFProperty& super_ptr = _rData;
×
4154
            if (!(super_ptr << _JsonValue)) return false;
4155
        }
4156
        if (_JsonValue.HasMember("offset") && _JsonValue["offset"].IsArray())
×
4157
        {
4158
            if (!(_rData.offset << _JsonValue["offset"])) return false;
×
4159
        }
4160
        if (_JsonValue.HasMember("rotation") && _JsonValue["rotation"].IsNumber())
4161
        {
3✔
4162
            _rData.rotation = _JsonValue["rotation"].GetFloat();
4163
        }
4164
        if (_JsonValue.HasMember("scale") && _JsonValue["scale"].IsArray())
3✔
4165
        {
3✔
4166
            if (!(_rData.scale << _JsonValue["scale"])) return false;
4167
        }
3✔
4168
        if (_JsonValue.HasMember("texCoord") && _JsonValue["texCoord"].IsInt())
4169
        {
3✔
4170
            _rData.texCoord = _JsonValue["texCoord"].GetInt();
4171
        }
3✔
4172
        _rData.schemaType = "KHR_texture_transform.textureInfo.schema.json";
3✔
4173
        return true;
4174
    }
4175

×
4176
    bool operator>>(const TDataDoc<SKHR_texture_transformtextureInfoextension>& _rData, JSONCharValue& _JsonValue)
4177
    {
×
4178
        if (!_rData.doc) return false;
×
4179
        _JsonValue.SetObject();
4180
        {
×
4181
            const SGlTFProperty& super_ptr = _rData.data;
×
4182
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4183
        }
4184
        if (!_rData.data.offset.empty())
×
4185
        {
×
4186
            JSONCharValue json_value;
×
4187
            if (!(TDataDoc<std::vector<float>>(_rData.data.offset, _rData.doc) >> json_value)) return false;
4188
            _JsonValue.AddMember("offset", json_value, _rData.doc->GetAllocator());
×
4189
        }
4190
        {
4191
            JSONCharValue json_value;
3✔
4192
            if (!(TDataDoc<float>(_rData.data.rotation, _rData.doc) >> json_value)) return false;
4193
            _JsonValue.AddMember("rotation", json_value, _rData.doc->GetAllocator());
3✔
4194
        }
3✔
4195
        if (!_rData.data.scale.empty())
3✔
4196
        {
3✔
4197
            JSONCharValue json_value;
3✔
4198
            if (!(TDataDoc<std::vector<float>>(_rData.data.scale, _rData.doc) >> json_value)) return false;
4199
            _JsonValue.AddMember("scale", json_value, _rData.doc->GetAllocator());
×
4200
        }
4201
        {
×
4202
            JSONCharValue json_value;
×
4203
            if (!(TDataDoc<int32_t>(_rData.data.texCoord, _rData.doc) >> json_value)) return false;
4204
            _JsonValue.AddMember("texCoord", json_value, _rData.doc->GetAllocator());
4205
        }
×
4206
        return true;
4207
    }
×
4208

4209
    bool operator<<(std::shared_ptr<SKHR_texture_transformtextureInfoextension>& _pData, const JSONCharValue& _JsonValue)
4210
    {
×
4211
        std::shared_ptr<SKHR_texture_transformtextureInfoextension> data_ptr = !!_pData ? _pData : std::make_shared<SKHR_texture_transformtextureInfoextension>();
4212
        if (!(*data_ptr << _JsonValue)) return false;
×
4213
        _pData = data_ptr;
4214
        return true;
4215
    }
23✔
4216

4217
    bool operator>>(const TDataDoc<std::shared_ptr<SKHR_texture_transformtextureInfoextension>>& _rData, JSONCharValue& _JsonValue)
4218
    {
23✔
4219
        if (!_rData.data) return false;
23✔
4220
        return (TDataDoc<SKHR_texture_transformtextureInfoextension>(*_rData.data, _rData.doc) >> _JsonValue);
4221
    }
23✔
4222

4223
    bool operator<<(std::vector<std::shared_ptr<SKHR_texture_transformtextureInfoextension>>& _vDatas, const JSONCharValue& _JsonValue)
9✔
4224
    {
4225
        return operator<< <std::shared_ptr<SKHR_texture_transformtextureInfoextension>>(_vDatas, _JsonValue);
23✔
4226
    }
4227

15✔
4228
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SKHR_texture_transformtextureInfoextension>>>& _rData, JSONCharValue& _JsonValue)
4229
    {
23✔
4230
        return operator>> <std::shared_ptr<SKHR_texture_transformtextureInfoextension>>(_rData, _JsonValue);
4231
    }
11✔
4232

4233
    bool operator<<(SADOBE_materials_thin_transparencyglTFextension& _rData, const JSONCharValue& _JsonValue)
23✔
4234
    {
4235
        {
7✔
4236
            SGlTFProperty& super_ptr = _rData;
4237
            if (!(super_ptr << _JsonValue)) return false;
23✔
4238
        }
4239
        if (_JsonValue.HasMember("transmissionFactor") && _JsonValue["transmissionFactor"].IsNumber())
12✔
4240
        {
4241
            _rData.transmissionFactor = _JsonValue["transmissionFactor"].GetFloat();
23✔
4242
        }
23✔
4243
        if (_JsonValue.HasMember("transmissionTexture") && _JsonValue["transmissionTexture"].IsObject())
4244
        {
4245
            if (!(_rData.transmissionTexture << _JsonValue["transmissionTexture"])) return false;
×
4246
        }
4247
        if (_JsonValue.HasMember("ior") && _JsonValue["ior"].IsNumber())
×
4248
        {
×
4249
            _rData.ior = _JsonValue["ior"].GetFloat();
4250
        }
×
4251
        _rData.schemaType = "glTF.ADOBE_materials_thin_transparency.schema.json";
×
4252
        return true;
4253
    }
×
4254

4255
    bool operator>>(const TDataDoc<SADOBE_materials_thin_transparencyglTFextension>& _rData, JSONCharValue& _JsonValue)
×
4256
    {
×
4257
        if (!_rData.doc) return false;
×
4258
        _JsonValue.SetObject();
4259
        {
×
4260
            const SGlTFProperty& super_ptr = _rData.data;
4261
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
4262
        }
×
4263
        {
×
4264
            JSONCharValue json_value;
4265
            if (!(TDataDoc<float>(_rData.data.transmissionFactor, _rData.doc) >> json_value)) return false;
4266
            _JsonValue.AddMember("transmissionFactor", json_value, _rData.doc->GetAllocator());
×
4267
        }
×
4268
        if (!!_rData.data.transmissionTexture)
×
4269
        {
4270
            JSONCharValue json_value;
4271
            if (!(TDataDoc<STextureInfo>(*_rData.data.transmissionTexture, _rData.doc) >> json_value)) return false;
×
4272
            _JsonValue.AddMember("transmissionTexture", json_value, _rData.doc->GetAllocator());
×
4273
        }
×
4274
        {
4275
            JSONCharValue json_value;
×
4276
            if (!(TDataDoc<float>(_rData.data.ior, _rData.doc) >> json_value)) return false;
4277
            _JsonValue.AddMember("ior", json_value, _rData.doc->GetAllocator());
×
4278
        }
×
4279
        return true;
×
4280
    }
4281

×
4282
    bool operator<<(std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>& _pData, const JSONCharValue& _JsonValue)
4283
    {
4284
        std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SADOBE_materials_thin_transparencyglTFextension>();
23✔
4285
        if (!(*data_ptr << _JsonValue)) return false;
4286
        _pData = data_ptr;
23✔
4287
        return true;
23✔
4288
    }
23✔
4289

23✔
4290
    bool operator>>(const TDataDoc<std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>>& _rData, JSONCharValue& _JsonValue)
23✔
4291
    {
4292
        if (!_rData.data) return false;
×
4293
        return (TDataDoc<SADOBE_materials_thin_transparencyglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
4294
    }
×
4295

×
4296
    bool operator<<(std::vector<std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
4297
    {
4298
        return operator<< <std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>>(_vDatas, _JsonValue);
×
4299
    }
4300

×
4301
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>>>& _rData, JSONCharValue& _JsonValue)
4302
    {
4303
        return operator>> <std::shared_ptr<SADOBE_materials_thin_transparencyglTFextension>>(_rData, _JsonValue);
×
4304
    }
4305

×
4306
    bool operator<<(SArticulation& _rData, const JSONCharValue& _JsonValue)
4307
    {
4308
        {
23✔
4309
            SGlTFProperty& super_ptr = _rData;
4310
            if (!(super_ptr << _JsonValue)) return false;
4311
        }
23✔
4312
        if (_JsonValue.HasMember("name") && _JsonValue["name"].IsString())
23✔
4313
        {
4314
            _rData.name = _JsonValue["name"].GetString();
23✔
4315
        }
4316
        if (_JsonValue.HasMember("stages") && _JsonValue["stages"].IsArray())
23✔
4317
        {
4318
            if (!(_rData.stages << _JsonValue["stages"])) return false;
23✔
4319
        }
4320
        if (_JsonValue.HasMember("pointingVector") && _JsonValue["pointingVector"].IsArray())
5✔
4321
        {
4322
            if (!(_rData.pointingVector << _JsonValue["pointingVector"])) return false;
23✔
4323
        }
4324
        _rData.schemaType = "articulation.schema.json";
3✔
4325
        return true;
4326
    }
23✔
4327

4328
    bool operator>>(const TDataDoc<SArticulation>& _rData, JSONCharValue& _JsonValue)
1✔
4329
    {
4330
        if (!_rData.doc) return false;
23✔
4331
        _JsonValue.SetObject();
4332
        {
11✔
4333
            const SGlTFProperty& super_ptr = _rData.data;
4334
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
23✔
4335
        }
4336
        {
5✔
4337
            JSONCharValue json_value;
4338
            if (!(TDataDoc<std::string>(_rData.data.name, _rData.doc) >> json_value)) return false;
23✔
4339
            _JsonValue.AddMember("name", json_value, _rData.doc->GetAllocator());
4340
        }
×
4341
        if (!_rData.data.stages.empty())
4342
        {
23✔
4343
            JSONCharValue json_value;
4344
            if (!(TDataDoc<std::vector<std::shared_ptr<SArticulationStage>>>(_rData.data.stages, _rData.doc) >> json_value)) return false;
13✔
4345
            _JsonValue.AddMember("stages", json_value, _rData.doc->GetAllocator());
4346
        }
23✔
4347
        if (!_rData.data.pointingVector.empty())
23✔
4348
        {
4349
            JSONCharValue json_value;
4350
            if (!(TDataDoc<std::vector<float>>(_rData.data.pointingVector, _rData.doc) >> json_value)) return false;
×
4351
            _JsonValue.AddMember("pointingVector", json_value, _rData.doc->GetAllocator());
4352
        }
×
4353
        return true;
×
4354
    }
4355

×
4356
    bool operator<<(std::shared_ptr<SArticulation>& _pData, const JSONCharValue& _JsonValue)
×
4357
    {
4358
        std::shared_ptr<SArticulation> data_ptr = !!_pData ? _pData : std::make_shared<SArticulation>();
×
4359
        if (!(*data_ptr << _JsonValue)) return false;
4360
        _pData = data_ptr;
×
4361
        return true;
×
4362
    }
×
4363

4364
    bool operator>>(const TDataDoc<std::shared_ptr<SArticulation>>& _rData, JSONCharValue& _JsonValue)
×
4365
    {
4366
        if (!_rData.data) return false;
×
4367
        return (TDataDoc<SArticulation>(*_rData.data, _rData.doc) >> _JsonValue);
×
4368
    }
×
4369

4370
    bool operator<<(std::vector<std::shared_ptr<SArticulation>>& _vDatas, const JSONCharValue& _JsonValue)
×
4371
    {
4372
        return operator<< <std::shared_ptr<SArticulation>>(_vDatas, _JsonValue);
×
4373
    }
×
4374

×
4375
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SArticulation>>>& _rData, JSONCharValue& _JsonValue)
4376
    {
×
4377
        return operator>> <std::shared_ptr<SArticulation>>(_rData, _JsonValue);
4378
    }
×
4379

×
4380
    bool operator<<(SArticulationStage& _rData, const JSONCharValue& _JsonValue)
×
4381
    {
4382
        {
×
4383
            SGlTFProperty& super_ptr = _rData;
4384
            if (!(super_ptr << _JsonValue)) return false;
×
4385
        }
×
4386
        if (_JsonValue.HasMember("name") && _JsonValue["name"].IsString())
×
4387
        {
4388
            _rData.name = _JsonValue["name"].GetString();
4389
        }
×
4390
        if (_JsonValue.HasMember("type") && _JsonValue["type"].IsString())
×
4391
        {
×
4392
            _rData.type = _JsonValue["type"].GetString();
4393
        }
4394
        if (_JsonValue.HasMember("minimumValue") && _JsonValue["minimumValue"].IsNumber())
×
4395
        {
×
4396
            _rData.minimumValue = _JsonValue["minimumValue"].GetFloat();
×
4397
        }
4398
        if (_JsonValue.HasMember("maximumValue") && _JsonValue["maximumValue"].IsNumber())
4399
        {
×
4400
            _rData.maximumValue = _JsonValue["maximumValue"].GetFloat();
×
4401
        }
×
4402
        if (_JsonValue.HasMember("initialValue") && _JsonValue["initialValue"].IsNumber())
4403
        {
×
4404
            _rData.initialValue = _JsonValue["initialValue"].GetFloat();
4405
        }
4406
        _rData.schemaType = "articulation.stage.schema.json";
23✔
4407
        return true;
4408
    }
23✔
4409

23✔
4410
    bool operator>>(const TDataDoc<SArticulationStage>& _rData, JSONCharValue& _JsonValue)
23✔
4411
    {
23✔
4412
        if (!_rData.doc) return false;
23✔
4413
        _JsonValue.SetObject();
4414
        {
×
4415
            const SGlTFProperty& super_ptr = _rData.data;
4416
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
4417
        }
×
4418
        {
4419
            JSONCharValue json_value;
4420
            if (!(TDataDoc<std::string>(_rData.data.name, _rData.doc) >> json_value)) return false;
14✔
4421
            _JsonValue.AddMember("name", json_value, _rData.doc->GetAllocator());
4422
        }
14✔
4423
        {
4424
            JSONCharValue json_value;
4425
            if (!(TDataDoc<std::string>(_rData.data.type, _rData.doc) >> json_value)) return false;
×
4426
            _JsonValue.AddMember("type", json_value, _rData.doc->GetAllocator());
4427
        }
×
4428
        {
4429
            JSONCharValue json_value;
4430
            if (!(TDataDoc<float>(_rData.data.minimumValue, _rData.doc) >> json_value)) return false;
28✔
4431
            _JsonValue.AddMember("minimumValue", json_value, _rData.doc->GetAllocator());
4432
        }
4433
        {
28✔
4434
            JSONCharValue json_value;
28✔
4435
            if (!(TDataDoc<float>(_rData.data.maximumValue, _rData.doc) >> json_value)) return false;
4436
            _JsonValue.AddMember("maximumValue", json_value, _rData.doc->GetAllocator());
28✔
4437
        }
4438
        {
28✔
4439
            JSONCharValue json_value;
4440
            if (!(TDataDoc<float>(_rData.data.initialValue, _rData.doc) >> json_value)) return false;
28✔
4441
            _JsonValue.AddMember("initialValue", json_value, _rData.doc->GetAllocator());
4442
        }
27✔
4443
        return true;
4444
    }
28✔
4445

4446
    bool operator<<(std::shared_ptr<SArticulationStage>& _pData, const JSONCharValue& _JsonValue)
25✔
4447
    {
4448
        std::shared_ptr<SArticulationStage> data_ptr = !!_pData ? _pData : std::make_shared<SArticulationStage>();
28✔
4449
        if (!(*data_ptr << _JsonValue)) return false;
4450
        _pData = data_ptr;
13✔
4451
        return true;
4452
    }
28✔
4453

4454
    bool operator>>(const TDataDoc<std::shared_ptr<SArticulationStage>>& _rData, JSONCharValue& _JsonValue)
2✔
4455
    {
4456
        if (!_rData.data) return false;
28✔
4457
        return (TDataDoc<SArticulationStage>(*_rData.data, _rData.doc) >> _JsonValue);
28✔
4458
    }
4459

4460
    bool operator<<(std::vector<std::shared_ptr<SArticulationStage>>& _vDatas, const JSONCharValue& _JsonValue)
×
4461
    {
4462
        return operator<< <std::shared_ptr<SArticulationStage>>(_vDatas, _JsonValue);
×
4463
    }
×
4464

4465
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SArticulationStage>>>& _rData, JSONCharValue& _JsonValue)
×
4466
    {
×
4467
        return operator>> <std::shared_ptr<SArticulationStage>>(_rData, _JsonValue);
4468
    }
×
4469

4470
    bool operator<<(SAGI_articulationsglTFextension& _rData, const JSONCharValue& _JsonValue)
×
4471
    {
×
4472
        {
×
4473
            SGlTFProperty& super_ptr = _rData;
4474
            if (!(super_ptr << _JsonValue)) return false;
×
4475
        }
4476
        if (_JsonValue.HasMember("articulations") && _JsonValue["articulations"].IsArray())
×
4477
        {
×
4478
            if (!(_rData.articulations << _JsonValue["articulations"])) return false;
×
4479
        }
4480
        _rData.schemaType = "gltf.AGI_articulations.schema.json";
×
4481
        return true;
4482
    }
×
4483

×
4484
    bool operator>>(const TDataDoc<SAGI_articulationsglTFextension>& _rData, JSONCharValue& _JsonValue)
×
4485
    {
4486
        if (!_rData.doc) return false;
4487
        _JsonValue.SetObject();
×
4488
        {
×
4489
            const SGlTFProperty& super_ptr = _rData.data;
×
4490
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4491
        }
×
4492
        if (!_rData.data.articulations.empty())
4493
        {
×
4494
            JSONCharValue json_value;
×
4495
            if (!(TDataDoc<std::vector<std::shared_ptr<SArticulation>>>(_rData.data.articulations, _rData.doc) >> json_value)) return false;
×
4496
            _JsonValue.AddMember("articulations", json_value, _rData.doc->GetAllocator());
4497
        }
×
4498
        return true;
4499
    }
4500

28✔
4501
    bool operator<<(std::shared_ptr<SAGI_articulationsglTFextension>& _pData, const JSONCharValue& _JsonValue)
4502
    {
28✔
4503
        std::shared_ptr<SAGI_articulationsglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SAGI_articulationsglTFextension>();
28✔
4504
        if (!(*data_ptr << _JsonValue)) return false;
28✔
4505
        _pData = data_ptr;
28✔
4506
        return true;
28✔
4507
    }
4508

×
4509
    bool operator>>(const TDataDoc<std::shared_ptr<SAGI_articulationsglTFextension>>& _rData, JSONCharValue& _JsonValue)
4510
    {
×
4511
        if (!_rData.data) return false;
×
4512
        return (TDataDoc<SAGI_articulationsglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
4513
    }
4514

27✔
4515
    bool operator<<(std::vector<std::shared_ptr<SAGI_articulationsglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
4516
    {
27✔
4517
        return operator<< <std::shared_ptr<SAGI_articulationsglTFextension>>(_vDatas, _JsonValue);
4518
    }
4519

×
4520
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAGI_articulationsglTFextension>>>& _rData, JSONCharValue& _JsonValue)
4521
    {
×
4522
        return operator>> <std::shared_ptr<SAGI_articulationsglTFextension>>(_rData, _JsonValue);
4523
    }
4524

27✔
4525
    bool operator<<(SAGI_articulationsglTFNodeextension& _rData, const JSONCharValue& _JsonValue)
4526
    {
4527
        {
27✔
4528
            SGlTFProperty& super_ptr = _rData;
27✔
4529
            if (!(super_ptr << _JsonValue)) return false;
4530
        }
27✔
4531
        if (_JsonValue.HasMember("isAttachPoint") && _JsonValue["isAttachPoint"].IsBool())
4532
        {
27✔
4533
            _rData.isAttachPoint = _JsonValue["isAttachPoint"].GetBool();
4534
        }
27✔
4535
        if (_JsonValue.HasMember("articulationName") && _JsonValue["articulationName"].IsString())
4536
        {
1✔
4537
            _rData.articulationName = _JsonValue["articulationName"].GetString();
4538
        }
27✔
4539
        _rData.schemaType = "node.AGI_articulations.schema.json";
27✔
4540
        return true;
4541
    }
4542

×
4543
    bool operator>>(const TDataDoc<SAGI_articulationsglTFNodeextension>& _rData, JSONCharValue& _JsonValue)
4544
    {
×
4545
        if (!_rData.doc) return false;
×
4546
        _JsonValue.SetObject();
4547
        {
×
4548
            const SGlTFProperty& super_ptr = _rData.data;
×
4549
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4550
        }
×
4551
        {
4552
            JSONCharValue json_value;
×
4553
            if (!(TDataDoc<bool>(_rData.data.isAttachPoint, _rData.doc) >> json_value)) return false;
×
4554
            _JsonValue.AddMember("isAttachPoint", json_value, _rData.doc->GetAllocator());
×
4555
        }
4556
        {
×
4557
            JSONCharValue json_value;
4558
            if (!(TDataDoc<std::string>(_rData.data.articulationName, _rData.doc) >> json_value)) return false;
×
4559
            _JsonValue.AddMember("articulationName", json_value, _rData.doc->GetAllocator());
×
4560
        }
×
4561
        return true;
4562
    }
×
4563

4564
    bool operator<<(std::shared_ptr<SAGI_articulationsglTFNodeextension>& _pData, const JSONCharValue& _JsonValue)
4565
    {
27✔
4566
        std::shared_ptr<SAGI_articulationsglTFNodeextension> data_ptr = !!_pData ? _pData : std::make_shared<SAGI_articulationsglTFNodeextension>();
4567
        if (!(*data_ptr << _JsonValue)) return false;
27✔
4568
        _pData = data_ptr;
27✔
4569
        return true;
27✔
4570
    }
27✔
4571

27✔
4572
    bool operator>>(const TDataDoc<std::shared_ptr<SAGI_articulationsglTFNodeextension>>& _rData, JSONCharValue& _JsonValue)
4573
    {
×
4574
        if (!_rData.data) return false;
4575
        return (TDataDoc<SAGI_articulationsglTFNodeextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
4576
    }
×
4577

4578
    bool operator<<(std::vector<std::shared_ptr<SAGI_articulationsglTFNodeextension>>& _vDatas, const JSONCharValue& _JsonValue)
4579
    {
17✔
4580
        return operator<< <std::shared_ptr<SAGI_articulationsglTFNodeextension>>(_vDatas, _JsonValue);
4581
    }
17✔
4582

4583
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAGI_articulationsglTFNodeextension>>>& _rData, JSONCharValue& _JsonValue)
4584
    {
×
4585
        return operator>> <std::shared_ptr<SAGI_articulationsglTFNodeextension>>(_rData, _JsonValue);
4586
    }
×
4587

4588
    bool operator<<(SAGI_stk_metadataglTFextension& _rData, const JSONCharValue& _JsonValue)
4589
    {
177✔
4590
        {
4591
            SGlTFProperty& super_ptr = _rData;
4592
            if (!(super_ptr << _JsonValue)) return false;
177✔
4593
        }
177✔
4594
        if (_JsonValue.HasMember("solarPanelGroups") && _JsonValue["solarPanelGroups"].IsArray())
4595
        {
177✔
4596
            if (!(_rData.solarPanelGroups << _JsonValue["solarPanelGroups"])) return false;
4597
        }
5✔
4598
        _rData.schemaType = "gltf.AGI_stk_metadata.schema.json";
4599
        return true;
177✔
4600
    }
4601

119✔
4602
    bool operator>>(const TDataDoc<SAGI_stk_metadataglTFextension>& _rData, JSONCharValue& _JsonValue)
4603
    {
177✔
4604
        if (!_rData.doc) return false;
4605
        _JsonValue.SetObject();
4✔
4606
        {
4607
            const SGlTFProperty& super_ptr = _rData.data;
177✔
4608
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4609
        }
16✔
4610
        if (!_rData.data.solarPanelGroups.empty())
4611
        {
177✔
4612
            JSONCharValue json_value;
4613
            if (!(TDataDoc<std::vector<std::shared_ptr<SSolarPanelGroup>>>(_rData.data.solarPanelGroups, _rData.doc) >> json_value)) return false;
27✔
4614
            _JsonValue.AddMember("solarPanelGroups", json_value, _rData.doc->GetAllocator());
4615
        }
177✔
4616
        return true;
4617
    }
133✔
4618

4619
    bool operator<<(std::shared_ptr<SAGI_stk_metadataglTFextension>& _pData, const JSONCharValue& _JsonValue)
177✔
4620
    {
4621
        std::shared_ptr<SAGI_stk_metadataglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SAGI_stk_metadataglTFextension>();
125✔
4622
        if (!(*data_ptr << _JsonValue)) return false;
4623
        _pData = data_ptr;
177✔
4624
        return true;
4625
    }
134✔
4626

4627
    bool operator>>(const TDataDoc<std::shared_ptr<SAGI_stk_metadataglTFextension>>& _rData, JSONCharValue& _JsonValue)
177✔
4628
    {
4629
        if (!_rData.data) return false;
×
4630
        return (TDataDoc<SAGI_stk_metadataglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
4631
    }
177✔
4632

177✔
4633
    bool operator<<(std::vector<std::shared_ptr<SAGI_stk_metadataglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
4634
    {
4635
        return operator<< <std::shared_ptr<SAGI_stk_metadataglTFextension>>(_vDatas, _JsonValue);
×
4636
    }
4637

×
4638
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAGI_stk_metadataglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
4639
    {
4640
        return operator>> <std::shared_ptr<SAGI_stk_metadataglTFextension>>(_rData, _JsonValue);
×
4641
    }
×
4642

4643
    bool operator<<(SAGI_stk_metadataglTFNodeextension& _rData, const JSONCharValue& _JsonValue)
×
4644
    {
4645
        {
×
4646
            SGlTFProperty& super_ptr = _rData;
×
4647
            if (!(super_ptr << _JsonValue)) return false;
×
4648
        }
4649
        if (_JsonValue.HasMember("solarPanelGroupName") && _JsonValue["solarPanelGroupName"].IsString())
×
4650
        {
4651
            _rData.solarPanelGroupName = _JsonValue["solarPanelGroupName"].GetString();
×
4652
        }
×
4653
        if (_JsonValue.HasMember("noObscuration") && _JsonValue["noObscuration"].IsBool())
×
4654
        {
4655
            _rData.noObscuration = _JsonValue["noObscuration"].GetBool();
×
4656
        }
4657
        _rData.schemaType = "node.AGI_stk_metadata.schema.json";
×
4658
        return true;
×
4659
    }
×
4660

4661
    bool operator>>(const TDataDoc<SAGI_stk_metadataglTFNodeextension>& _rData, JSONCharValue& _JsonValue)
×
4662
    {
4663
        if (!_rData.doc) return false;
×
4664
        _JsonValue.SetObject();
×
4665
        {
×
4666
            const SGlTFProperty& super_ptr = _rData.data;
4667
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
4668
        }
4669
        {
×
4670
            JSONCharValue json_value;
×
4671
            if (!(TDataDoc<std::string>(_rData.data.solarPanelGroupName, _rData.doc) >> json_value)) return false;
×
4672
            _JsonValue.AddMember("solarPanelGroupName", json_value, _rData.doc->GetAllocator());
4673
        }
×
4674
        {
4675
            JSONCharValue json_value;
×
4676
            if (!(TDataDoc<bool>(_rData.data.noObscuration, _rData.doc) >> json_value)) return false;
×
4677
            _JsonValue.AddMember("noObscuration", json_value, _rData.doc->GetAllocator());
×
4678
        }
4679
        return true;
×
4680
    }
4681

×
4682
    bool operator<<(std::shared_ptr<SAGI_stk_metadataglTFNodeextension>& _pData, const JSONCharValue& _JsonValue)
×
4683
    {
×
4684
        std::shared_ptr<SAGI_stk_metadataglTFNodeextension> data_ptr = !!_pData ? _pData : std::make_shared<SAGI_stk_metadataglTFNodeextension>();
4685
        if (!(*data_ptr << _JsonValue)) return false;
×
4686
        _pData = data_ptr;
4687
        return true;
×
4688
    }
×
4689

×
4690
    bool operator>>(const TDataDoc<std::shared_ptr<SAGI_stk_metadataglTFNodeextension>>& _rData, JSONCharValue& _JsonValue)
4691
    {
×
4692
        if (!_rData.data) return false;
4693
        return (TDataDoc<SAGI_stk_metadataglTFNodeextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
4694
    }
×
4695

×
4696
    bool operator<<(std::vector<std::shared_ptr<SAGI_stk_metadataglTFNodeextension>>& _vDatas, const JSONCharValue& _JsonValue)
4697
    {
×
4698
        return operator<< <std::shared_ptr<SAGI_stk_metadataglTFNodeextension>>(_vDatas, _JsonValue);
4699
    }
4700

177✔
4701
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SAGI_stk_metadataglTFNodeextension>>>& _rData, JSONCharValue& _JsonValue)
4702
    {
177✔
4703
        return operator>> <std::shared_ptr<SAGI_stk_metadataglTFNodeextension>>(_rData, _JsonValue);
177✔
4704
    }
177✔
4705

177✔
4706
    bool operator<<(SSolarPanelGroup& _rData, const JSONCharValue& _JsonValue)
177✔
4707
    {
4708
        {
×
4709
            SGlTFProperty& super_ptr = _rData;
4710
            if (!(super_ptr << _JsonValue)) return false;
×
4711
        }
×
4712
        if (_JsonValue.HasMember("name") && _JsonValue["name"].IsString())
4713
        {
4714
            _rData.name = _JsonValue["name"].GetString();
17✔
4715
        }
4716
        if (_JsonValue.HasMember("efficiency") && _JsonValue["efficiency"].IsNumber())
17✔
4717
        {
4718
            _rData.efficiency = _JsonValue["efficiency"].GetFloat();
4719
        }
×
4720
        _rData.schemaType = "solarPanelGroup.schema.json";
4721
        return true;
×
4722
    }
4723

4724
    bool operator>>(const TDataDoc<SSolarPanelGroup>& _rData, JSONCharValue& _JsonValue)
16✔
4725
    {
4726
        if (!_rData.doc) return false;
4727
        _JsonValue.SetObject();
16✔
4728
        {
16✔
4729
            const SGlTFProperty& super_ptr = _rData.data;
4730
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
16✔
4731
        }
4732
        {
8✔
4733
            JSONCharValue json_value;
4734
            if (!(TDataDoc<std::string>(_rData.data.name, _rData.doc) >> json_value)) return false;
16✔
4735
            _JsonValue.AddMember("name", json_value, _rData.doc->GetAllocator());
4736
        }
9✔
4737
        {
4738
            JSONCharValue json_value;
16✔
4739
            if (!(TDataDoc<float>(_rData.data.efficiency, _rData.doc) >> json_value)) return false;
4740
            _JsonValue.AddMember("efficiency", json_value, _rData.doc->GetAllocator());
9✔
4741
        }
4742
        return true;
16✔
4743
    }
4744

9✔
4745
    bool operator<<(std::shared_ptr<SSolarPanelGroup>& _pData, const JSONCharValue& _JsonValue)
4746
    {
16✔
4747
        std::shared_ptr<SSolarPanelGroup> data_ptr = !!_pData ? _pData : std::make_shared<SSolarPanelGroup>();
16✔
4748
        if (!(*data_ptr << _JsonValue)) return false;
4749
        _pData = data_ptr;
4750
        return true;
×
4751
    }
4752

×
4753
    bool operator>>(const TDataDoc<std::shared_ptr<SSolarPanelGroup>>& _rData, JSONCharValue& _JsonValue)
×
4754
    {
4755
        if (!_rData.data) return false;
×
4756
        return (TDataDoc<SSolarPanelGroup>(*_rData.data, _rData.doc) >> _JsonValue);
×
4757
    }
4758

4759
    bool operator<<(std::vector<std::shared_ptr<SSolarPanelGroup>>& _vDatas, const JSONCharValue& _JsonValue)
×
4760
    {
×
4761
        return operator<< <std::shared_ptr<SSolarPanelGroup>>(_vDatas, _JsonValue);
×
4762
    }
4763

4764
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SSolarPanelGroup>>>& _rData, JSONCharValue& _JsonValue)
×
4765
    {
×
4766
        return operator>> <std::shared_ptr<SSolarPanelGroup>>(_rData, _JsonValue);
×
4767
    }
4768

4769
    bool operator<<(SCESIUM_primitive_outlineglTFprimitiveextension& _rData, const JSONCharValue& _JsonValue)
×
4770
    {
×
4771
        {
×
4772
            SGlTFProperty& super_ptr = _rData;
4773
            if (!(super_ptr << _JsonValue)) return false;
4774
        }
×
4775
        if (_JsonValue.HasMember("indices") && _JsonValue["indices"].IsInt())
×
4776
        {
×
4777
            _rData.indices = _JsonValue["indices"].GetInt();
4778
        }
×
4779
        _rData.schemaType = "primitive.CESIUM_primitive_outline.schema.json";
4780
        return true;
4781
    }
16✔
4782

4783
    bool operator>>(const TDataDoc<SCESIUM_primitive_outlineglTFprimitiveextension>& _rData, JSONCharValue& _JsonValue)
16✔
4784
    {
16✔
4785
        if (!_rData.doc) return false;
16✔
4786
        _JsonValue.SetObject();
16✔
4787
        {
16✔
4788
            const SGlTFProperty& super_ptr = _rData.data;
4789
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
4790
        }
4791
        {
×
4792
            JSONCharValue json_value;
×
4793
            if (!(TDataDoc<int32_t>(_rData.data.indices, _rData.doc) >> json_value)) return false;
4794
            _JsonValue.AddMember("indices", json_value, _rData.doc->GetAllocator());
4795
        }
12✔
4796
        return true;
4797
    }
12✔
4798

4799
    bool operator<<(std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>& _pData, const JSONCharValue& _JsonValue)
4800
    {
×
4801
        std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension> data_ptr = !!_pData ? _pData : std::make_shared<SCESIUM_primitive_outlineglTFprimitiveextension>();
4802
        if (!(*data_ptr << _JsonValue)) return false;
×
4803
        _pData = data_ptr;
4804
        return true;
4805
    }
17✔
4806

4807
    bool operator>>(const TDataDoc<std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>>& _rData, JSONCharValue& _JsonValue)
4808
    {
17✔
4809
        if (!_rData.data) return false;
17✔
4810
        return (TDataDoc<SCESIUM_primitive_outlineglTFprimitiveextension>(*_rData.data, _rData.doc) >> _JsonValue);
4811
    }
17✔
4812

4813
    bool operator<<(std::vector<std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>>& _vDatas, const JSONCharValue& _JsonValue)
17✔
4814
    {
4815
        return operator<< <std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>>(_vDatas, _JsonValue);
17✔
4816
    }
17✔
4817

4818
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>>>& _rData, JSONCharValue& _JsonValue)
4819
    {
×
4820
        return operator>> <std::shared_ptr<SCESIUM_primitive_outlineglTFprimitiveextension>>(_rData, _JsonValue);
4821
    }
×
4822

×
4823
    bool operator<<(SEXT_lights_iesglTFextension& _rData, const JSONCharValue& _JsonValue)
4824
    {
×
4825
        {
×
4826
            SGlTFProperty& super_ptr = _rData;
4827
            if (!(super_ptr << _JsonValue)) return false;
×
4828
        }
4829
        if (_JsonValue.HasMember("lights") && _JsonValue["lights"].IsArray())
×
4830
        {
×
4831
            if (!(_rData.lights << _JsonValue["lights"])) return false;
×
4832
        }
4833
        _rData.schemaType = "glTF.EXT_lights_ies.schema.json";
×
4834
        return true;
4835
    }
4836

17✔
4837
    bool operator>>(const TDataDoc<SEXT_lights_iesglTFextension>& _rData, JSONCharValue& _JsonValue)
4838
    {
17✔
4839
        if (!_rData.doc) return false;
17✔
4840
        _JsonValue.SetObject();
17✔
4841
        {
17✔
4842
            const SGlTFProperty& super_ptr = _rData.data;
17✔
4843
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
4844
        }
×
4845
        if (!_rData.data.lights.empty())
4846
        {
×
4847
            JSONCharValue json_value;
×
4848
            if (!(TDataDoc<std::vector<std::shared_ptr<SLightProfile>>>(_rData.data.lights, _rData.doc) >> json_value)) return false;
4849
            _JsonValue.AddMember("lights", json_value, _rData.doc->GetAllocator());
4850
        }
17✔
4851
        return true;
4852
    }
17✔
4853

4854
    bool operator<<(std::shared_ptr<SEXT_lights_iesglTFextension>& _pData, const JSONCharValue& _JsonValue)
4855
    {
×
4856
        std::shared_ptr<SEXT_lights_iesglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SEXT_lights_iesglTFextension>();
4857
        if (!(*data_ptr << _JsonValue)) return false;
×
4858
        _pData = data_ptr;
4859
        return true;
4860
    }
4✔
4861

4862
    bool operator>>(const TDataDoc<std::shared_ptr<SEXT_lights_iesglTFextension>>& _rData, JSONCharValue& _JsonValue)
4863
    {
4✔
4864
        if (!_rData.data) return false;
4✔
4865
        return (TDataDoc<SEXT_lights_iesglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
4866
    }
4✔
4867

4868
    bool operator<<(std::vector<std::shared_ptr<SEXT_lights_iesglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
4✔
4869
    {
4870
        return operator<< <std::shared_ptr<SEXT_lights_iesglTFextension>>(_vDatas, _JsonValue);
4✔
4871
    }
4872

4✔
4873
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SEXT_lights_iesglTFextension>>>& _rData, JSONCharValue& _JsonValue)
4874
    {
4✔
4875
        return operator>> <std::shared_ptr<SEXT_lights_iesglTFextension>>(_rData, _JsonValue);
4876
    }
4✔
4877

4878
    bool operator<<(SLightProfile& _rData, const JSONCharValue& _JsonValue)
4✔
4879
    {
4✔
4880
        {
4881
            SGlTFChildofRootProperty& super_ptr = _rData;
4882
            if (!(super_ptr << _JsonValue)) return false;
×
4883
        }
4884
        if (_JsonValue.HasMember("uri") && _JsonValue["uri"].IsString())
×
4885
        {
×
4886
            _rData.uri = _JsonValue["uri"].GetString();
4887
        }
×
4888
        if (_JsonValue.HasMember("mimeType") && _JsonValue["mimeType"].IsString())
×
4889
        {
4890
            _rData.mimeType = _JsonValue["mimeType"].GetString();
×
4891
        }
4892
        if (_JsonValue.HasMember("bufferView") && _JsonValue["bufferView"].IsInt())
×
4893
        {
×
4894
            if (!(_rData.bufferView << _JsonValue["bufferView"])) return false;
×
4895
        }
4896
        _rData.schemaType = "lightProfile.schema.json";
×
4897
        return true;
4898
    }
×
4899

×
4900
    bool operator>>(const TDataDoc<SLightProfile>& _rData, JSONCharValue& _JsonValue)
×
4901
    {
4902
        if (!_rData.doc) return false;
×
4903
        _JsonValue.SetObject();
4904
        {
×
4905
            const SGlTFChildofRootProperty& super_ptr = _rData.data;
×
4906
            if (!(TDataDoc<SGlTFChildofRootProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
4907
        }
4908
        {
×
4909
            JSONCharValue json_value;
4910
            if (!(TDataDoc<std::string>(_rData.data.uri, _rData.doc) >> json_value)) return false;
4911
            _JsonValue.AddMember("uri", json_value, _rData.doc->GetAllocator());
4✔
4912
        }
4913
        {
4✔
4914
            JSONCharValue json_value;
4✔
4915
            if (!(TDataDoc<std::string>(_rData.data.mimeType, _rData.doc) >> json_value)) return false;
4✔
4916
            _JsonValue.AddMember("mimeType", json_value, _rData.doc->GetAllocator());
4✔
4917
        }
4✔
4918
        if (!!_rData.data.bufferView)
4919
        {
×
4920
            JSONCharValue json_value;
4921
            if (!(TDataDoc<SGlTFId>(*_rData.data.bufferView, _rData.doc) >> json_value)) return false;
×
4922
            _JsonValue.AddMember("bufferView", json_value, _rData.doc->GetAllocator());
×
4923
        }
4924
        return true;
4925
    }
4✔
4926

4927
    bool operator<<(std::shared_ptr<SLightProfile>& _pData, const JSONCharValue& _JsonValue)
4✔
4928
    {
4929
        std::shared_ptr<SLightProfile> data_ptr = !!_pData ? _pData : std::make_shared<SLightProfile>();
4930
        if (!(*data_ptr << _JsonValue)) return false;
×
4931
        _pData = data_ptr;
4932
        return true;
×
4933
    }
4934

4935
    bool operator>>(const TDataDoc<std::shared_ptr<SLightProfile>>& _rData, JSONCharValue& _JsonValue)
28✔
4936
    {
4937
        if (!_rData.data) return false;
4938
        return (TDataDoc<SLightProfile>(*_rData.data, _rData.doc) >> _JsonValue);
28✔
4939
    }
28✔
4940

4941
    bool operator<<(std::vector<std::shared_ptr<SLightProfile>>& _vDatas, const JSONCharValue& _JsonValue)
28✔
4942
    {
4943
        return operator<< <std::shared_ptr<SLightProfile>>(_vDatas, _JsonValue);
23✔
4944
    }
4945

28✔
4946
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SLightProfile>>>& _rData, JSONCharValue& _JsonValue)
4947
    {
28✔
4948
        return operator>> <std::shared_ptr<SLightProfile>>(_rData, _JsonValue);
4949
    }
28✔
4950

28✔
4951
    bool operator<<(SEXT_lights_iesnodeextension& _rData, const JSONCharValue& _JsonValue)
4952
    {
4953
        {
×
4954
            SGlTFProperty& super_ptr = _rData;
4955
            if (!(super_ptr << _JsonValue)) return false;
×
4956
        }
×
4957
        if (_JsonValue.HasMember("light") && _JsonValue["light"].IsInt())
4958
        {
×
4959
            if (!(_rData.light << _JsonValue["light"])) return false;
×
4960
        }
4961
        if (_JsonValue.HasMember("multiplier") && _JsonValue["multiplier"].IsNumber())
×
4962
        {
4963
            _rData.multiplier = _JsonValue["multiplier"].GetFloat();
×
4964
        }
×
4965
        if (_JsonValue.HasMember("color") && _JsonValue["color"].IsArray())
×
4966
        {
4967
            if (!(_rData.color << _JsonValue["color"])) return false;
×
4968
        }
4969
        _rData.schemaType = "node.EXT_lights_ies.schema.json";
×
4970
        return true;
×
4971
    }
×
4972

4973
    bool operator>>(const TDataDoc<SEXT_lights_iesnodeextension>& _rData, JSONCharValue& _JsonValue)
×
4974
    {
4975
        if (!_rData.doc) return false;
4976
        _JsonValue.SetObject();
28✔
4977
        {
4978
            const SGlTFProperty& super_ptr = _rData.data;
28✔
4979
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
28✔
4980
        }
28✔
4981
        if (!!_rData.data.light)
28✔
4982
        {
28✔
4983
            JSONCharValue json_value;
4984
            if (!(TDataDoc<SGlTFId>(*_rData.data.light, _rData.doc) >> json_value)) return false;
×
4985
            _JsonValue.AddMember("light", json_value, _rData.doc->GetAllocator());
4986
        }
×
4987
        {
×
4988
            JSONCharValue json_value;
4989
            if (!(TDataDoc<float>(_rData.data.multiplier, _rData.doc) >> json_value)) return false;
4990
            _JsonValue.AddMember("multiplier", json_value, _rData.doc->GetAllocator());
13✔
4991
        }
4992
        if (!_rData.data.color.empty())
13✔
4993
        {
4994
            JSONCharValue json_value;
4995
            if (!(TDataDoc<std::vector<float>>(_rData.data.color, _rData.doc) >> json_value)) return false;
×
4996
            _JsonValue.AddMember("color", json_value, _rData.doc->GetAllocator());
4997
        }
×
4998
        return true;
4999
    }
5000

36✔
5001
    bool operator<<(std::shared_ptr<SEXT_lights_iesnodeextension>& _pData, const JSONCharValue& _JsonValue)
5002
    {
5003
        std::shared_ptr<SEXT_lights_iesnodeextension> data_ptr = !!_pData ? _pData : std::make_shared<SEXT_lights_iesnodeextension>();
36✔
5004
        if (!(*data_ptr << _JsonValue)) return false;
36✔
5005
        _pData = data_ptr;
5006
        return true;
36✔
5007
    }
5008

36✔
5009
    bool operator>>(const TDataDoc<std::shared_ptr<SEXT_lights_iesnodeextension>>& _rData, JSONCharValue& _JsonValue)
5010
    {
36✔
5011
        if (!_rData.data) return false;
5012
        return (TDataDoc<SEXT_lights_iesnodeextension>(*_rData.data, _rData.doc) >> _JsonValue);
15✔
5013
    }
5014

36✔
5015
    bool operator<<(std::vector<std::shared_ptr<SEXT_lights_iesnodeextension>>& _vDatas, const JSONCharValue& _JsonValue)
36✔
5016
    {
5017
        return operator<< <std::shared_ptr<SEXT_lights_iesnodeextension>>(_vDatas, _JsonValue);
5018
    }
×
5019

5020
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SEXT_lights_iesnodeextension>>>& _rData, JSONCharValue& _JsonValue)
×
5021
    {
×
5022
        return operator>> <std::shared_ptr<SEXT_lights_iesnodeextension>>(_rData, _JsonValue);
5023
    }
×
5024

×
5025
    bool operator<<(SEXT_mesh_gpu_instancingglTFextension& _rData, const JSONCharValue& _JsonValue)
5026
    {
×
5027
        {
5028
            SGlTFProperty& super_ptr = _rData;
×
5029
            if (!(super_ptr << _JsonValue)) return false;
×
5030
        }
×
5031
        if (_JsonValue.HasMember("attributes") && _JsonValue["attributes"].IsObject())
5032
        {
5033
            if (!(_rData.attributes << _JsonValue["attributes"])) return false;
×
5034
        }
×
5035
        _rData.schemaType = "glTF.EXT_mesh_gpu_instancing.schema.json";
×
5036
        return true;
5037
    }
×
5038

5039
    bool operator>>(const TDataDoc<SEXT_mesh_gpu_instancingglTFextension>& _rData, JSONCharValue& _JsonValue)
5040
    {
28✔
5041
        if (!_rData.doc) return false;
5042
        _JsonValue.SetObject();
28✔
5043
        {
28✔
5044
            const SGlTFProperty& super_ptr = _rData.data;
28✔
5045
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
28✔
5046
        }
28✔
5047
        if (!_rData.data.attributes.empty())
5048
        {
×
5049
            JSONCharValue json_value;
5050
            if (!(TDataDoc<std::map<std::string, std::shared_ptr<SGlTFId>>>(_rData.data.attributes, _rData.doc) >> json_value)) return false;
×
5051
            _JsonValue.AddMember("attributes", json_value, _rData.doc->GetAllocator());
×
5052
        }
5053
        return true;
5054
    }
×
5055

5056
    bool operator<<(std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
5057
    {
5058
        std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SEXT_mesh_gpu_instancingglTFextension>();
5059
        if (!(*data_ptr << _JsonValue)) return false;
×
5060
        _pData = data_ptr;
5061
        return true;
×
5062
    }
5063

5064
    bool operator>>(const TDataDoc<std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>>& _rData, JSONCharValue& _JsonValue)
1✔
5065
    {
5066
        if (!_rData.data) return false;
5067
        return (TDataDoc<SEXT_mesh_gpu_instancingglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
1✔
5068
    }
1✔
5069

5070
    bool operator<<(std::vector<std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
1✔
5071
    {
5072
        return operator<< <std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>>(_vDatas, _JsonValue);
1✔
5073
    }
5074

1✔
5075
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>>>& _rData, JSONCharValue& _JsonValue)
5076
    {
1✔
5077
        return operator>> <std::shared_ptr<SEXT_mesh_gpu_instancingglTFextension>>(_rData, _JsonValue);
5078
    }
1✔
5079

1✔
5080
    bool operator<<(SEXT_texture_webpglTFextension& _rData, const JSONCharValue& _JsonValue)
5081
    {
5082
        {
×
5083
            SGlTFProperty& super_ptr = _rData;
5084
            if (!(super_ptr << _JsonValue)) return false;
×
5085
        }
×
5086
        if (_JsonValue.HasMember("source") && _JsonValue["source"].IsInt())
5087
        {
×
5088
            if (!(_rData.source << _JsonValue["source"])) return false;
×
5089
        }
5090
        _rData.schemaType = "glTF.EXT_texture_webp.schema.json";
×
5091
        return true;
5092
    }
×
5093

×
5094
    bool operator>>(const TDataDoc<SEXT_texture_webpglTFextension>& _rData, JSONCharValue& _JsonValue)
×
5095
    {
5096
        if (!_rData.doc) return false;
×
5097
        _JsonValue.SetObject();
5098
        {
×
5099
            const SGlTFProperty& super_ptr = _rData.data;
×
5100
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
5101
        }
5102
        if (!!_rData.data.source)
×
5103
        {
5104
            JSONCharValue json_value;
5105
            if (!(TDataDoc<SGlTFId>(*_rData.data.source, _rData.doc) >> json_value)) return false;
1✔
5106
            _JsonValue.AddMember("source", json_value, _rData.doc->GetAllocator());
5107
        }
1✔
5108
        return true;
1✔
5109
    }
1✔
5110

1✔
5111
    bool operator<<(std::shared_ptr<SEXT_texture_webpglTFextension>& _pData, const JSONCharValue& _JsonValue)
1✔
5112
    {
5113
        std::shared_ptr<SEXT_texture_webpglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SEXT_texture_webpglTFextension>();
×
5114
        if (!(*data_ptr << _JsonValue)) return false;
5115
        _pData = data_ptr;
×
5116
        return true;
×
5117
    }
5118

5119
    bool operator>>(const TDataDoc<std::shared_ptr<SEXT_texture_webpglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
5120
    {
5121
        if (!_rData.data) return false;
×
5122
        return (TDataDoc<SEXT_texture_webpglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
5123
    }
5124

×
5125
    bool operator<<(std::vector<std::shared_ptr<SEXT_texture_webpglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
5126
    {
×
5127
        return operator<< <std::shared_ptr<SEXT_texture_webpglTFextension>>(_vDatas, _JsonValue);
5128
    }
5129

×
5130
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SEXT_texture_webpglTFextension>>>& _rData, JSONCharValue& _JsonValue)
5131
    {
5132
        return operator>> <std::shared_ptr<SEXT_texture_webpglTFextension>>(_rData, _JsonValue);
×
5133
    }
×
5134

5135
    bool operator<<(SFB_geometry_metadatasceneextension& _rData, const JSONCharValue& _JsonValue)
×
5136
    {
5137
        {
×
5138
            SGlTFProperty& super_ptr = _rData;
5139
            if (!(super_ptr << _JsonValue)) return false;
×
5140
        }
×
5141
        if (_JsonValue.HasMember("vertexCount") && _JsonValue["vertexCount"].IsNumber())
5142
        {
5143
            _rData.vertexCount = _JsonValue["vertexCount"].GetFloat();
×
5144
        }
5145
        if (_JsonValue.HasMember("primitiveCount") && _JsonValue["primitiveCount"].IsNumber())
×
5146
        {
×
5147
            _rData.primitiveCount = _JsonValue["primitiveCount"].GetFloat();
5148
        }
×
5149
        if (_JsonValue.HasMember("sceneBounds") && _JsonValue["sceneBounds"].IsObject())
×
5150
        {
5151
            if (!(_rData.sceneBounds << _JsonValue["sceneBounds"])) return false;
×
5152
        }
5153
        _rData.schemaType = "scene.FB_geometry_metadata.schema.json";
×
5154
        return true;
×
5155
    }
×
5156

5157
    bool operator>>(const TDataDoc<SFB_geometry_metadatasceneextension>& _rData, JSONCharValue& _JsonValue)
×
5158
    {
5159
        if (!_rData.doc) return false;
5160
        _JsonValue.SetObject();
×
5161
        {
5162
            const SGlTFProperty& super_ptr = _rData.data;
×
5163
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
×
5164
        }
×
5165
        {
×
5166
            JSONCharValue json_value;
5167
            if (!(TDataDoc<float>(_rData.data.vertexCount, _rData.doc) >> json_value)) return false;
5168
            _JsonValue.AddMember("vertexCount", json_value, _rData.doc->GetAllocator());
×
5169
        }
5170
        {
×
5171
            JSONCharValue json_value;
×
5172
            if (!(TDataDoc<float>(_rData.data.primitiveCount, _rData.doc) >> json_value)) return false;
5173
            _JsonValue.AddMember("primitiveCount", json_value, _rData.doc->GetAllocator());
5174
        }
×
5175
        if (!!_rData.data.sceneBounds)
5176
        {
×
5177
            JSONCharValue json_value;
5178
            if (!(TDataDoc<SMinimumandmaximumboundingboxextent>(*_rData.data.sceneBounds, _rData.doc) >> json_value)) return false;
5179
            _JsonValue.AddMember("sceneBounds", json_value, _rData.doc->GetAllocator());
×
5180
        }
5181
        return true;
×
5182
    }
5183

5184
    bool operator<<(std::shared_ptr<SFB_geometry_metadatasceneextension>& _pData, const JSONCharValue& _JsonValue)
×
5185
    {
5186
        std::shared_ptr<SFB_geometry_metadatasceneextension> data_ptr = !!_pData ? _pData : std::make_shared<SFB_geometry_metadatasceneextension>();
5187
        if (!(*data_ptr << _JsonValue)) return false;
×
5188
        _pData = data_ptr;
×
5189
        return true;
5190
    }
×
5191

5192
    bool operator>>(const TDataDoc<std::shared_ptr<SFB_geometry_metadatasceneextension>>& _rData, JSONCharValue& _JsonValue)
×
5193
    {
5194
        if (!_rData.data) return false;
×
5195
        return (TDataDoc<SFB_geometry_metadatasceneextension>(*_rData.data, _rData.doc) >> _JsonValue);
5196
    }
×
5197

5198
    bool operator<<(std::vector<std::shared_ptr<SFB_geometry_metadatasceneextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
5199
    {
5200
        return operator<< <std::shared_ptr<SFB_geometry_metadatasceneextension>>(_vDatas, _JsonValue);
×
5201
    }
5202

×
5203
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SFB_geometry_metadatasceneextension>>>& _rData, JSONCharValue& _JsonValue)
5204
    {
×
5205
        return operator>> <std::shared_ptr<SFB_geometry_metadatasceneextension>>(_rData, _JsonValue);
5206
    }
×
5207

5208
    bool operator<<(SMinimumandmaximumboundingboxextent& _rData, const JSONCharValue& _JsonValue)
×
5209
    {
5210
        {
×
5211
            SGlTFProperty& super_ptr = _rData;
×
5212
            if (!(super_ptr << _JsonValue)) return false;
5213
        }
5214
        if (_JsonValue.HasMember("min") && _JsonValue["min"].IsArray())
×
5215
        {
5216
            if (!(_rData.min << _JsonValue["min"])) return false;
×
5217
        }
×
5218
        if (_JsonValue.HasMember("max") && _JsonValue["max"].IsArray())
5219
        {
×
5220
            if (!(_rData.max << _JsonValue["max"])) return false;
×
5221
        }
5222
        _rData.schemaType = "sceneBounds.schema.json";
×
5223
        return true;
5224
    }
×
5225

×
5226
    bool operator>>(const TDataDoc<SMinimumandmaximumboundingboxextent>& _rData, JSONCharValue& _JsonValue)
×
5227
    {
5228
        if (!_rData.doc) return false;
5229
        _JsonValue.SetObject();
×
5230
        {
×
5231
            const SGlTFProperty& super_ptr = _rData.data;
×
5232
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
5233
        }
×
5234
        if (!_rData.data.min.empty())
5235
        {
×
5236
            JSONCharValue json_value;
×
5237
            if (!(TDataDoc<std::vector<float>>(_rData.data.min, _rData.doc) >> json_value)) return false;
×
5238
            _JsonValue.AddMember("min", json_value, _rData.doc->GetAllocator());
5239
        }
5240
        if (!_rData.data.max.empty())
×
5241
        {
×
5242
            JSONCharValue json_value;
×
5243
            if (!(TDataDoc<std::vector<float>>(_rData.data.max, _rData.doc) >> json_value)) return false;
5244
            _JsonValue.AddMember("max", json_value, _rData.doc->GetAllocator());
5245
        }
×
5246
        return true;
×
5247
    }
×
5248

5249
    bool operator<<(std::shared_ptr<SMinimumandmaximumboundingboxextent>& _pData, const JSONCharValue& _JsonValue)
×
5250
    {
5251
        std::shared_ptr<SMinimumandmaximumboundingboxextent> data_ptr = !!_pData ? _pData : std::make_shared<SMinimumandmaximumboundingboxextent>();
5252
        if (!(*data_ptr << _JsonValue)) return false;
×
5253
        _pData = data_ptr;
5254
        return true;
×
5255
    }
×
5256

×
5257
    bool operator>>(const TDataDoc<std::shared_ptr<SMinimumandmaximumboundingboxextent>>& _rData, JSONCharValue& _JsonValue)
×
5258
    {
5259
        if (!_rData.data) return false;
5260
        return (TDataDoc<SMinimumandmaximumboundingboxextent>(*_rData.data, _rData.doc) >> _JsonValue);
×
5261
    }
5262

×
5263
    bool operator<<(std::vector<std::shared_ptr<SMinimumandmaximumboundingboxextent>>& _vDatas, const JSONCharValue& _JsonValue)
×
5264
    {
5265
        return operator<< <std::shared_ptr<SMinimumandmaximumboundingboxextent>>(_vDatas, _JsonValue);
5266
    }
×
5267

5268
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMinimumandmaximumboundingboxextent>>>& _rData, JSONCharValue& _JsonValue)
×
5269
    {
5270
        return operator>> <std::shared_ptr<SMinimumandmaximumboundingboxextent>>(_rData, _JsonValue);
5271
    }
×
5272

5273
    bool operator<<(SMSFT_lodglTFextension& _rData, const JSONCharValue& _JsonValue)
×
5274
    {
5275
        {
5276
            SGlTFProperty& super_ptr = _rData;
×
5277
            if (!(super_ptr << _JsonValue)) return false;
5278
        }
5279
        if (_JsonValue.HasMember("ids") && _JsonValue["ids"].IsArray())
×
5280
        {
×
5281
            if (!(_rData.ids << _JsonValue["ids"])) return false;
5282
        }
×
5283
        _rData.schemaType = "glTF.MSFT_lod.schema.json";
5284
        return true;
×
5285
    }
5286

×
5287
    bool operator>>(const TDataDoc<SMSFT_lodglTFextension>& _rData, JSONCharValue& _JsonValue)
5288
    {
×
5289
        if (!_rData.doc) return false;
5290
        _JsonValue.SetObject();
×
5291
        {
×
5292
            const SGlTFProperty& super_ptr = _rData.data;
5293
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
5294
        }
×
5295
        if (!_rData.data.ids.empty())
5296
        {
×
5297
            JSONCharValue json_value;
×
5298
            if (!(TDataDoc<std::vector<int32_t>>(_rData.data.ids, _rData.doc) >> json_value)) return false;
5299
            _JsonValue.AddMember("ids", json_value, _rData.doc->GetAllocator());
×
5300
        }
×
5301
        return true;
5302
    }
5303

×
5304
    bool operator<<(std::shared_ptr<SMSFT_lodglTFextension>& _pData, const JSONCharValue& _JsonValue)
×
5305
    {
×
5306
        std::shared_ptr<SMSFT_lodglTFextension> data_ptr = !!_pData ? _pData : std::make_shared<SMSFT_lodglTFextension>();
5307
        if (!(*data_ptr << _JsonValue)) return false;
5308
        _pData = data_ptr;
×
5309
        return true;
×
5310
    }
×
5311

5312
    bool operator>>(const TDataDoc<std::shared_ptr<SMSFT_lodglTFextension>>& _rData, JSONCharValue& _JsonValue)
×
5313
    {
5314
        if (!_rData.data) return false;
5315
        return (TDataDoc<SMSFT_lodglTFextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
5316
    }
5317

×
5318
    bool operator<<(std::vector<std::shared_ptr<SMSFT_lodglTFextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
5319
    {
×
5320
        return operator<< <std::shared_ptr<SMSFT_lodglTFextension>>(_vDatas, _JsonValue);
×
5321
    }
5322

5323
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMSFT_lodglTFextension>>>& _rData, JSONCharValue& _JsonValue)
×
5324
    {
5325
        return operator>> <std::shared_ptr<SMSFT_lodglTFextension>>(_rData, _JsonValue);
×
5326
    }
×
5327

5328
    bool operator<<(SMSFT_texture_ddsextension& _rData, const JSONCharValue& _JsonValue)
5329
    {
×
5330
        {
5331
            SGlTFProperty& super_ptr = _rData;
×
5332
            if (!(super_ptr << _JsonValue)) return false;
5333
        }
5334
        if (_JsonValue.HasMember("source") && _JsonValue["source"].IsInt())
×
5335
        {
5336
            if (!(_rData.source << _JsonValue["source"])) return false;
×
5337
        }
5338
        _rData.schemaType = "glTF.MSFT_texture_dds.schema.json";
5339
        return true;
×
5340
    }
5341

5342
    bool operator>>(const TDataDoc<SMSFT_texture_ddsextension>& _rData, JSONCharValue& _JsonValue)
×
5343
    {
×
5344
        if (!_rData.doc) return false;
5345
        _JsonValue.SetObject();
×
5346
        {
5347
            const SGlTFProperty& super_ptr = _rData.data;
×
5348
            if (!(TDataDoc<SGlTFProperty>(super_ptr, _rData.doc) >> _JsonValue)) return false;
5349
        }
×
5350
        if (!!_rData.data.source)
×
5351
        {
5352
            JSONCharValue json_value;
5353
            if (!(TDataDoc<SGlTFId>(*_rData.data.source, _rData.doc) >> json_value)) return false;
×
5354
            _JsonValue.AddMember("source", json_value, _rData.doc->GetAllocator());
5355
        }
×
5356
        return true;
×
5357
    }
5358

×
5359
    bool operator<<(std::shared_ptr<SMSFT_texture_ddsextension>& _pData, const JSONCharValue& _JsonValue)
×
5360
    {
5361
        std::shared_ptr<SMSFT_texture_ddsextension> data_ptr = !!_pData ? _pData : std::make_shared<SMSFT_texture_ddsextension>();
×
5362
        if (!(*data_ptr << _JsonValue)) return false;
5363
        _pData = data_ptr;
×
5364
        return true;
×
5365
    }
×
5366

5367
    bool operator>>(const TDataDoc<std::shared_ptr<SMSFT_texture_ddsextension>>& _rData, JSONCharValue& _JsonValue)
×
5368
    {
5369
        if (!_rData.data) return false;
5370
        return (TDataDoc<SMSFT_texture_ddsextension>(*_rData.data, _rData.doc) >> _JsonValue);
×
5371
    }
5372

×
5373
    bool operator<<(std::vector<std::shared_ptr<SMSFT_texture_ddsextension>>& _vDatas, const JSONCharValue& _JsonValue)
×
5374
    {
×
5375
        return operator<< <std::shared_ptr<SMSFT_texture_ddsextension>>(_vDatas, _JsonValue);
×
5376
    }
5377

5378
    bool operator>>(const TDataDoc<std::vector<std::shared_ptr<SMSFT_texture_ddsextension>>>& _rData, JSONCharValue& _JsonValue)
×
5379
    {
5380
        return operator>> <std::shared_ptr<SMSFT_texture_ddsextension>>(_rData, _JsonValue);
×
5381
    }
×
5382

5383
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc