diff --git a/dGame/Entity.cpp b/dGame/Entity.cpp index 0eb73ec23..7e4bc5a71 100644 --- a/dGame/Entity.cpp +++ b/dGame/Entity.cpp @@ -90,6 +90,7 @@ #include "CollectibleComponent.h" #include "ItemComponent.h" #include "MinifigComponent.h" +#include "SoundAmbient3DComponent.h" #include "SoundAmbient2DComponent.h" #include "SoundRepeaterComponent.h" #include "GhostComponent.h" @@ -945,6 +946,12 @@ void Entity::Initialize() { if (id > -1) AddComponent(id); break; } + case eReplicaComponentType::SOUND_AMBIENT_3D: { + // LWOSoundAmbient3DComponent: the client makes it from the registry + const auto id = compRegistryTable->GetByIDAndType(m_TemplateID, eReplicaComponentType::SOUND_AMBIENT_3D, -1); + if (id > -1) AddComponent(id); + break; + } default: break; } diff --git a/dGame/dComponents/SoundAmbient3DComponent.h b/dGame/dComponents/SoundAmbient3DComponent.h new file mode 100644 index 000000000..dcf7a76d3 --- /dev/null +++ b/dGame/dComponents/SoundAmbient3DComponent.h @@ -0,0 +1,17 @@ +#ifndef SOUNDAMBIENT3DCOMPONENT_H +#define SOUNDAMBIENT3DCOMPONENT_H + +#include "Component.h" +#include "eReplicaComponentType.h" + +/** + * A 3D ambient sound the client plays, as the client's LWOSoundAmbient3DComponent; the server sends nothing for it. + */ +class SoundAmbient3DComponent final : public Component { +public: + static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::SOUND_AMBIENT_3D; + + SoundAmbient3DComponent(Entity* parent, const int32_t componentID) : Component(parent, componentID) {} +}; + +#endif // SOUNDAMBIENT3DCOMPONENT_H