CSEngine
Loading...
Searching...
No Matches
ComponentDef.h
1//
2// Created by ounols on 19. 3. 14.
3//
4
5#ifndef CSENGINE_APP_COMPONENTDEF_H
6#define CSENGINE_APP_COMPONENTDEF_H
7
8#define Transform static_cast<TransformInterface*>(gameObject->GetTransform())
9#define COMPONENT_DECLARE(CLASSNAME) \
10CLASSNAME(); \
11auto GetComponent() override
12
13#define COMPONENT_DEFINE_CONSTRUCTOR(CLASSNAME) \
14static const char* GetClassStaticType() { return #CLASSNAME; } \
15explicit CLASSNAME(CSE::SGameObject* l_gameObject)
16
17#define COMPONENT_CONSTRUCTOR(CLASSNAME) \
18namespace __REFELCTION_DUMP__ { namespace CLASSNAME { \
19unsigned char* __CSE_REFLECTION_DUMP__ = \
20CSE::ReflectionMgr::DefineWrapper::SetDefine(#CLASSNAME, []() { return new CSE::CLASSNAME(nullptr); });}} \
21CSE::CLASSNAME::CLASSNAME(CSE::SGameObject* l_gameObject) : CSE::SComponent(#CLASSNAME, l_gameObject)
22
23#define COMPONENT_DERIVED_CLASS_TYPE(CLASSNAME) \
24SetClassType(#CLASSNAME)
25
26#define FIND_OBJ_REFERENCE(obj, src) \
27{ \
28 auto targetObject = lists_obj.find(src->obj); \
29 obj = (targetObject != lists_obj.end()) ? targetObject->second : src->obj; \
30}
31#define FIND_COMP_REFERENCE(comp, src, componentName) \
32{ \
33 auto targetObject = lists_comp.find(src->comp); \
34 comp = (targetObject != lists_comp.end()) ? static_cast<componentName*>(targetObject->second) : src->comp; \
35}
36
37#define INIT_COMPONENT_CLONE(className, cloneName) \
38className* cloneName = nullptr; \
39if (object == nullptr) { \
40cloneName = new className(object); \
41} else { \
42cloneName = object->CreateComponent<className>(); \
43}
44
45#endif //CSENGINE_APP_COMPONENTDEF_H