#pragma once

#include <kernel/back/props/Physical.hpp>
#include <kernel/back/engine/PhysicEngine.hpp>

#include <engine/physic/front/object/TangibleStatic.hpp>
#include <functional>
#include <optional>

namespace megu::kernel {
    class Fixed : public TangibleStatic, public Physical<PhysicEngine> {
        public:
            Fixed(float x, float y, float w, float h);

            void update_physic(double) const override;
            void on_collide(const Kernel &, const PhysicEngine &, Physical &, double) override;
            void apply(Kernel & k, PhysicEngine &) override;

            void setCollideLambda(const CollideLambda &);
            void setUpdateLambda(const UpdateLambda &);

        private:
            CollideLambda _collide;
            UpdateLambda _update;
    


    };
}