CSEngine
Loading...
Searching...
No Matches
SObject.cpp
1#include "SObject.h"
2#include "Manager/MemoryMgr.h"
3#include "Manager/EngineCore.h"
4#include "Util/MoreString.h"
5#include <string>
6
7using namespace CSE;
8
9MemoryMgr* memoryMgr = nullptr;
10
11SObject::SObject() {
12 memoryMgr = CORE->GetCore(MemoryMgr);
13 GenerateHashString();
14 // register this object to MemoryContainer class
15 memoryMgr->Register(this);
16}
17
18SObject::SObject(bool isRegister) {
19 GenerateHashString();
20 if (isRegister) memoryMgr->Register(this);
21}
22
23SObject::~SObject() = default;
24
25
26void SObject::SetUndestroyable(bool enable) {
27 isUndestroyable = enable;
28}
29
30void SObject::Destroy() {
31 memoryMgr->ReleaseObject(this);
32
33}
34
35void SObject::GenerateHashString() {
36 std::random_device rd;
37 std::mt19937 gen(rd());
38 std::uniform_int_distribution<> dis(0, 61); // 0~9, A~Z, a~z까지 숫자 생성
39
40 m_hash.clear();
41 m_hash.reserve(16);
42
43 do {
44 m_hash = GetRandomHash(16);
45 } while (memoryMgr->HasHash(m_hash));
46}
47
48void SObject::SetHash(std::string& hash) {
49 const std::string prevHash = std::string(m_hash);
50 if (hash.empty()) {
51 GenerateHashString();
52 memoryMgr->ChangeHash(prevHash, m_hash);
53 return;
54 }
55 m_hash = hash;
56 memoryMgr->ChangeHash(prevHash, hash);
57}