Sound Bakery  v0.1.0
Open-source audio middleware for games
Loading...
Searching...
No Matches
object_global.h
1#pragma once
2
3#include "sound_bakery/system.h"
4#include "sound_bakery/core/object/object.h"
5#include "sound_bakery/core/object/object_tracker.h"
6#include "sound_bakery/system.h"
7
8template <typename T>
9T* newObject()
10{
11 static_assert(std::is_base_of<SB::Core::Object, T>::value);
12
13 T* obj = new T();
14
15 if (obj)
16 {
17 if (SB::Core::ObjectTracker* const objectTracker = SB::Engine::System::getObjectTracker())
18 {
19 objectTracker->trackObject((SB::Core::Object*)obj);
20 }
21 }
22 else
23 {
24 assert(false && "Memory allocation failed");
25 }
26
27 return obj;
28}
29
30template <typename T>
31T* newDatabaseObject(SB_ID id = 0)
32{
33 static_assert(std::is_base_of<SB::Core::DatabaseObject, T>::value);
34
35 T* obj = new T();
36
37 if (obj)
38 {
39 if (SB::Core::ObjectTracker* const objectTracker = SB::Engine::System::getObjectTracker())
40 {
41 objectTracker->trackObject((SB::Core::Object*)obj);
42 }
43 }
44 else
45 {
46 assert(false && "Memory allocation failed");
47 }
48
49 obj->setDatabaseID(id);
50
51 assert(obj->getDatabaseID() && "ID must be valid by this point");
52
53 return obj;
54}
Definition object_tracker.h:8
Simple base Object that all Sound Bakery objects should inherit from.
Definition object.h:33