#pragma once #include #include #include #include #include #include namespace VCtrl { class ModelSplitterComponent final : public dtEntity::Component { using BaseClass = dtEntity::Component; public: static const dtEntity::ComponentType TYPE; static const dtEntity::StringId VerticalDisplaceId; static const dtEntity::StringId HorizontalDisplaceId; ModelSplitterComponent(); void OnAddedToEntity(dtEntity::Entity &entity) override; dtEntity::ComponentType GetType() const override { return TYPE; } void Split(std::vector &eids, std::vector &heights, std::vector &floors, dtEntity::StringId layerName); dtEntity::FloatProperty mVerticalDisplace; dtEntity::Vec2Property mHorizontalDisplace; void SetBuildingId(dtEntity::StringId id) { mBuildingId = id; } dtEntity::StringId GetBuildingId() const { return mBuildingId; } private: dtEntity::Entity *mEntity = nullptr; dtEntity::StringId mBuildingId = 0; }; ////////////////////////////////////////////////////////// class ModelSplitterSystem final : public dtEntity::DefaultEntitySystem , public dtEntity::ScriptAccessor { public: explicit ModelSplitterSystem(dtEntity::EntityManager &em); static const dtEntity::ComponentType TYPE; }; }