Mercurial > hg > Members > kono > Cerium
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; |