Cogs.Core
RenderTask.cpp
1#include "RenderTask.h"
2
3void Cogs::Core::RenderTaskResources::add(RenderResource * resource, const StringView & key)
4{
5 addResource(resource, key);
6}
7
8void Cogs::Core::RenderTaskResources::add(RenderTaskResource * resource, const StringView & key)
9{
10 assert(resource && "Resource must be valid pointer.");
11
12 resources.emplace_back(*resource);
13 resources.back().type = resource->type;
14 resources.back().key = key.to_string();
15}
16
17void Cogs::Core::RenderTaskResources::addResource(RenderResource * resource, const StringView & name)
18{
19 assert(resource && "Resource must be valid pointer.");
20 assert(resource->getType() != RenderResourceType::Unknown && "Resource type not valid.");
21
22 resources.emplace_back();
23
24 auto & taskResource = resources.back();
25
26 taskResource.resource = resource;
27 taskResource.type = resource->getType();
28 taskResource.name = name.to_string();
29
30 taskResource.resource->setName(name);
31}
32
33Cogs::Core::RenderTaskResource * Cogs::Core::RenderTaskResources::get(RenderResourceType type)
34{
35 for (auto & res : resources) {
36 if (res.type == type) {
37 return &res;
38 }
39 }
40 return nullptr;
41}
42
43Cogs::Core::RenderTaskResource * Cogs::Core::RenderTaskResources::get(RenderResourceType type, const StringView & key)
44{
45 for (auto & res : resources) {
46 if (res.type == type && key == res.key) {
47 return &res;
48 }
49 }
50 return nullptr;
51}
52
53Cogs::Core::RenderTaskResource * Cogs::Core::RenderTaskResources::get(const StringView & name)
54{
55 for (auto & res : resources) {
56 if (name == res.key) {
57 return &res;
58 }
59 else if (name == res.name) {
60 return &res;
61 }
62 else if (name == res.resource->getName()) {
63 return &res;
64 }
65 }
66 return nullptr;
67}
68
69const Cogs::Core::RenderTaskResource * Cogs::Core::RenderTaskResources::get(const StringView & name) const
70{
71 for (auto & res : resources) {
72 if (name == res.key) {
73 return &res;
74 }
75 else if (name == res.name) {
76 return &res;
77 }
78 else if (name == res.resource->getName()) {
79 return &res;
80 }
81 }
82 return nullptr;
83}