visual_script_builtin_funcs.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642
  1. #include "visual_script_builtin_funcs.h"
  2. const char* VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX]={
  3. "sin",
  4. "cos",
  5. "tan",
  6. "sinh",
  7. "cosh",
  8. "tanh",
  9. "asin",
  10. "acos",
  11. "atan",
  12. "atan2",
  13. "sqrt",
  14. "fmod",
  15. "fposmod",
  16. "floor",
  17. "ceil",
  18. "round",
  19. "abs",
  20. "sign",
  21. "pow",
  22. "log",
  23. "exp",
  24. "is_nan",
  25. "is_inf",
  26. "ease",
  27. "decimals",
  28. "stepify",
  29. "lerp",
  30. "dectime",
  31. "randomize",
  32. "randi",
  33. "randf",
  34. "rand_range",
  35. "seed",
  36. "rand_seed",
  37. "deg2rad",
  38. "rad2deg",
  39. "linear2db",
  40. "db2linear",
  41. "max",
  42. "min",
  43. "clamp",
  44. "nearest_po2",
  45. "weakref",
  46. "funcref",
  47. "convert",
  48. "typeof",
  49. "type_exists",
  50. "str",
  51. "print",
  52. "printerr",
  53. "printraw",
  54. "var2str",
  55. "str2var",
  56. "var2bytes",
  57. "bytes2var",
  58. };
  59. int VisualScriptBuiltinFunc::get_output_sequence_port_count() const {
  60. return 1;
  61. }
  62. bool VisualScriptBuiltinFunc::has_input_sequence_port() const{
  63. return true;
  64. }
  65. int VisualScriptBuiltinFunc::get_input_value_port_count() const{
  66. switch(func) {
  67. case MATH_RANDOMIZE:
  68. case MATH_RAND:
  69. case MATH_RANDF:
  70. return 0;
  71. case MATH_SIN:
  72. case MATH_COS:
  73. case MATH_TAN:
  74. case MATH_SINH:
  75. case MATH_COSH:
  76. case MATH_TANH:
  77. case MATH_ASIN:
  78. case MATH_ACOS:
  79. case MATH_ATAN:
  80. case MATH_SQRT:
  81. case MATH_FLOOR:
  82. case MATH_CEIL:
  83. case MATH_ROUND:
  84. case MATH_ABS:
  85. case MATH_SIGN:
  86. case MATH_LOG:
  87. case MATH_EXP:
  88. case MATH_ISNAN:
  89. case MATH_ISINF:
  90. case MATH_DECIMALS:
  91. case MATH_SEED:
  92. case MATH_RANDSEED:
  93. case MATH_DEG2RAD:
  94. case MATH_RAD2DEG:
  95. case MATH_LINEAR2DB:
  96. case MATH_DB2LINEAR:
  97. case LOGIC_NEAREST_PO2:
  98. case OBJ_WEAKREF:
  99. case TYPE_OF:
  100. case TEXT_STR:
  101. case TEXT_PRINT:
  102. case TEXT_PRINTERR:
  103. case TEXT_PRINTRAW:
  104. case VAR_TO_STR:
  105. case STR_TO_VAR:
  106. case VAR_TO_BYTES:
  107. case BYTES_TO_VAR:
  108. case TYPE_EXISTS:
  109. return 1;
  110. case MATH_ATAN2:
  111. case MATH_FMOD:
  112. case MATH_FPOSMOD:
  113. case MATH_POW:
  114. case MATH_EASE:
  115. case MATH_STEPIFY:
  116. case MATH_RANDOM:
  117. case LOGIC_MAX:
  118. case LOGIC_MIN:
  119. case FUNC_FUNCREF:
  120. case TYPE_CONVERT:
  121. return 2;
  122. case MATH_LERP:
  123. case MATH_DECTIME:
  124. case LOGIC_CLAMP:
  125. return 3;
  126. case FUNC_MAX:{}
  127. }
  128. return 0;
  129. }
  130. int VisualScriptBuiltinFunc::get_output_value_port_count() const{
  131. switch(func) {
  132. case MATH_RANDOMIZE:
  133. case TEXT_PRINT:
  134. case TEXT_PRINTERR:
  135. case TEXT_PRINTRAW:
  136. case MATH_SEED:
  137. return 0;
  138. case MATH_RANDSEED:
  139. return 2;
  140. default:
  141. return 1;
  142. }
  143. return 1;
  144. }
  145. String VisualScriptBuiltinFunc::get_output_sequence_port_text(int p_port) const {
  146. return String();
  147. }
  148. PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const{
  149. switch(func) {
  150. case MATH_SIN:
  151. case MATH_COS:
  152. case MATH_TAN:
  153. case MATH_SINH:
  154. case MATH_COSH:
  155. case MATH_TANH:
  156. case MATH_ASIN:
  157. case MATH_ACOS:
  158. case MATH_ATAN:
  159. case MATH_ATAN2:
  160. case MATH_SQRT: {
  161. return PropertyInfo(Variant::REAL,"num");
  162. } break;
  163. case MATH_FMOD:
  164. case MATH_FPOSMOD: {
  165. if (p_idx==0)
  166. return PropertyInfo(Variant::REAL,"x");
  167. else
  168. return PropertyInfo(Variant::REAL,"y");
  169. } break;
  170. case MATH_FLOOR:
  171. case MATH_CEIL:
  172. case MATH_ROUND:
  173. case MATH_ABS:
  174. case MATH_SIGN: {
  175. return PropertyInfo(Variant::REAL,"num");
  176. } break;
  177. case MATH_POW: {
  178. if (p_idx==0)
  179. return PropertyInfo(Variant::REAL,"x");
  180. else
  181. return PropertyInfo(Variant::REAL,"y");
  182. } break;
  183. case MATH_LOG:
  184. case MATH_EXP:
  185. case MATH_ISNAN:
  186. case MATH_ISINF: {
  187. return PropertyInfo(Variant::REAL,"num");
  188. } break;
  189. case MATH_EASE: {
  190. if (p_idx==0)
  191. return PropertyInfo(Variant::REAL,"s");
  192. else
  193. return PropertyInfo(Variant::REAL,"curve");
  194. } break;
  195. case MATH_DECIMALS: {
  196. return PropertyInfo(Variant::REAL,"step");
  197. } break;
  198. case MATH_STEPIFY: {
  199. if (p_idx==0)
  200. return PropertyInfo(Variant::REAL,"s");
  201. else
  202. return PropertyInfo(Variant::REAL,"steps");
  203. } break;
  204. case MATH_LERP: {
  205. if (p_idx==0)
  206. return PropertyInfo(Variant::REAL,"from");
  207. else if (p_idx==1)
  208. return PropertyInfo(Variant::REAL,"to");
  209. else
  210. return PropertyInfo(Variant::REAL,"weight");
  211. } break;
  212. case MATH_DECTIME: {
  213. if (p_idx==0)
  214. return PropertyInfo(Variant::REAL,"value");
  215. else if (p_idx==1)
  216. return PropertyInfo(Variant::REAL,"amount");
  217. else
  218. return PropertyInfo(Variant::REAL,"step");
  219. } break;
  220. case MATH_RANDOMIZE: {
  221. } break;
  222. case MATH_RAND: {
  223. } break;
  224. case MATH_RANDF: {
  225. } break;
  226. case MATH_RANDOM: {
  227. if (p_idx==0)
  228. return PropertyInfo(Variant::REAL,"from");
  229. else
  230. return PropertyInfo(Variant::REAL,"to");
  231. } break;
  232. case MATH_SEED: {
  233. return PropertyInfo(Variant::INT,"seed");
  234. } break;
  235. case MATH_RANDSEED: {
  236. return PropertyInfo(Variant::INT,"seed");
  237. } break;
  238. case MATH_DEG2RAD: {
  239. return PropertyInfo(Variant::REAL,"deg");
  240. } break;
  241. case MATH_RAD2DEG: {
  242. return PropertyInfo(Variant::REAL,"rad");
  243. } break;
  244. case MATH_LINEAR2DB: {
  245. return PropertyInfo(Variant::REAL,"nrg");
  246. } break;
  247. case MATH_DB2LINEAR: {
  248. return PropertyInfo(Variant::REAL,"db");
  249. } break;
  250. case LOGIC_MAX: {
  251. if (p_idx==0)
  252. return PropertyInfo(Variant::REAL,"a");
  253. else
  254. return PropertyInfo(Variant::REAL,"b");
  255. } break;
  256. case LOGIC_MIN: {
  257. if (p_idx==0)
  258. return PropertyInfo(Variant::REAL,"a");
  259. else
  260. return PropertyInfo(Variant::REAL,"b");
  261. } break;
  262. case LOGIC_CLAMP: {
  263. if (p_idx==0)
  264. return PropertyInfo(Variant::REAL,"a");
  265. else if (p_idx==0)
  266. return PropertyInfo(Variant::REAL,"min");
  267. else
  268. return PropertyInfo(Variant::REAL,"max");
  269. } break;
  270. case LOGIC_NEAREST_PO2: {
  271. return PropertyInfo(Variant::INT,"num");
  272. } break;
  273. case OBJ_WEAKREF: {
  274. return PropertyInfo(Variant::OBJECT,"source");
  275. } break;
  276. case FUNC_FUNCREF: {
  277. if (p_idx==0)
  278. return PropertyInfo(Variant::OBJECT,"instance");
  279. else
  280. return PropertyInfo(Variant::STRING,"funcname");
  281. } break;
  282. case TYPE_CONVERT: {
  283. if (p_idx==0)
  284. return PropertyInfo(Variant::NIL,"what");
  285. else
  286. return PropertyInfo(Variant::STRING,"type");
  287. } break;
  288. case TYPE_OF: {
  289. return PropertyInfo(Variant::NIL,"what");
  290. } break;
  291. case TYPE_EXISTS: {
  292. return PropertyInfo(Variant::STRING,"type");
  293. } break;
  294. case TEXT_STR: {
  295. return PropertyInfo(Variant::NIL,"value");
  296. } break;
  297. case TEXT_PRINT: {
  298. return PropertyInfo(Variant::NIL,"value");
  299. } break;
  300. case TEXT_PRINTERR: {
  301. return PropertyInfo(Variant::NIL,"value");
  302. } break;
  303. case TEXT_PRINTRAW: {
  304. return PropertyInfo(Variant::NIL,"value");
  305. } break;
  306. case VAR_TO_STR: {
  307. return PropertyInfo(Variant::NIL,"var");
  308. } break;
  309. case STR_TO_VAR: {
  310. return PropertyInfo(Variant::STRING,"string");
  311. } break;
  312. case VAR_TO_BYTES: {
  313. return PropertyInfo(Variant::NIL,"var");
  314. } break;
  315. case BYTES_TO_VAR: {
  316. return PropertyInfo(Variant::RAW_ARRAY,"bytes");
  317. } break;
  318. case FUNC_MAX:{}
  319. }
  320. return PropertyInfo();
  321. }
  322. PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) const{
  323. Variant::Type t=Variant::NIL;
  324. switch(func) {
  325. case MATH_SIN:
  326. case MATH_COS:
  327. case MATH_TAN:
  328. case MATH_SINH:
  329. case MATH_COSH:
  330. case MATH_TANH:
  331. case MATH_ASIN:
  332. case MATH_ACOS:
  333. case MATH_ATAN:
  334. case MATH_ATAN2:
  335. case MATH_SQRT:
  336. case MATH_FMOD:
  337. case MATH_FPOSMOD:
  338. case MATH_FLOOR:
  339. case MATH_CEIL: {
  340. t=Variant::REAL;
  341. } break;
  342. case MATH_ROUND: {
  343. t=Variant::INT;
  344. } break;
  345. case MATH_ABS: {
  346. t=Variant::NIL;
  347. } break;
  348. case MATH_SIGN: {
  349. t=Variant::NIL;
  350. } break;
  351. case MATH_POW:
  352. case MATH_LOG:
  353. case MATH_EXP: {
  354. t=Variant::REAL;
  355. } break;
  356. case MATH_ISNAN:
  357. case MATH_ISINF: {
  358. t=Variant::BOOL;
  359. } break;
  360. case MATH_EASE: {
  361. t=Variant::REAL;
  362. } break;
  363. case MATH_DECIMALS: {
  364. t=Variant::INT;
  365. } break;
  366. case MATH_STEPIFY:
  367. case MATH_LERP:
  368. case MATH_DECTIME: {
  369. t=Variant::REAL;
  370. } break;
  371. case MATH_RANDOMIZE: {
  372. } break;
  373. case MATH_RAND: {
  374. t=Variant::INT;
  375. } break;
  376. case MATH_RANDF:
  377. case MATH_RANDOM: {
  378. t=Variant::REAL;
  379. } break;
  380. case MATH_SEED: {
  381. } break;
  382. case MATH_RANDSEED: {
  383. if (p_idx==0)
  384. return PropertyInfo(Variant::INT,"rnd");
  385. else
  386. return PropertyInfo(Variant::INT,"seed");
  387. } break;
  388. case MATH_DEG2RAD:
  389. case MATH_RAD2DEG:
  390. case MATH_LINEAR2DB:
  391. case MATH_DB2LINEAR: {
  392. t=Variant::REAL;
  393. } break;
  394. case LOGIC_MAX:
  395. case LOGIC_MIN:
  396. case LOGIC_CLAMP: {
  397. } break;
  398. case LOGIC_NEAREST_PO2: {
  399. t=Variant::NIL;
  400. } break;
  401. case OBJ_WEAKREF: {
  402. t=Variant::OBJECT;
  403. } break;
  404. case FUNC_FUNCREF: {
  405. t=Variant::OBJECT;
  406. } break;
  407. case TYPE_CONVERT: {
  408. } break;
  409. case TYPE_OF: {
  410. t=Variant::INT;
  411. } break;
  412. case TYPE_EXISTS: {
  413. t=Variant::BOOL;
  414. } break;
  415. case TEXT_STR: {
  416. t=Variant::STRING;
  417. } break;
  418. case TEXT_PRINT: {
  419. } break;
  420. case TEXT_PRINTERR: {
  421. } break;
  422. case TEXT_PRINTRAW: {
  423. } break;
  424. case VAR_TO_STR: {
  425. t=Variant::STRING;
  426. } break;
  427. case STR_TO_VAR: {
  428. } break;
  429. case VAR_TO_BYTES: {
  430. t=Variant::RAW_ARRAY;
  431. } break;
  432. case BYTES_TO_VAR: {
  433. } break;
  434. case FUNC_MAX:{}
  435. }
  436. return PropertyInfo(t,"");
  437. }
  438. String VisualScriptBuiltinFunc::get_caption() const {
  439. return "BuiltinFunc";
  440. }
  441. String VisualScriptBuiltinFunc::get_text() const {
  442. return func_name[func];
  443. }
  444. void VisualScriptBuiltinFunc::set_func(BuiltinFunc p_which) {
  445. ERR_FAIL_INDEX(p_which,FUNC_MAX);
  446. func=p_which;
  447. _change_notify();
  448. ports_changed_notify();
  449. }
  450. VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::get_func() {
  451. return func;
  452. }
  453. VisualScriptNodeInstance* VisualScriptBuiltinFunc::instance(VScriptInstance* p_instance) {
  454. return NULL;
  455. }
  456. void VisualScriptBuiltinFunc::_bind_methods() {
  457. ObjectTypeDB::bind_method(_MD("set_func","which"),&VisualScriptBuiltinFunc::set_func);
  458. ObjectTypeDB::bind_method(_MD("get_func"),&VisualScriptBuiltinFunc::get_func);
  459. String cc;
  460. for(int i=0;i<FUNC_MAX;i++) {
  461. if (i>0)
  462. cc+=",";
  463. cc+=func_name[i];
  464. }
  465. ADD_PROPERTY(PropertyInfo(Variant::INT,"function",PROPERTY_HINT_ENUM,cc),_SCS("set_func"),_SCS("get_func"));
  466. }
  467. VisualScriptBuiltinFunc::VisualScriptBuiltinFunc() {
  468. func=MATH_SIN;
  469. }
  470. template<VisualScriptBuiltinFunc::BuiltinFunc func>
  471. static Ref<VisualScriptNode> create_builtin_func_node(const String& p_name) {
  472. Ref<VisualScriptBuiltinFunc> node;
  473. node.instance();
  474. node->set_func(func);
  475. return node;
  476. }
  477. void register_visual_script_builtin_func_node() {
  478. VisualScriptLanguage::singleton->add_register_func("functions/builtin/sin",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SIN>);
  479. VisualScriptLanguage::singleton->add_register_func("functions/builtin/cos",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_COS>);
  480. VisualScriptLanguage::singleton->add_register_func("functions/builtin/tan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_TAN>);
  481. VisualScriptLanguage::singleton->add_register_func("functions/builtin/sinh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SINH>);
  482. VisualScriptLanguage::singleton->add_register_func("functions/builtin/cosh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_COSH>);
  483. VisualScriptLanguage::singleton->add_register_func("functions/builtin/tanh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_TANH>);
  484. VisualScriptLanguage::singleton->add_register_func("functions/builtin/asin",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ASIN>);
  485. VisualScriptLanguage::singleton->add_register_func("functions/builtin/acos",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ACOS>);
  486. VisualScriptLanguage::singleton->add_register_func("functions/builtin/atan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ATAN>);
  487. VisualScriptLanguage::singleton->add_register_func("functions/builtin/atan2",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ATAN2>);
  488. VisualScriptLanguage::singleton->add_register_func("functions/builtin/sqrt",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SQRT>);
  489. VisualScriptLanguage::singleton->add_register_func("functions/builtin/fmod",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FMOD>);
  490. VisualScriptLanguage::singleton->add_register_func("functions/builtin/fposmod",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FPOSMOD>);
  491. VisualScriptLanguage::singleton->add_register_func("functions/builtin/floor",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FLOOR>);
  492. VisualScriptLanguage::singleton->add_register_func("functions/builtin/ceil",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_CEIL>);
  493. VisualScriptLanguage::singleton->add_register_func("functions/builtin/round",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ROUND>);
  494. VisualScriptLanguage::singleton->add_register_func("functions/builtin/abs",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ABS>);
  495. VisualScriptLanguage::singleton->add_register_func("functions/builtin/sign",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SIGN>);
  496. VisualScriptLanguage::singleton->add_register_func("functions/builtin/pow",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_POW>);
  497. VisualScriptLanguage::singleton->add_register_func("functions/builtin/log",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LOG>);
  498. VisualScriptLanguage::singleton->add_register_func("functions/builtin/exp",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_EXP>);
  499. VisualScriptLanguage::singleton->add_register_func("functions/builtin/isnan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ISNAN>);
  500. VisualScriptLanguage::singleton->add_register_func("functions/builtin/isinf",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ISINF>);
  501. VisualScriptLanguage::singleton->add_register_func("functions/builtin/ease",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_EASE>);
  502. VisualScriptLanguage::singleton->add_register_func("functions/builtin/decimals",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECIMALS>);
  503. VisualScriptLanguage::singleton->add_register_func("functions/builtin/stepify",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_STEPIFY>);
  504. VisualScriptLanguage::singleton->add_register_func("functions/builtin/lerp",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LERP>);
  505. VisualScriptLanguage::singleton->add_register_func("functions/builtin/dectime",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECTIME>);
  506. VisualScriptLanguage::singleton->add_register_func("functions/builtin/randomize",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOMIZE>);
  507. VisualScriptLanguage::singleton->add_register_func("functions/builtin/rand",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAND>);
  508. VisualScriptLanguage::singleton->add_register_func("functions/builtin/randf",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDF>);
  509. VisualScriptLanguage::singleton->add_register_func("functions/builtin/random",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOM>);
  510. VisualScriptLanguage::singleton->add_register_func("functions/builtin/seed",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SEED>);
  511. VisualScriptLanguage::singleton->add_register_func("functions/builtin/randseed",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDSEED>);
  512. VisualScriptLanguage::singleton->add_register_func("functions/builtin/deg2rad",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DEG2RAD>);
  513. VisualScriptLanguage::singleton->add_register_func("functions/builtin/rad2deg",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAD2DEG>);
  514. VisualScriptLanguage::singleton->add_register_func("functions/builtin/linear2db",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LINEAR2DB>);
  515. VisualScriptLanguage::singleton->add_register_func("functions/builtin/db2linear",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DB2LINEAR>);
  516. VisualScriptLanguage::singleton->add_register_func("functions/builtin/max",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MAX>);
  517. VisualScriptLanguage::singleton->add_register_func("functions/builtin/min",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MIN>);
  518. VisualScriptLanguage::singleton->add_register_func("functions/builtin/clamp",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_CLAMP>);
  519. VisualScriptLanguage::singleton->add_register_func("functions/builtin/nearest_po2",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_NEAREST_PO2>);
  520. VisualScriptLanguage::singleton->add_register_func("functions/builtin/weakref",create_builtin_func_node<VisualScriptBuiltinFunc::OBJ_WEAKREF>);
  521. VisualScriptLanguage::singleton->add_register_func("functions/builtin/funcref",create_builtin_func_node<VisualScriptBuiltinFunc::FUNC_FUNCREF>);
  522. VisualScriptLanguage::singleton->add_register_func("functions/builtin/convert",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_CONVERT>);
  523. VisualScriptLanguage::singleton->add_register_func("functions/builtin/typeof",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_OF>);
  524. VisualScriptLanguage::singleton->add_register_func("functions/builtin/type_exists",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_EXISTS>);
  525. VisualScriptLanguage::singleton->add_register_func("functions/builtin/str",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_STR>);
  526. VisualScriptLanguage::singleton->add_register_func("functions/builtin/print",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINT>);
  527. VisualScriptLanguage::singleton->add_register_func("functions/builtin/printerr",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINTERR>);
  528. VisualScriptLanguage::singleton->add_register_func("functions/builtin/printraw",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINTRAW>);
  529. VisualScriptLanguage::singleton->add_register_func("functions/builtin/var2str",create_builtin_func_node<VisualScriptBuiltinFunc::VAR_TO_STR>);
  530. VisualScriptLanguage::singleton->add_register_func("functions/builtin/str2var",create_builtin_func_node<VisualScriptBuiltinFunc::STR_TO_VAR>);
  531. VisualScriptLanguage::singleton->add_register_func("functions/builtin/var2bytes",create_builtin_func_node<VisualScriptBuiltinFunc::VAR_TO_BYTES>);
  532. VisualScriptLanguage::singleton->add_register_func("functions/builtin/bytes2var",create_builtin_func_node<VisualScriptBuiltinFunc::BYTES_TO_VAR>);
  533. }