Cogs.Core
ResourceReader.h
1#pragma once
2
3#include "JsonParser.h"
4
5#include <functional>
6
7#include "EntityPtr.h"
8
9#include "Resources/AssetDefinition.h"
10
11namespace Cogs
12{
13 namespace Core
14 {
15 class Context;
16 struct ExpressionContext;
17
19 {
21 std::function<void(void *, const Reflection::Field * field, const FieldValue & value)> setCallback;
22 std::function<void(const StringView & name, const Value &)> readCallback;
23 };
24
25 ReaderExtension * getExtensionReader(size_t code);
26 void COGSCORE_DLL_API registerExtensionReader(Context * context, const StringView & resourceType, const Reflection::Type & handleType, ReaderExtension extension);
27
29 {
30 Context * context = nullptr;
31 ExpressionContext * ec = nullptr;
32 struct Asset * asset = nullptr;
33 };
34
35 void readAssetDefinition(ReaderContext* context, const Value& jsonResource, ResourceDefinition& assetDefinition);
36 void readModelDefinition(ReaderContext * context, const Value & jsonResource, ResourceDefinition & modelDefinition);
37 void readTextureDefinition(ReaderContext * context, const Value & jsonResource, ResourceDefinition & textureDefinition);
38 void readMaterialInstanceDefinition(ReaderContext * context, const Value & value, ResourceDefinition & materialInstanceDefinition);
39
40 void readResources(Context * context, const Value & jsonResources, int flags = 0);
41 void readResourceDefinitions(Context * context, const Value & jsonResources, int flags, AssetDefinition & asset);
42
43 StringView readMesh(Context * context, ResourceDefinition & definition, const Value & jsonResource);
44 }
45}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Field definition describing a single data member of a data structure.
Definition: Field.h:68
Represents a discrete type definition, describing a native type class.
Definition: Type.h:89
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
uint16_t TypeId
Built in type used to uniquely identify a single type instance.
Definition: Name.h:48
constexpr TypeId NoType
Definition of no type.
Definition: Name.h:51
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
Provides a context for evaluation of expressions.
Definition: Expressions.h:54
Defines a value to apply to a field.