EasyUniversal / DocsДокументация · SDK 0.3Подписка Universal ↗
Easy Universal / Примеры и шаблоны

templates/toolkit/freshness.as

AngelScript · native runtime · локальная сборка
namespace easy_data {
    class Cooldown {
        float next_time=0;
        bool ready(float interval) {
            if(!math::is_finite(interval)||interval<=0||interval>3600)return false;
            float now=time::seconds();if(now<next_time)return false;
            next_time=now+interval;return true;
        }
        void reset() { next_time=0; }
    }
    class PositionSnapshot {
        vec3 position;
        float timestamp=0;
        bool valid=false;
        void clear() {valid=false;position=vec3();timestamp=0;}
        bool publish(const vec3 &in point) {
            clear();
            if(!math::is_finite(point.x)||!math::is_finite(point.y)||!math::is_finite(point.z)
                ||math::abs(point.x)>10000000||math::abs(point.y)>10000000||math::abs(point.z)>10000000)return false;
            position=point;timestamp=time::seconds();valid=true;return true;
        }
        bool fresh(float max_age) const {
            float age=time::seconds()-timestamp;
            return valid&&math::is_finite(max_age)&&max_age>=0&&age>=0&&age<=max_age;
        }
    }
}
Easy Universal — отдельный проект. Easy External не изменён.