1//************************************ bs::framework - Copyright 2018 Marko Pintera **************************************//
2//*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********//
3#include "Scene/BsComponent.h"
4#include "Scene/BsSceneObject.h"
5#include "Private/RTTI/BsComponentRTTI.h"
6
7namespace bs
8{
9 Component::Component(HSceneObject parent)
10 :mParent(std::move(parent))
11 {
12 setName("Component");
13 }
14
15 bool Component::typeEquals(const Component& other)
16 {
17 return getRTTI()->getRTTIId() == other.getRTTI()->getRTTIId();
18 }
19
20 bool Component::calculateBounds(Bounds& bounds)
21 {
22 Vector3 position = SO()->getTransform().getPosition();
23
24 bounds = Bounds(AABox(position, position), Sphere(position, 0.0f));
25 return false;
26 }
27
28 void Component::destroy(bool immediate)
29 {
30 SO()->destroyComponent(this, immediate);
31 }
32
33 void Component::destroyInternal(GameObjectHandleBase& handle, bool immediate)
34 {
35 if (immediate)
36 GameObjectManager::instance().unregisterObject(handle);
37 else
38 GameObjectManager::instance().queueForDestroy(handle);
39 }
40
41 RTTITypeBase* Component::getRTTIStatic()
42 {
43 return ComponentRTTI::instance();
44 }
45
46 RTTITypeBase* Component::getRTTI() const
47 {
48 return Component::getRTTIStatic();
49 }
50}