// Editor reference only: not an executable package entrypoint.
// vec2 / vec3: x,y[,z], constructors, add/subtract/multiply/normalize/
// length/length_squared/dot/distance/lerp; vec3 also cross.
// matrix4: identity constructor, get/set(row,column), multiply, transpose.
// memory_buffer: size; bool read_u8/u16/u32/i32/u64/float/double(offset,out);
// bool slice(offset,count,string &out). These native types are declared by host.
namespace projection {
bool project(const matrix4 &in matrix,const vec3 &in world,float width,float height,vec2 &out screen);
bool perspective(const vec3 &in world,const vec3 &in camera,const vec3 &in forward,const vec3 &in right,const vec3 &in up,float horizontal_fov,float width,float height,vec2 &out screen);
bool from_bytes(const string &in bytes,matrix4 &out matrix);
}
namespace buffer { memory_buffer@ from_bytes(const string &in bytes); }
namespace geometry {
float distance3(float x,float y,float z,float x2,float y2,float z2);
bool project(const string &in matrix64,float x,float y,float z,float &out sx,float &out sy);
}
namespace adapter {
bool declared();
string game();
string source();
bool has_capability(const string &in capability);
bool source_available();
string status();
string last_error();
bool set_status(const string &in state,const string &in message='');
bool add_entity(uint64 id,const string &in label,float x,float y,float z,float health,uint team);
uint entity_count();
bool entity_position(uint index,float &out x,float &out y,float &out z);
uint64 entity_id(uint index);
string entity_label(uint index);
float entity_health(uint index);
uint entity_team(uint index);
}
namespace runtime { void log(const string &in text); }
namespace input {
bool enabled();
bool active();
bool key_down(uint virtualKey);
bool move_mouse(int dx,int dy);
bool click_left();
string last_error();
}
namespace http {
uint post(const string &in url, const string &in body);
bool enabled();
uint get(const string &in url);
string state(uint id);
uint status(uint id);
string body(uint id);
string error(uint id);
bool release(uint id);
}
namespace screen { float width(); float height(); }
namespace time { float seconds(); float delta(); }
namespace demo { float x(); float y(); }
namespace wt {
bool enabled();
bool available();
bool read_number(const string &in endpoint,const string &in key,float &out value);
}
namespace process {
// SDK 0.2, new permissions require manifest api="0.2".
// thread_info: uint id,owner_pid; int priority; uint64 start_address; bool start_known.
// handle_info: uint64 value; uint type_index,access,attributes.
array<thread_info>@ enumerate_threads(uint pid);
array<handle_info>@ enumerate_handles(uint pid);
array<thread_info>@ find_orphan_threads(uint pid,const array<module_info> &in modules);
bool write_enabled();
bool write_u8(uint pid,uint64 address,uint8 value);
bool write_u16(uint pid,uint64 address,uint16 value);
bool write_u32(uint pid,uint64 address,uint value);
bool write_u64(uint pid,uint64 address,uint64 value);
bool write_f32(uint pid,uint64 address,float value);
bool write_f64(uint pid,uint64 address,double value);
bool write_bytes(uint pid,uint64 address,const string &in bytes);
bool write_protected(uint pid,uint64 address,const string &in bytes,uint new_protect);
uint64 find_pattern(uint pid,const string &in module,const string &in pattern,const string &in mask);
array<uint64>@ find_all_patterns(uint pid,const string &in module,const string &in pattern,const string &in mask);
uint64 resolve_rip_relative(uint pid,uint64 instruction,uint displacement_offset,uint instruction_length);
bool save_profile(uint pid,const string &in filename);
string diff_profiles(const string &in filename_a,const string &in filename_b);
string diagnostics(uint pid);
// module_info: uint64 base,size; string path.
// module_difference: uint64 base,system_size,peb_size;
// string kind,system_path,peb_path. Native host value types.
array<module_info>@ enumerate_modules(uint pid,const string &in source);
array<module_difference>@ diff_modules(uint pid);
// memory_region: uint64 address,size; uint state,type,protection;
// bool readable,writable,executable,guard. Native host value type.
array<memory_region>@ enumerate_memory_regions(uint pid);
bool attached();
bool alive();
uint pid();
string name();
uint64 module_base(const string &in name);
string last_error();
bool read_u32(uint64 address,uint &out value);
bool read_u64(uint64 address,uint64 &out value);
bool read_float(uint64 address,float &out value);
bool read_bytes(uint64 address,uint count,string &out bytes);
bool read_u8(uint64 address,uint8 &out value);
bool read_u16(uint64 address,uint16 &out value);
bool read_i32(uint64 address,int &out value);
bool read_double(uint64 address,double &out value);
memory_buffer@ read_buffer(uint64 address,uint count);
}
namespace render {
void push_clip(float x,float y,float width,float height);
void pop_clip();
void text(float x,float y,const string &in value,uint color=0xffffffff);
void line(float x,float y,float x2,float y2,uint color=0xffffffff,float thickness=1);
void circle(float x,float y,float radius,uint color=0xffffffff);
void filled_circle(float x,float y,float radius,uint color=0xffffffff);
void rect(float x,float y,float width,float height,uint color=0xffffffff,bool filled=false);
}
namespace ui {
void theme(uint background,uint panel,uint text,uint accent,uint border);
uint keybind(const string &in id,const string &in label,uint code,float x,float y,float width,float height);
float scroll(const string &in id,float offset,float content_height,float x,float y,float width,float height);
void label(const string &in text);
bool button(const string &in id,const string &in label,float x,float y,float width,float height);
bool checkbox(const string &in id,const string &in label,bool value,float x,float y,float width,float height);
float slider(const string &in id,const string &in label,float value,float min,float max,float step,float x,float y,float width,float height);
uint cycle(const string &in id,const string &in label,uint index,uint count,float x,float y,float width,float height);
string textbox(const string &in id,const string &in label,const string &in value,uint max_bytes,float x,float y,float width,float height);
}
namespace resources { string text(const string &in path); }
namespace gui {
bool enabled();
string get(const string &in key,const string &in fallback='');
void set(const string &in key,const string &in value);
bool contains(const string &in key);
bool remove(const string &in key);
}
namespace config {
bool enabled();
bool contains(const string &in key);
bool remove(const string &in key);
bool get_bool(const string &in key,bool fallback=false);
void set_bool(const string &in key,bool value);
int get_int(const string &in key,int fallback=0);
void set_int(const string &in key,int value);
float get_float(const string &in key,float fallback=0);
void set_float(const string &in key,float value);
string get(const string &in key,const string &in fallback='');
void set(const string &in key,const string &in value);
}
namespace jobs {
uint submit(const string &in kind,const string &in payload);
string state(uint id);
string body(uint id);
string error(uint id);
bool release(uint id);
}
namespace json {
bool valid(const string &in source);
string get_string(const string &in source,const string &in key,const string &in fallback='');
}
namespace source {
bool enabled();
string kind();
uint provider_pid();
string status();
string last_error();
bool has_capability(const string &in name);
string snapshot();
bool update(const string &in key,const string &in jsonScalar);
string update_status();
bool read_number(const string &in key,double &out value);
bool read_text(const string &in key,string &out value);
bool read_bool(const string &in key,bool &out value);
}
Easy Universal / Справочник SDK