#include "editable.h"
#include "math/frustum.h"
-#include "generic/callback.h"
+#include "signal/signal.h"
#include "generic/object.h"
#include "selectionlib.h"
#include "render.h"
selection_t m_selection;
selection_t m_component_selection;
- std::vector<SelectionChangeCallback> m_selectionChanged_callbacks;
+ Signal1<const Selectable&> m_selectionChanged_callbacks;
void ConstructPivot() const;
mutable bool m_pivotChanged;
}
}
- void addSelectionChangeCallback(const SelectionChangeCallback& callback)
+ void addSelectionChangeCallback(const SelectionChangeHandler& handler)
{
- m_selectionChanged_callbacks.push_back(callback);
+ m_selectionChanged_callbacks.connectLast(handler);
}
void selectionChanged(const Selectable& selectable)
{
- typedef Functor1Invoke<SelectionChangeCallback, const Selectable&> SelectionChangeCallbackInvoke;
- std::for_each(m_selectionChanged_callbacks.begin(), m_selectionChanged_callbacks.end(), SelectionChangeCallbackInvoke(selectable));
+ m_selectionChanged_callbacks(selectable);
}
typedef MemberCaller1<RadiantSelectionSystem, const Selectable&, &RadiantSelectionSystem::selectionChanged> SelectionChangedCaller;
inline RadiantSelectionSystem& getSelectionSystem()
{
- ASSERT_NOTNULL(g_RadiantSelectionSystem);
return *g_RadiantSelectionSystem;
}
}
}
+SignalHandlerId SelectionSystem_boundsChanged;
+
void SelectionSystem_Construct()
{
RadiantSelectionSystem::constructStatic();
g_RadiantSelectionSystem = new RadiantSelectionSystem;
- GlobalSceneGraph().addBoundsChangedCallback(FreeCaller<SelectionSystem_OnBoundsChanged>());
+ SelectionSystem_boundsChanged = GlobalSceneGraph().addBoundsChangedCallback(FreeCaller<SelectionSystem_OnBoundsChanged>());
GlobalShaderCache().attachRenderable(getSelectionSystem());
}
{
GlobalShaderCache().detachRenderable(getSelectionSystem());
- GlobalSceneGraph().removeBoundsChangedCallback(FreeCaller<SelectionSystem_OnBoundsChanged>());
+ GlobalSceneGraph().removeBoundsChangedCallback(SelectionSystem_boundsChanged);
delete g_RadiantSelectionSystem;