comparison Renderer/Engine/SceneGraphRoot.cc @ 1002:c79651141045

many changes.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Oct 2010 19:00:47 +0900
parents 9a53faae88d8
children 295b3c79fb44
comparison
equal deleted inserted replaced
992:1b018a00cd17 1002:c79651141045
5 #include "xml.h" 5 #include "xml.h"
6 #include "sys.h" 6 #include "sys.h"
7 #include "TextureHash.h" 7 #include "TextureHash.h"
8 #include "texture.h" 8 #include "texture.h"
9 #include "Application.h" 9 #include "Application.h"
10
11 //取りあえず動かす用 本来はA pplication 側で定義した post_func で値の更新するべき
12 #include "../../../task_dandy/dandy.h"
10 13
11 static int cnt = 0; 14 static int cnt = 0;
12 static const int SGLIST_LENGTH = 138; 15 static const int SGLIST_LENGTH = 138;
13 static int sg_src_size = SGLIST_LENGTH ; 16 static int sg_src_size = SGLIST_LENGTH ;
14 static int sg_src_id = -1; 17 static int sg_src_id = -1;
697 } 700 }
698 701
699 702
700 void 703 void
701 SceneGraphRoot::set_game_task(int id, void *property, int size, PostFunction post_func) 704 SceneGraphRoot::set_game_task(int id, void *property, int size, PostFunction post_func)
702 { 705 {
706 game_task = game_task_array->next_task_array(id, game_task);
707
708 game_task->set_inData(0, property, size);
709 game_task->set_outData(0, property, size);
710
711 /*
703 HTask *task = sgroot->tmanager->create_task(id); 712 HTask *task = sgroot->tmanager->create_task(id);
704 task->set_cpu(SPE_ANY); 713 task->set_cpu(SPE_ANY);
705 task->add_inData(property, size); 714 task->set_inData(0, property, size);
706 task->add_outData(property, size); 715 task->set_outData(0, property, size);
707 task->add_param((memaddr)1);
708 task->set_post(post_func, (void*)property, 0); 716 task->set_post(post_func, (void*)property, 0);
709 wait_game_task->wait_for(task); 717 wait_game_task->wait_for(task);
710 task->spawn(); 718 task->spawn();
719 */
711 } 720 }
712 721
713 void 722 void
714 SceneGraphRoot::set_game_task(int id, void *property, void *pad, int size, PostFunction post_func) 723 SceneGraphRoot::set_game_task(int id, void *property, void *pad, int size, PostFunction post_func)
715 { 724 {
725 game_task = game_task_array->next_task_array(id, game_task);
726
727 game_task->set_inData(0, property, size);
728 game_task->set_inData(1, pad, sizeof(Pad));
729 game_task->set_outData(0, property, size);
730
731 /*
716 HTask *task = sgroot->tmanager->create_task(id); 732 HTask *task = sgroot->tmanager->create_task(id);
717 task->set_cpu(SPE_ANY); 733 task->set_cpu(SPE_ANY);
718 task->add_inData(property, size); 734 task->set_inData(0, property, size);
719 task->add_inData(pad, sizeof(Pad)); 735 task->set_inData(0, pad, sizeof(Pad));
720 task->add_outData(property, size); 736 task->set_outData(0, property, size);
721 task->set_post(post_func, (void*)property, 0); 737 task->set_post(post_func, (void*)property, 0);
722 wait_game_task->wait_for(task); 738 wait_game_task->wait_for(task);
723 task->spawn(); 739 task->spawn();
740 */
741 }
742
743 void
744 SceneGraphRoot::task_array_init(int id, int task_num, int param, int inData_num, int outData_num)
745 {
746 game_task_array = tmanager->create_task_array(id, task_num, param, inData_num, outData_num);
747 game_task = 0;
748 }
749
750 void
751 SceneGraphRoot::task_array_finish()
752 {
753 game_task_array->spawn_task_array(game_task->next());
754 game_task_array->set_cpu(SPE_ANY);
755 game_task_array->spawn();
724 } 756 }
725 757
726 void 758 void
727 main_task_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h) 759 main_task_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
728 { 760 {
729 int size = node->property_size; 761 int size = node->property_size;
730 void *e = node->propertyptr; 762 void *e = node->propertyptr;
731 int move = node->move_id; 763 int move = node->move_id;
732 PostFunction post_func = node->post_func; 764 PostFunction post_func = node->post_func;
765 ObjPropertyPtr property = (ObjPropertyPtr)node->propertyptr;
766 property->root = node;
733 767
734 SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_; 768 SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_;
769
735 sgroottmp->set_game_task(move, (void*)e, size, post_func); 770 sgroottmp->set_game_task(move, (void*)e, size, post_func);
736 } 771 }
737 772
738 void 773 void
739 pad_task_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h) 774 pad_task_move(SceneGraphPtr node, void *sgroot_, int screen_w, int screen_h)
740 { 775 {
741 int size = node->property_size; 776 int size = node->property_size;
742 void *e = node->propertyptr; 777 void *e = node->propertyptr;
743 int move = node->move_id; 778 int move = node->move_id;
744 PostFunction post_func = node->post_func; 779 PostFunction post_func = node->post_func;
780 ObjPropertyPtr property = (ObjPropertyPtr)node->propertyptr;
781 property->root = node;
745 782
746 SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_; 783 SceneGraphRoot *sgroottmp = (SceneGraphRoot*)sgroot_;
747 void *pad = (void*)sgroottmp->getController(); 784 void *pad = (void*)sgroottmp->getController();
748 785
749 sgroottmp->set_game_task(move, (void*)e, pad, size, post_func); 786 sgroottmp->set_game_task(move, (void*)e, pad, size, post_func);
750 } 787 }
751 788
752 void 789 void
753 SceneGraphRoot::set_move_task(SceneGraphPtr node, int move, void *property, int size, 790 SceneGraphRoot::set_move_task(SceneGraphPtr node, int move, void *property, int size,
754 PostFunction post_func) 791 PostFunction post_func)
755 { 792 {
756 node->move = main_task_move; 793 node->move = main_task_move;
757 node->post_func = post_func; 794 node->post_func = post_func;
758 node->move_id = move; 795 node->move_id = move;