Fixed some bugs

This commit is contained in:
Chewico 2025-06-24 20:53:13 +02:00
parent 3cc97f579f
commit dddd305f07
11 changed files with 592 additions and 428 deletions

View File

@ -67,9 +67,10 @@ Size=104,68
Collapsed=0 Collapsed=0
[Window][Test] [Window][Test]
Pos=560,275 Pos=440,24
Size=396,176 Size=385,361
Collapsed=0 Collapsed=0
DockId=0x00000005,2
[Docking][Data] [Docking][Data]
DockSpace ID=0xA1672E74 Window=0x4647B76E Pos=0,24 Size=1280,696 Split=Y Selected=0x34A4C10F DockSpace ID=0xA1672E74 Window=0x4647B76E Pos=0,24 Size=1280,696 Split=Y Selected=0x34A4C10F

View File

@ -26,19 +26,28 @@
static std::stringstream stream; static std::stringstream stream;
static std::string str; static std::string str;
void printFuncList(const asIScriptEngine &engine) { void printFuncList(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetFuncdefCount(); ++i) { for (int i = 0; i < engine.GetFuncdefCount(); ++i) {
asITypeInfo *t = engine.GetFuncdefByIndex(i); asITypeInfo* t = engine.GetFuncdefByIndex(i);
if (!t) if (!t)
continue; continue;
asIScriptFunction *f = t->GetFuncdefSignature(); asIScriptFunction* func = t->GetFuncdefSignature();
if (!func || func->GetSubType())
continue;
stream << "funcdef " << f->GetDeclaration(true, false, true) << ";\n"; std::string decl = func->GetDeclaration(true, true, true);
// Detect class-scoped funcdefs by presence of "::" in the declaration
size_t scopePos = decl.find("::");
if (scopePos != std::string::npos)
continue;
stream << "funcdef " << decl << ";\n";
} }
} }
void printEnumList(const asIScriptEngine &engine) { void printEnumList(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetEnumCount(); ++i) { for (int i = 0; i < engine.GetEnumCount(); ++i) {
const auto e = engine.GetEnumByIndex(i); const auto e = engine.GetEnumByIndex(i);
if (!e) if (!e)
@ -63,9 +72,9 @@ void printEnumList(const asIScriptEngine &engine) {
} }
} }
void printClassTypeList(const asIScriptEngine &engine) { void printClassTypeList(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetObjectTypeCount(); ++i) { for (int i = 0; i < engine.GetObjectTypeCount(); ++i) {
asITypeInfo *t = engine.GetObjectTypeByIndex(i); asITypeInfo* t = engine.GetObjectTypeByIndex(i);
if (!t) if (!t)
continue; continue;
@ -89,8 +98,17 @@ void printClassTypeList(const asIScriptEngine &engine) {
stream << " {\n"; stream << " {\n";
for (int i = 0; i < t->GetChildFuncdefCount(); ++i) {
asITypeInfo* ftype = t->GetChildFuncdef(i);
asIScriptFunction* func = ftype->GetFuncdefSignature();
std::string decl = func->GetDeclaration(false, false, true);
stream << "\tfuncdef " << decl << ";\n";
}
for (int j = 0; j < t->GetFactoryCount(); ++j) { for (int j = 0; j < t->GetFactoryCount(); ++j) {
asIScriptFunction *f = t->GetFactoryByIndex(j); asIScriptFunction* f = t->GetFactoryByIndex(j);
stream << "\t" << f->GetDeclaration(false, false, true) << ";\n"; stream << "\t" << f->GetDeclaration(false, false, true) << ";\n";
} }
@ -132,7 +150,7 @@ void printClassTypeList(const asIScriptEngine &engine) {
} }
} }
void printGlobalFunctionList(const asIScriptEngine &engine) { void printGlobalFunctionList(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetGlobalFunctionCount(); ++i) { for (int i = 0; i < engine.GetGlobalFunctionCount(); ++i) {
const auto f = engine.GetGlobalFunctionByIndex(i); const auto f = engine.GetGlobalFunctionByIndex(i);
if (!f) if (!f)
@ -148,10 +166,10 @@ void printGlobalFunctionList(const asIScriptEngine &engine) {
} }
} }
void printGlobalPropertyList(const asIScriptEngine &engine) { void printGlobalPropertyList(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetGlobalPropertyCount(); ++i) { for (int i = 0; i < engine.GetGlobalPropertyCount(); ++i) {
const char *name; const char* name;
const char *ns0; const char* ns0;
int type; int type;
engine.GetGlobalPropertyByIndex(i, &name, &ns0, &type, nullptr, nullptr, engine.GetGlobalPropertyByIndex(i, &name, &ns0, &type, nullptr, nullptr,
nullptr, nullptr); nullptr, nullptr);
@ -170,7 +188,7 @@ void printGlobalPropertyList(const asIScriptEngine &engine) {
} }
} }
void printGlobalTypedef(const asIScriptEngine &engine) { void printGlobalTypedef(const asIScriptEngine& engine) {
for (int i = 0; i < engine.GetTypedefCount(); ++i) { for (int i = 0; i < engine.GetTypedefCount(); ++i) {
const auto type = engine.GetTypedefByIndex(i); const auto type = engine.GetTypedefByIndex(i);
if (!type) if (!type)
@ -187,7 +205,7 @@ void printGlobalTypedef(const asIScriptEngine &engine) {
} }
} }
void printAngelInfo(const asIScriptEngine &engine) { void printAngelInfo(const asIScriptEngine& engine) {
printFuncList(engine); printFuncList(engine);
printEnumList(engine); printEnumList(engine);
@ -211,12 +229,12 @@ namespace Deer {
str = stream.str(); str = stream.str();
} }
void EditorEngine::saveAngelscriptPredefined(const Path &path) { void EditorEngine::saveAngelscriptPredefined(const Path& path) {
Deer::Path filePath = path / "as.predefined"; Deer::Path filePath = path / "as.predefined";
std::ofstream file(filePath, std::ios::out | std::ios::binary); std::ofstream file(filePath, std::ios::out | std::ios::binary);
file.write(reinterpret_cast<const char *>(str.c_str()), str.size()); file.write(reinterpret_cast<const char*>(str.c_str()), str.size());
file.close(); file.close();
} }

View File

@ -1,93 +1,98 @@
#include "DeerStudio/EditorEngine/ServiceScript/ServiceScriptContext.h" #include "DeerStudio/EditorEngine/ServiceScript/ServiceScriptContext.h"
#include "DeerStudio/EditorEngine/ErrorHandle.h"
#include "DeerStudio/EditorEngine.h" #include "DeerStudio/EditorEngine.h"
#include "DeerStudio/EditorEngine/ErrorHandle.h"
#include "angelscript.h" #include "angelscript.h"
namespace Deer { namespace Deer {
namespace EditorEngine { namespace EditorEngine {
ServiceScriptContext::ServiceScriptContext(asIScriptModule* _module, ServiceScriptInfo* _info) ServiceScriptContext::ServiceScriptContext(asIScriptModule* _module,
: info(_info), module(_module) { ServiceScriptInfo* _info)
: info(_info), module(_module) {
size_t nScripts = module->GetObjectTypeCount(); size_t nScripts = module->GetObjectTypeCount();
asITypeInfo* serviceScriptType = scriptEngine->GetTypeInfoByName("ServiceScript"); asITypeInfo* serviceScriptType =
scriptEngine->GetTypeInfoByName("ServiceScript");
if (!serviceScriptType) { if (!serviceScriptType) {
DEER_EDITOR_ENGINE_ERROR("Could not load ServiceScript interface type"); DEER_EDITOR_ENGINE_ERROR(
return; "Could not load ServiceScript interface type");
} return;
}
context = scriptEngine->CreateContext(); context = scriptEngine->CreateContext();
context->AddRef(); context->AddRef();
for (size_t i = 0; i < nScripts; i++) { for (size_t i = 0; i < nScripts; i++) {
asITypeInfo* info = module->GetObjectTypeByIndex(i); asITypeInfo* info = module->GetObjectTypeByIndex(i);
// If it does not implement service script we are not interested int it // If it does not implement service script we are not interested
if (!info->Implements(serviceScriptType)) // int it
continue; if (!info->Implements(serviceScriptType))
continue;
scriptServices.push_back({info, context}); scriptServices.push_back({info, context});
} }
} }
ServiceScriptContext::~ServiceScriptContext() { ServiceScriptContext::~ServiceScriptContext() {
scriptServices.clear(); scriptServices.clear();
if (context) if (context)
context->Release(); context->Release();
delete info; delete info;
} }
ServiceScriptContext::ServiceScriptContext(ServiceScriptContext&& o) ServiceScriptContext::ServiceScriptContext(ServiceScriptContext&& o)
: scriptServices(std::move(o.scriptServices)) { : scriptServices(std::move(o.scriptServices)) {
context = o.context; context = o.context;
module = o.module; module = o.module;
info = o.info; info = o.info;
o.context = nullptr; o.context = nullptr;
o.module = nullptr; o.module = nullptr;
o.info = nullptr; o.info = nullptr;
} }
ServiceScriptContext& ServiceScriptContext::operator=(ServiceScriptContext&& o) { ServiceScriptContext&
if (&o != this) { ServiceScriptContext::operator=(ServiceScriptContext&& o) {
scriptServices = std::move(o.scriptServices); if (&o != this) {
context = o.context; scriptServices = std::move(o.scriptServices);
module = o.module; context = o.context;
info = o.info; module = o.module;
info = o.info;
o.context = nullptr; o.context = nullptr;
o.module = nullptr; o.module = nullptr;
o.info = nullptr; o.info = nullptr;
} }
return *this; return *this;
} }
void ServiceScriptContext::update() { void ServiceScriptContext::update() {
for (auto& scriptService : scriptServices) { for (auto& scriptService : scriptServices) {
scriptService.update(); scriptService.update();
} }
} }
void ServiceScriptContext::init() { void ServiceScriptContext::init() {
for (auto& scriptService : scriptServices) { for (auto& scriptService : scriptServices) {
scriptService.init(); scriptService.init();
} }
} }
void ServiceScriptContext::bindFunctions() { void ServiceScriptContext::bindFunctions() {
std::string ns; std::string ns;
ns = info->author + "::" + info->name +"::" + info->name; ns = info->name;
DEER_CORE_INFO(ns.c_str()); DEER_CORE_INFO(ns.c_str());
scriptEngine->SetDefaultNamespace(ns.c_str()); scriptEngine->SetDefaultNamespace(ns.c_str());
for (ServiceScriptObject& object : scriptServices) { for (ServiceScriptObject& object : scriptServices) {
object.bindFunctions(); object.bindFunctions();
} }
scriptEngine->SetDefaultNamespace(""); scriptEngine->SetDefaultNamespace("");
} }
} } // namespace EditorEngine
} } // namespace Deer

View File

@ -4,7 +4,7 @@ class PropertiesPannel : DockPanel {
vec3 slid2; vec3 slid2;
void onRender() { void onRender() {
Entity entity = Chewico::ActiveEntity::ActiveEntity::getActiveEntity(); Entity entity = ActiveEntity::getActiveEntity();
// We don't want to change root options // We don't want to change root options
if (entity.isRoot) if (entity.isRoot)

View File

@ -21,7 +21,7 @@ class TreePannel : DockPanel {
for (int i = 0; i < entity.childs.count; i++) { for (int i = 0; i < entity.childs.count; i++) {
Entity child = entity.childs[i]; Entity child = entity.childs[i];
bool isActive = child == Chewico::ActiveEntity::ActiveEntity::getActiveEntity(); bool isActive = child == ActiveEntity::getActiveEntity();
string displayName = child.name; string displayName = child.name;
if (displayName == "") { if (displayName == "") {
@ -52,7 +52,7 @@ class TreePannel : DockPanel {
// We can't select the entity // We can't select the entity
if (UI::isItemClicked(0)) { if (UI::isItemClicked(0)) {
Chewico::ActiveEntity::ActiveEntity::setActiveEntity(entity); ActiveEntity::setActiveEntity(entity);
} }
} }

View File

@ -1,5 +1,4 @@
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -115,6 +114,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -401,7 +401,6 @@ namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -517,6 +516,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -802,5 +802,5 @@ namespace UI { void openPopup(const string&in, any@); }
namespace UI { void closePopup(); } namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
namespace Chewico::ActiveEntity::ActiveEntity { Entity getActiveEntity(); } namespace ActiveEntity { Entity getActiveEntity(); }
namespace Chewico::ActiveEntity::ActiveEntity { void setActiveEntity(Entity); } namespace ActiveEntity { void setActiveEntity(Entity); }

View File

@ -1,5 +1,4 @@
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -115,6 +114,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -401,7 +401,6 @@ namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -517,6 +516,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -802,5 +802,5 @@ namespace UI { void openPopup(const string&in, any@); }
namespace UI { void closePopup(); } namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
namespace Chewico::ActiveEntity::ActiveEntity { Entity getActiveEntity(); } namespace ActiveEntity { Entity getActiveEntity(); }
namespace Chewico::ActiveEntity::ActiveEntity { void setActiveEntity(Entity); } namespace ActiveEntity { void setActiveEntity(Entity); }

View File

@ -1,6 +1,6 @@
class Test : DockPanel { class Test : DockPanel {
void onRender() { void onRender() {
Entity ent = Chewico::ActiveEntity::ActiveEntity::getActiveEntity(); Entity ent = ActiveEntity::getActiveEntity();
UI::text("Hi"); UI::text("Hi");
UI::text(ent.name); UI::text(ent.name);

View File

@ -1,5 +1,4 @@
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -115,6 +114,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -401,7 +401,6 @@ namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -517,6 +516,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -802,5 +802,5 @@ namespace UI { void openPopup(const string&in, any@); }
namespace UI { void closePopup(); } namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
namespace Chewico::ActiveEntity::ActiveEntity { Entity getActiveEntity(); } namespace ActiveEntity { Entity getActiveEntity(); }
namespace Chewico::ActiveEntity::ActiveEntity { void setActiveEntity(Entity); } namespace ActiveEntity { void setActiveEntity(Entity); }

View File

@ -1,5 +1,4 @@
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -115,6 +114,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -401,7 +401,6 @@ namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
@ -517,6 +516,7 @@ class string {
void erase(uint pos, int count = - 1); void erase(uint pos, int count = - 1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -802,5 +802,5 @@ namespace UI { void openPopup(const string&in, any@); }
namespace UI { void closePopup(); } namespace UI { void closePopup(); }
namespace UI { void dragDropSource(const string&in, any@, const string&in); } namespace UI { void dragDropSource(const string&in, any@, const string&in); }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); }
namespace Chewico::ActiveEntity::ActiveEntity { Entity getActiveEntity(); } namespace ActiveEntity { Entity getActiveEntity(); }
namespace Chewico::ActiveEntity::ActiveEntity { void setActiveEntity(Entity); } namespace ActiveEntity { void setActiveEntity(Entity); }

View File

@ -1,120 +1,120 @@
//This file was generated automatically //This file was generated automatically
funcdef bool T[]::less(const T&in a, const T&in b);
funcdef void ReciverFunc(any@); funcdef void ReciverFunc(any@);
funcdef void TransferFunc(any@, any@); funcdef void TransferFunc(any@, any@);
enum key { enum key {
A = 546, A = 546,
B = 547, B = 547,
C = 548, C = 548,
D = 549, D = 549,
E = 550, E = 550,
F = 551, F = 551,
G = 552, G = 552,
H = 553, H = 553,
I = 554, I = 554,
J = 555, J = 555,
K = 556, K = 556,
L = 557, L = 557,
M = 558, M = 558,
N = 559, N = 559,
O = 560, O = 560,
P = 561, P = 561,
Q = 562, Q = 562,
R = 563, R = 563,
S = 564, S = 564,
T = 565, T = 565,
U = 566, U = 566,
V = 567, V = 567,
W = 568, W = 568,
X = 569, X = 569,
Y = 570, Y = 570,
Z = 571, Z = 571,
K0 = 536, K0 = 536,
K1 = 537, K1 = 537,
K2 = 538, K2 = 538,
K3 = 539, K3 = 539,
K4 = 540, K4 = 540,
K5 = 541, K5 = 541,
K6 = 542, K6 = 542,
K7 = 543, K7 = 543,
K8 = 544, K8 = 544,
K9 = 545, K9 = 545,
Tab = 512, Tab = 512,
Enter = 525, Enter = 525,
Escape = 526, Escape = 526,
Backspace = 523, Backspace = 523,
Space = 524, Space = 524,
Delete = 522, Delete = 522,
Insert = 521, Insert = 521,
Home = 519, Home = 519,
End = 520, End = 520,
PageUp = 517, PageUp = 517,
PageDown = 518, PageDown = 518,
Right = 514, Right = 514,
Up = 515, Up = 515,
Down = 516, Down = 516,
Left = 513, Left = 513,
RightCtrl = 531, RightCtrl = 531,
LeftShift = 528, LeftShift = 528,
RightShift = 532, RightShift = 532,
LeftAlt = 529, LeftAlt = 529,
RightAlt = 533, RightAlt = 533,
LeftSuper = 530, LeftSuper = 530,
RightSuper = 534, RightSuper = 534,
LeftCtrl = 527, LeftCtrl = 527,
MouseLeft = 641, MouseLeft = 641,
MouseRight = 642, MouseRight = 642,
MouseMiddle = 643 MouseMiddle = 643
} }
enum ResourceType { enum ResourceType {
Mesh = 1, Mesh = 1,
Shader = 2 Shader = 2
} }
class string { class string {
~string(); ~string();
string(); string();
string(const string&in); string(const string&in);
string& opAssign(const string&in); string& opAssign(const string&in);
string& opAddAssign(const string&in); string& opAddAssign(const string&in);
bool opEquals(const string&in) const; bool opEquals(const string&in) const;
int opCmp(const string&in) const; int opCmp(const string&in) const;
string opAdd(const string&in) const; string opAdd(const string&in) const;
uint length() const; uint length() const;
void resize(uint); void resize(uint);
bool isEmpty() const; bool isEmpty() const;
uint8& opIndex(uint); uint8& opIndex(uint);
const uint8& opIndex(uint) const; const uint8& opIndex(uint) const;
string& opAssign(double); string& opAssign(double);
string& opAddAssign(double); string& opAddAssign(double);
string opAdd(double) const; string opAdd(double) const;
string opAdd_r(double) const; string opAdd_r(double) const;
string& opAssign(float); string& opAssign(float);
string& opAddAssign(float); string& opAddAssign(float);
string opAdd(float) const; string opAdd(float) const;
string opAdd_r(float) const; string opAdd_r(float) const;
string& opAssign(int64); string& opAssign(int64);
string& opAddAssign(int64); string& opAddAssign(int64);
string opAdd(int64) const; string opAdd(int64) const;
string opAdd_r(int64) const; string opAdd_r(int64) const;
string& opAssign(uint64); string& opAssign(uint64);
string& opAddAssign(uint64); string& opAddAssign(uint64);
string opAdd(uint64) const; string opAdd(uint64) const;
string opAdd_r(uint64) const; string opAdd_r(uint64) const;
string& opAssign(bool); string& opAssign(bool);
string& opAddAssign(bool); string& opAddAssign(bool);
string opAdd(bool) const; string opAdd(bool) const;
string opAdd_r(bool) const; string opAdd_r(bool) const;
string substr(uint start = 0, int count = - 1) const; string substr(uint start = 0, int count = -1) const;
int findFirst(const string&in, uint start = 0) const; int findFirst(const string&in, uint start = 0) const;
int findFirstOf(const string&in, uint start = 0) const; int findFirstOf(const string&in, uint start = 0) const;
int findFirstNotOf(const string&in, uint start = 0) const; int findFirstNotOf(const string&in, uint start = 0) const;
int findLast(const string&in, int start = - 1) const; int findLast(const string&in, int start = -1) const;
int findLastOf(const string&in, int start = - 1) const; int findLastOf(const string&in, int start = -1) const;
int findLastNotOf(const string&in, int start = - 1) const; int findLastNotOf(const string&in, int start = -1) const;
void insert(uint pos, const string&in other); void insert(uint pos, const string&in other);
void erase(uint pos, int count = - 1); void erase(uint pos, int count = -1);
} }
class array<T> { class array<T> {
funcdef bool less(const T&in a, const T&in b);
T[]@ array(int&in); T[]@ array(int&in);
T[]@ array(int&in, uint length); T[]@ array(int&in, uint length);
T[]@ array(int&in, uint length, const T&in value); T[]@ array(int&in, uint length, const T&in value);
@ -145,184 +145,184 @@ class array<T> {
funcdef bool less(const T&in, const T&in); funcdef bool less(const T&in, const T&in);
} }
class dictionaryValue { class dictionaryValue {
~dictionaryValue(); ~dictionaryValue();
dictionaryValue(); dictionaryValue();
dictionaryValue& opAssign(const dictionaryValue&in); dictionaryValue& opAssign(const dictionaryValue&in);
dictionaryValue& opHndlAssign(const ?&in); dictionaryValue& opHndlAssign(const ?&in);
dictionaryValue& opHndlAssign(const dictionaryValue&in); dictionaryValue& opHndlAssign(const dictionaryValue&in);
dictionaryValue& opAssign(const ?&in); dictionaryValue& opAssign(const ?&in);
dictionaryValue& opAssign(double); dictionaryValue& opAssign(double);
dictionaryValue& opAssign(int64); dictionaryValue& opAssign(int64);
void opCast(?&out); void opCast(?&out);
void opConv(?&out); void opConv(?&out);
int64 opConv(); int64 opConv();
double opConv(); double opConv();
} }
class dictionary { class dictionary {
dictionary@ dictionary(); dictionary@ dictionary();
dictionary& opAssign(const dictionary&in); dictionary& opAssign(const dictionary&in);
void set(const string&in, const ?&in); void set(const string&in, const ?&in);
bool get(const string&in, ?&out) const; bool get(const string&in, ?&out) const;
void set(const string&in, const int64&in); void set(const string&in, const int64&in);
bool get(const string&in, int64&out) const; bool get(const string&in, int64&out) const;
void set(const string&in, const double&in); void set(const string&in, const double&in);
bool get(const string&in, double&out) const; bool get(const string&in, double&out) const;
bool exists(const string&in) const; bool exists(const string&in) const;
bool isEmpty() const; bool isEmpty() const;
uint getSize() const; uint getSize() const;
bool delete(const string&in); bool delete(const string&in);
void deleteAll(); void deleteAll();
string[]@ getKeys() const; string[]@ getKeys() const;
dictionaryValue& opIndex(const string&in); dictionaryValue& opIndex(const string&in);
const dictionaryValue& opIndex(const string&in) const; const dictionaryValue& opIndex(const string&in) const;
} }
class ref { class ref {
~ref(); ~ref();
ref(); ref();
ref(const ref&in); ref(const ref&in);
ref(const ?&in); ref(const ?&in);
void opCast(?&out); void opCast(?&out);
ref& opHndlAssign(const ref&in); ref& opHndlAssign(const ref&in);
ref& opHndlAssign(const ?&in); ref& opHndlAssign(const ?&in);
bool opEquals(const ref&in) const; bool opEquals(const ref&in) const;
bool opEquals(const ?&in) const; bool opEquals(const ?&in) const;
} }
class any { class any {
any@ any(); any@ any();
any@ any(?&in); any@ any(?&in);
any@ any(const int64&in); any@ any(const int64&in);
any@ any(const double&in); any@ any(const double&in);
any& opAssign(any&in); any& opAssign(any&in);
void store(?&in); void store(?&in);
void store(const int64&in); void store(const int64&in);
void store(const double&in); void store(const double&in);
bool retrieve(?&out); bool retrieve(?&out);
bool retrieve(int64&out); bool retrieve(int64&out);
bool retrieve(double&out); bool retrieve(double&out);
} }
class DockPanel { class DockPanel {
void onRender(); void onRender();
} }
class ServiceScript { class ServiceScript {
} }
class Entity { class Entity {
string get_name() const property; string get_name() const property;
void set_name(string&in) property; void set_name(string&in) property;
int get_id() const property; int get_id() const property;
Entity createChild(const string&in); Entity createChild(const string&in);
bool get_isRoot() const property; bool get_isRoot() const property;
void destroy(); void destroy();
bool get_exists() const property; bool get_exists() const property;
Entity get_parent() property; Entity get_parent() property;
void set_parent(Entity) property; void set_parent(Entity) property;
bool isDescendantOf(Entity); bool isDescendantOf(Entity);
bool opEquals(const Entity&in) const; bool opEquals(const Entity&in) const;
EntityChilds get_childs() const property; EntityChilds get_childs() const property;
TransformComponent get_transform() const property; TransformComponent get_transform() const property;
MeshComponent getMeshComponent(); MeshComponent getMeshComponent();
MeshComponent createMeshComponent(); MeshComponent createMeshComponent();
bool hasMeshComponent(); bool hasMeshComponent();
void removeMeshComponent(); void removeMeshComponent();
ShaderComponent getShaderComponent(); ShaderComponent getShaderComponent();
ShaderComponent createShaderComponent(); ShaderComponent createShaderComponent();
bool hasShaderComponent(); bool hasShaderComponent();
void removeShaderComponent(); void removeShaderComponent();
CameraComponent getCameraComponent(); CameraComponent getCameraComponent();
CameraComponent createCameraComponent(); CameraComponent createCameraComponent();
bool hasCameraComponent(); bool hasCameraComponent();
void removeCameraComponent(); void removeCameraComponent();
} }
class EntityChilds { class EntityChilds {
int get_count() const property; int get_count() const property;
Entity opIndex(int) const; Entity opIndex(int) const;
} }
class TransformComponent { class TransformComponent {
vec3 get_position() const property; vec3 get_position() const property;
vec3 get_scale() const property; vec3 get_scale() const property;
vec3 get_rotation() const property; vec3 get_rotation() const property;
void set_position(const vec3) property; void set_position(const vec3) property;
void set_scale(const vec3) property; void set_scale(const vec3) property;
void set_rotation(const vec3) property; void set_rotation(const vec3) property;
} }
class MeshComponent { class MeshComponent {
bool get_isActive() const property; bool get_isActive() const property;
bool get_hasMesh() const property; bool get_hasMesh() const property;
void clear(); void clear();
string getMesh(); string getMesh();
void setMesh(string&in); void setMesh(string&in);
void set_isActive(const bool) property; void set_isActive(const bool) property;
} }
class ShaderComponent { class ShaderComponent {
bool get_hasShader() const property; bool get_hasShader() const property;
void clear(); void clear();
string getShader(); string getShader();
void setShader(const string&in); void setShader(const string&in);
} }
class CameraComponent { class CameraComponent {
float get_fov() const property; float get_fov() const property;
float get_aspectRatio() const property; float get_aspectRatio() const property;
float get_nearZ() const property; float get_nearZ() const property;
float get_farZ() const property; float get_farZ() const property;
void set_fov(float) property; void set_fov(float) property;
void set_aspectRatio(float) property; void set_aspectRatio(float) property;
void set_nearZ(float) property; void set_nearZ(float) property;
void set_farZ(float) property; void set_farZ(float) property;
} }
class vec3 { class vec3 {
vec3(); vec3();
vec3(float, float = 0, float = 0); vec3(float, float = 0, float = 0);
vec3 opAdd(const vec3&in); vec3 opAdd(const vec3&in);
vec3 opSub(const vec3&in) const; vec3 opSub(const vec3&in) const;
vec3 opNeg() const; vec3 opNeg() const;
vec3 opMul(float) const; vec3 opMul(float) const;
vec3 opMul_r(float) const; vec3 opMul_r(float) const;
float x; float x;
float y; float y;
float z; float z;
} }
class quat { class quat {
~quat(); ~quat();
quat(); quat();
quat(float, float, float, float); quat(float, float, float, float);
quat opMul(const quat&in) const; quat opMul(const quat&in) const;
vec3 getEuler() const; vec3 getEuler() const;
void setEuler(vec3); void setEuler(vec3);
float x; float x;
float y; float y;
float z; float z;
float w; float w;
} }
class Transform { class Transform {
Transform(); Transform();
vec3 relative(vec3); vec3 relative(vec3);
vec3 position; vec3 position;
vec3 scale; vec3 scale;
quat rotation; quat rotation;
} }
class Camera { class Camera {
Camera(); Camera();
float fov; float fov;
float aspect; float aspect;
float nearZ; float nearZ;
float farZ; float farZ;
} }
class SceneCamera { class SceneCamera {
SceneCamera(); SceneCamera();
Camera camera; Camera camera;
Transform transform; Transform transform;
} }
class FrameBuffer { class FrameBuffer {
FrameBuffer(); FrameBuffer();
void clearRGBA(int, int, int, int); void clearRGBA(int, int, int, int);
int get_height() const property; int get_height() const property;
void resize(int, int); void resize(int, int);
string get_name() const property; string get_name() const property;
bool isValid(); bool isValid();
} }
class Environment { class Environment {
void render(FrameBuffer, SceneCamera&in); void render(FrameBuffer, SceneCamera&in);
Entity getRootEntity(); Entity getRootEntity();
Entity getEntity(int); Entity getEntity(int);
} }
string formatInt(int64 val, const string&in options = "", uint width = 0); string formatInt(int64 val, const string&in options = "", uint width = 0);
string formatUInt(uint64 val, const string&in options = "", uint width = 0); string formatUInt(uint64 val, const string&in options = "", uint width = 0);
@ -330,73 +330,213 @@ string formatFloat(double val, const string&in options = "", uint width = 0, uin
int64 parseInt(const string&in, uint base = 10, uint&out byteCount = 0); int64 parseInt(const string&in, uint base = 10, uint&out byteCount = 0);
uint64 parseUInt(const string&in, uint base = 10, uint&out byteCount = 0); uint64 parseUInt(const string&in, uint base = 10, uint&out byteCount = 0);
double parseFloat(const string&in, uint&out byteCount = 0); double parseFloat(const string&in, uint&out byteCount = 0);
namespace Engine { Entity getRoot(); } namespace Engine {
namespace UI { bool button(const string&in); } Entity getRoot();
namespace UI { bool buttonCenter(const string&in); } }
namespace UI { bool buttonEnd(const string&in); } namespace UI {
namespace UI { bool checkbox(const string&in, bool); } bool button(const string&in);
namespace UI { bool checkboxDisabled(const string&in, bool); } }
namespace UI { void drawFrameBuffer(FrameBuffer, int, int); } namespace UI {
namespace UI { void drawFrameBufferCentered(FrameBuffer, int, int); } bool buttonCenter(const string&in);
namespace UI { void drawIcon(const string&in, int); } }
namespace UI { void drawIconCentered(const string&in, int); } namespace UI {
namespace UI { bool inputText(const string&in, const string&in, string&out); } bool buttonEnd(const string&in);
namespace UI { bool isItemClicked(int); } }
namespace UI { bool isMouseDoubleClicked(int); } namespace UI {
namespace UI { float magicSlider(const string&in, float, float); } bool checkbox(const string&in, bool);
namespace UI { vec3 magicSlider3(const string&in, vec3, float); } }
namespace UI { bool menuItem(const string&in); } namespace UI {
namespace UI { void menuItemDisabled(const string&in); } bool checkboxDisabled(const string&in, bool);
namespace UI { void menuSpace(const string&in, any@, ReciverFunc@); } }
namespace UI { void sameline(); } namespace UI {
namespace UI { void separator(); } void drawFrameBuffer(FrameBuffer, int, int);
namespace UI { void space(); } }
namespace UI { void space(int, int = 10); } namespace UI {
namespace UI { void text(const string&in); } void drawFrameBufferCentered(FrameBuffer, int, int);
namespace UI { void textCenter(const string&in); } }
namespace UI { void textColor(float, float, float, const string&in); } namespace UI {
namespace UI { void textEnd(const string&in); } void drawIcon(const string&in, int);
namespace UI { void title(const string&in); } }
namespace UI { void titleCenter(const string&in); } namespace UI {
namespace UI { void titleCenterY(const string&in, int); } void drawIconCentered(const string&in, int);
namespace UI { void titleEnd(const string&in); } }
namespace UI { bool isKeyDown(key); } namespace UI {
namespace UI { bool isKeyPressed(key); } bool inputText(const string&in, const string&in, string&out);
namespace UI { bool isMouseDraggin(key); } }
namespace UI { bool isPannelActive(); } namespace UI {
namespace UI { float getMouseDragDeltaX(); } bool isItemClicked(int);
namespace UI { float getMouseDragDeltaY(); } }
namespace UI { float getMouseDeltaX(); } namespace UI {
namespace UI { float getMouseDeltaY(); } bool isMouseDoubleClicked(int);
namespace UI { int getAvailableSizeX(); } }
namespace UI { int getAvailableSizeY(); } namespace UI {
namespace UI { void disablePannelPadding(bool); } float magicSlider(const string&in, float, float);
namespace UI { int sliderInt(string&in, int, int, int); } }
namespace UI { float slider(string&in, float, float, float); } namespace UI {
namespace Engine { FrameBuffer createRGBA8FrameBuffer(const string&in, int, int); } vec3 magicSlider3(const string&in, vec3, float);
namespace Engine { FrameBuffer getFrameBuffer(const string&in); } }
namespace Engine { Environment getMainEnvironment(); } namespace UI {
namespace Engine { Environment createEnvironment(); } bool menuItem(const string&in);
namespace UI { void setupAutomaticColumns(int); } }
namespace UI { void setupColumns(int); } namespace UI {
namespace UI { void endColumns(); } void menuItemDisabled(const string&in);
namespace UI { void nextColumn(); } }
namespace Resource { int getResourceCount(ResourceType, const string&in); } namespace UI {
namespace Resource { string getResourceNameById(ResourceType, const string&in, int); } void menuSpace(const string&in, any@, ReciverFunc@);
namespace Resource { string getResourcePathById(ResourceType, const string&in, int); } }
namespace Resource { int getDirCount(ResourceType, const string&in); } namespace UI {
namespace Resource { string getDirPathById(ResourceType, const string&in, int); } void sameline();
namespace Resource { string getDirNameById(ResourceType, const string&in, int); } }
namespace Engine { void print(const string&in); } namespace UI {
namespace UI { void treeNodeLeaf(const string&in, bool); } void separator();
namespace UI { bool treeNode(const string&in, bool, any@, ReciverFunc@); } }
namespace UI { bool componentNode(const string&in, any@, ReciverFunc@); } namespace UI {
namespace UI { bool componentNode_contextMenu(const string&in, any@, ReciverFunc@, ReciverFunc@); } void space();
namespace UI { void contextItemPopup(const string&in, any@, ReciverFunc@); } }
namespace UI { void contextMenuPopup(const string&in, any@, ReciverFunc@); } namespace UI {
namespace UI { void modalPopup(const string&in, ReciverFunc@); } void space(int, int = 10);
namespace UI { void simplePopup(const string&in, ReciverFunc@); } }
namespace UI { void openPopup(const string&in, any@); } namespace UI {
namespace UI { void closePopup(); } void text(const string&in);
namespace UI { void dragDropSource(const string&in, any@, const string&in); } }
namespace UI { void dragDropTarget(const string&in, any@, TransferFunc@); } namespace UI {
void textCenter(const string&in);
}
namespace UI {
void textColor(float, float, float, const string&in);
}
namespace UI {
void textEnd(const string&in);
}
namespace UI {
void title(const string&in);
}
namespace UI {
void titleCenter(const string&in);
}
namespace UI {
void titleCenterY(const string&in, int);
}
namespace UI {
void titleEnd(const string&in);
}
namespace UI {
bool isKeyDown(key);
}
namespace UI {
bool isKeyPressed(key);
}
namespace UI {
bool isMouseDraggin(key);
}
namespace UI {
bool isPannelActive();
}
namespace UI {
float getMouseDragDeltaX();
}
namespace UI {
float getMouseDragDeltaY();
}
namespace UI {
float getMouseDeltaX();
}
namespace UI {
float getMouseDeltaY();
}
namespace UI {
int getAvailableSizeX();
}
namespace UI {
int getAvailableSizeY();
}
namespace UI {
void disablePannelPadding(bool);
}
namespace UI {
int sliderInt(string&in, int, int, int);
}
namespace UI {
float slider(string&in, float, float, float);
}
namespace Engine {
FrameBuffer createRGBA8FrameBuffer(const string&in, int, int);
}
namespace Engine {
FrameBuffer getFrameBuffer(const string&in);
}
namespace Engine {
Environment getMainEnvironment();
}
namespace Engine {
Environment createEnvironment();
}
namespace UI {
void setupAutomaticColumns(int);
}
namespace UI {
void setupColumns(int);
}
namespace UI {
void endColumns();
}
namespace UI {
void nextColumn();
}
namespace Resource {
int getResourceCount(ResourceType, const string&in);
}
namespace Resource {
string getResourceNameById(ResourceType, const string&in, int);
}
namespace Resource {
string getResourcePathById(ResourceType, const string&in, int);
}
namespace Resource {
int getDirCount(ResourceType, const string&in);
}
namespace Resource {
string getDirPathById(ResourceType, const string&in, int);
}
namespace Resource {
string getDirNameById(ResourceType, const string&in, int);
}
namespace Engine {
void print(const string&in);
}
namespace UI {
void treeNodeLeaf(const string&in, bool);
}
namespace UI {
bool treeNode(const string&in, bool, any@, ReciverFunc@);
}
namespace UI {
bool componentNode(const string&in, any@, ReciverFunc@);
}
namespace UI {
bool componentNode_contextMenu(const string&in, any@, ReciverFunc@, ReciverFunc@);
}
namespace UI {
void contextItemPopup(const string&in, any@, ReciverFunc@);
}
namespace UI {
void contextMenuPopup(const string&in, any@, ReciverFunc@);
}
namespace UI {
void modalPopup(const string&in, ReciverFunc@);
}
namespace UI {
void simplePopup(const string&in, ReciverFunc@);
}
namespace UI {
void openPopup(const string&in, any@);
}
namespace UI {
void closePopup();
}
namespace UI {
void dragDropSource(const string&in, any@, const string&in);
}
namespace UI {
void dragDropTarget(const string&in, any@, TransferFunc@);
}