nuclear@2: #ifndef BOOLANIM_H_ nuclear@2: #define BOOLANIM_H_ nuclear@2: nuclear@2: class BoolAnim { nuclear@2: private: nuclear@2: mutable float value; nuclear@2: mutable float trans_dir; // transition direction (sign) nuclear@2: long trans_start; // transition start time nuclear@2: long trans_dur; nuclear@2: nuclear@2: long (*get_msec)(); nuclear@2: nuclear@2: void update(long tm) const; nuclear@2: nuclear@2: public: nuclear@2: BoolAnim(bool st = false); nuclear@2: nuclear@2: void set_transition_duration(long dur); nuclear@2: void set_time_callback(long (*time_func)()); nuclear@2: nuclear@3: void set(bool st); nuclear@3: nuclear@2: void change(bool st); nuclear@2: void change(bool st, long trans_start); nuclear@2: nuclear@2: bool get_state() const; nuclear@2: bool get_state(long tm) const; nuclear@2: nuclear@2: float get_value() const; nuclear@2: float get_value(long tm) const; nuclear@2: nuclear@2: // transition direction (-1, 0, 1) nuclear@2: float get_dir() const; nuclear@2: float get_dir(long tm) const; nuclear@2: nuclear@2: operator bool() const; // equivalent to get_state nuclear@2: operator float() const; // equivalent to get_value nuclear@2: }; nuclear@2: nuclear@2: #endif // BOOLANIM_H_