123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 |
- #include "visual_script_flow_control.h"
- //////////////////////////////////////////
- ////////////////RETURN////////////////////
- //////////////////////////////////////////
- int VisualScriptReturn::get_output_sequence_port_count() const {
- return 0;
- }
- bool VisualScriptReturn::has_input_sequence_port() const{
- return true;
- }
- int VisualScriptReturn::get_input_value_port_count() const{
- return with_value?1:0;
- }
- int VisualScriptReturn::get_output_value_port_count() const{
- return 0;
- }
- String VisualScriptReturn::get_output_sequence_port_text(int p_port) const {
- return String();
- }
- PropertyInfo VisualScriptReturn::get_input_value_port_info(int p_idx) const{
- PropertyInfo pinfo;
- pinfo.name="result";
- pinfo.type=type;
- return pinfo;
- }
- PropertyInfo VisualScriptReturn::get_output_value_port_info(int p_idx) const{
- return PropertyInfo();
- }
- String VisualScriptReturn::get_caption() const {
- return "Return";
- }
- String VisualScriptReturn::get_text() const {
- return get_name();
- }
- void VisualScriptReturn::set_return_type(Variant::Type p_type) {
- if (type==p_type)
- return;
- type=p_type;
- ports_changed_notify();
- }
- Variant::Type VisualScriptReturn::get_return_type() const{
- return type;
- }
- void VisualScriptReturn::set_enable_return_value(bool p_enable) {
- if (with_value==p_enable)
- return;
- with_value=p_enable;
- ports_changed_notify();
- }
- bool VisualScriptReturn::is_return_value_enabled() const {
- return with_value;
- }
- void VisualScriptReturn::_bind_methods() {
- ObjectTypeDB::bind_method(_MD("set_return_type","type"),&VisualScriptReturn::set_return_type);
- ObjectTypeDB::bind_method(_MD("get_return_type"),&VisualScriptReturn::get_return_type);
- ObjectTypeDB::bind_method(_MD("set_enable_return_value","enable"),&VisualScriptReturn::set_enable_return_value);
- ObjectTypeDB::bind_method(_MD("is_return_value_enabled"),&VisualScriptReturn::is_return_value_enabled);
- String argt="Variant";
- for(int i=1;i<Variant::VARIANT_MAX;i++) {
- argt+=","+Variant::get_type_name(Variant::Type(i));
- }
- ADD_PROPERTY(PropertyInfo(Variant::BOOL,"return_value/enabled"),_SCS("set_enable_return_value"),_SCS("is_return_value_enabled"));
- ADD_PROPERTY(PropertyInfo(Variant::INT,"return_value/type",PROPERTY_HINT_ENUM,argt),_SCS("set_return_type"),_SCS("get_return_type"));
- }
- VisualScriptNodeInstance* VisualScriptReturn::instance(VScriptInstance* p_instance) {
- return NULL;
- }
- VisualScriptReturn::VisualScriptReturn() {
- with_value=false;
- type=Variant::NIL;
- }
- template<bool with_value>
- static Ref<VisualScriptNode> create_return_node(const String& p_name) {
- Ref<VisualScriptReturn> node;
- node.instance();
- node->set_enable_return_value(with_value);
- return node;
- }
- //////////////////////////////////////////
- ////////////////CONDITION/////////////////
- //////////////////////////////////////////
- int VisualScriptCondition::get_output_sequence_port_count() const {
- return 2;
- }
- bool VisualScriptCondition::has_input_sequence_port() const{
- return true;
- }
- int VisualScriptCondition::get_input_value_port_count() const{
- return 1;
- }
- int VisualScriptCondition::get_output_value_port_count() const{
- return 0;
- }
- String VisualScriptCondition::get_output_sequence_port_text(int p_port) const {
- if (p_port==0)
- return "true";
- else
- return "false";
- }
- PropertyInfo VisualScriptCondition::get_input_value_port_info(int p_idx) const{
- PropertyInfo pinfo;
- pinfo.name="cond";
- pinfo.type=Variant::BOOL;
- return pinfo;
- }
- PropertyInfo VisualScriptCondition::get_output_value_port_info(int p_idx) const{
- return PropertyInfo();
- }
- String VisualScriptCondition::get_caption() const {
- return "Condition";
- }
- String VisualScriptCondition::get_text() const {
- return "if (cond) is: ";
- }
- void VisualScriptCondition::_bind_methods() {
- }
- VisualScriptNodeInstance* VisualScriptCondition::instance(VScriptInstance* p_instance) {
- return NULL;
- }
- VisualScriptCondition::VisualScriptCondition() {
- }
- //////////////////////////////////////////
- ////////////////WHILE/////////////////
- //////////////////////////////////////////
- int VisualScriptWhile::get_output_sequence_port_count() const {
- return 2;
- }
- bool VisualScriptWhile::has_input_sequence_port() const{
- return true;
- }
- int VisualScriptWhile::get_input_value_port_count() const{
- return 1;
- }
- int VisualScriptWhile::get_output_value_port_count() const{
- return 0;
- }
- String VisualScriptWhile::get_output_sequence_port_text(int p_port) const {
- if (p_port==0)
- return "repeat";
- else
- return "exit";
- }
- PropertyInfo VisualScriptWhile::get_input_value_port_info(int p_idx) const{
- PropertyInfo pinfo;
- pinfo.name="cond";
- pinfo.type=Variant::BOOL;
- return pinfo;
- }
- PropertyInfo VisualScriptWhile::get_output_value_port_info(int p_idx) const{
- return PropertyInfo();
- }
- String VisualScriptWhile::get_caption() const {
- return "While";
- }
- String VisualScriptWhile::get_text() const {
- return "while (cond): ";
- }
- void VisualScriptWhile::_bind_methods() {
- }
- VisualScriptNodeInstance* VisualScriptWhile::instance(VScriptInstance* p_instance) {
- return NULL;
- }
- VisualScriptWhile::VisualScriptWhile() {
- }
- //////////////////////////////////////////
- ////////////////ITERATOR/////////////////
- //////////////////////////////////////////
- int VisualScriptIterator::get_output_sequence_port_count() const {
- return 2;
- }
- bool VisualScriptIterator::has_input_sequence_port() const{
- return true;
- }
- int VisualScriptIterator::get_input_value_port_count() const{
- return 1;
- }
- int VisualScriptIterator::get_output_value_port_count() const{
- return 1;
- }
- String VisualScriptIterator::get_output_sequence_port_text(int p_port) const {
- if (p_port==0)
- return "each";
- else
- return "exit";
- }
- PropertyInfo VisualScriptIterator::get_input_value_port_info(int p_idx) const{
- PropertyInfo pinfo;
- pinfo.name="input";
- pinfo.type=Variant::NIL;
- return pinfo;
- }
- PropertyInfo VisualScriptIterator::get_output_value_port_info(int p_idx) const{
- PropertyInfo pinfo;
- pinfo.name="elem";
- pinfo.type=Variant::NIL;
- return pinfo;
- }
- String VisualScriptIterator::get_caption() const {
- return "Iterator";
- }
- String VisualScriptIterator::get_text() const {
- return "for (elem) in (input): ";
- }
- void VisualScriptIterator::_bind_methods() {
- }
- VisualScriptNodeInstance* VisualScriptIterator::instance(VScriptInstance* p_instance) {
- return NULL;
- }
- VisualScriptIterator::VisualScriptIterator() {
- }
- //////////////////////////////////////////
- ////////////////SEQUENCE/////////////////
- //////////////////////////////////////////
- int VisualScriptSequence::get_output_sequence_port_count() const {
- return steps;
- }
- bool VisualScriptSequence::has_input_sequence_port() const{
- return true;
- }
- int VisualScriptSequence::get_input_value_port_count() const{
- return 0;
- }
- int VisualScriptSequence::get_output_value_port_count() const{
- return 1;
- }
- String VisualScriptSequence::get_output_sequence_port_text(int p_port) const {
- return itos(p_port+1);
- }
- PropertyInfo VisualScriptSequence::get_input_value_port_info(int p_idx) const{
- return PropertyInfo();
- }
- PropertyInfo VisualScriptSequence::get_output_value_port_info(int p_idx) const{
- return PropertyInfo(Variant::INT,"current");
- }
- String VisualScriptSequence::get_caption() const {
- return "Sequence";
- }
- String VisualScriptSequence::get_text() const {
- return "in order: ";
- }
- void VisualScriptSequence::set_steps(int p_steps) {
- ERR_FAIL_COND(p_steps<1);
- if (steps==p_steps)
- return;
- steps=p_steps;
- ports_changed_notify();
- }
- int VisualScriptSequence::get_steps() const {
- return steps;
- }
- void VisualScriptSequence::_bind_methods() {
- ObjectTypeDB::bind_method(_MD("set_steps","steps"),&VisualScriptSequence::set_steps);
- ObjectTypeDB::bind_method(_MD("get_steps"),&VisualScriptSequence::get_steps);
- ADD_PROPERTY(PropertyInfo(Variant::INT,"steps",PROPERTY_HINT_RANGE,"1,64,1"),_SCS("set_steps"),_SCS("get_steps"));
- }
- VisualScriptNodeInstance* VisualScriptSequence::instance(VScriptInstance* p_instance) {
- return NULL;
- }
- VisualScriptSequence::VisualScriptSequence() {
- steps=1;
- }
- void register_visual_script_flow_control_nodes() {
- VisualScriptLanguage::singleton->add_register_func("flow_control/return",create_return_node<false>);
- VisualScriptLanguage::singleton->add_register_func("flow_control/return_with_value",create_return_node<true>);
- VisualScriptLanguage::singleton->add_register_func("flow_control/condition",create_node_generic<VisualScriptCondition>);
- VisualScriptLanguage::singleton->add_register_func("flow_control/while",create_node_generic<VisualScriptWhile>);
- VisualScriptLanguage::singleton->add_register_func("flow_control/iterator",create_node_generic<VisualScriptIterator>);
- VisualScriptLanguage::singleton->add_register_func("flow_control/sequence",create_node_generic<VisualScriptSequence>);
- }
|