My Project
ObjScriptPool.h
1 #pragma once
2 #include <string>
3 #include <list>
4 #include "util/ParaMemPool.h"
5 
6 namespace ParaEngine
7 {
8  using namespace std;
9 
10  template <class OBJ_TYPE>
11  class Object_Script {
12  public:
13  int m_objType;
14  string m_srcFile;
15  string m_code;
16  OBJ_TYPE* m_pObj;
17  bool m_bDelete;
19  {
20  m_objType=0;m_pObj=NULL;m_bDelete=false;
21  }
22  };
23 
24  template <class OBJ_TYPE>
26  {
27  public:
29  typedef FixedSizedAllocator<OBJ_SCRIPT> DL_Allocator_OBJ_SCRIPT;
30  typedef std::list<OBJ_SCRIPT, DL_Allocator_OBJ_SCRIPT> OBJ_SCRIPT_List_Type;
31 
32  enum GUI_SCRIPT_TYPE{
33  NONE=0,
34  ONLOAD,ONMOUSEDOWN,ONMOUSEUP,ONMOUSEWHEEL,ONMOUSEHOVER,ONMOUSEMOVE,
35  ONMOUSEENTER,ONMOUSELEAVE,ONCLICK,ONDOUBLECLICK,ONDRAGBEGIN,ONDRAGMOVE,
36  ONDRAGEND,ONCHAR,ONKEYDOWN,ONKEYUP,ONCHANGE,ONSTRING,ONFOCUSIN,ONFOCUSOUT,
37  ONSELECT,
38  ONEVENT
39  };
40 
41  void init(){m_pScripts.clear(); };
42  ObjectScriptPool(){init();};
43  ~ObjectScriptPool(){};
44  void AddScript(const string& srcFile,int etype){
45  m_pScripts.push_back(OBJ_SCRIPT());
46  OBJ_SCRIPT& script = m_pScripts.back();
47  script.m_code="";
48  script.m_objType=etype;
49  script.m_pObj=NULL;
50  script.m_srcFile=srcFile;
51  };
52 
53  void AddScript(const string& srcFile, int etype, const string& code){
54  m_pScripts.push_back(OBJ_SCRIPT());
55  OBJ_SCRIPT& script = m_pScripts.back();
56  script.m_code=code;
57  script.m_objType=etype;
58  script.m_pObj=NULL;
59  script.m_srcFile=srcFile;
60  };
61 
62  void AddScript(const string& srcFile, int etype, const string& code, OBJ_TYPE* obj){
63  m_pScripts.push_back(OBJ_SCRIPT());
64  OBJ_SCRIPT& script = m_pScripts.back();
65  script.m_code=code;
66  script.m_objType=etype;
67  script.m_pObj=obj;
68  script.m_srcFile=srcFile;
69  };
70 
71  void AddScript(OBJ_SCRIPT* script){
72  AddScript(script->m_srcFile,script->m_objType,script->m_code,script->m_pObj);
73  };
74 
75  OBJ_SCRIPT* GetScript(int etype){
76  for (m_iter=m_pScripts.begin();m_iter!=m_pScripts.end();m_iter++) {
77  if ((*m_iter).m_objType==etype) {
78  return &(*m_iter);
79  }
80  }
81  return NULL;
82  };
83 
84  OBJ_SCRIPT* GetScript(int etype, OBJ_TYPE* obj){
85  for (m_iter=m_pScripts.begin();m_iter!=m_pScripts.end();m_iter++) {
86  if ((*m_iter).m_objType==etype && (*m_iter).m_pObj == obj)
87  {
88  return &(*m_iter);
89  }
90  }
91  return NULL;
92  };
93 
94  OBJ_SCRIPT* GetNextScript(int etype){
95  for (;m_iter!=m_pScripts.end();m_iter++) {
96  if ((*m_iter).m_objType==etype) {
97  return &(*m_iter);
98  }
99  }
100  return NULL;
101  };
102 
103  OBJ_SCRIPT* GetScript(OBJ_TYPE* pObj){
104  for (m_iter=m_pScripts.begin();m_iter!=m_pScripts.end();m_iter++) {
105  if ((*m_iter).m_pObj==pObj) {
106  return &(*m_iter);
107  }
108  }
109  return NULL;
110  };
111 
112  OBJ_SCRIPT* GetNextScript(OBJ_TYPE* pObj){
113  for (;m_iter!=m_pScripts.end();m_iter++) {
114  if ((*m_iter).m_pObj==pObj) {
115  return &(*m_iter);
116  }
117  }
118  return NULL;
119  };
120 
121  OBJ_SCRIPT& operator[](DWORD index){
122  if (index<0||index>=m_pScripts.size()) {
123  return m_pScripts.front();
124  }
125  int a=0;
126  typename OBJ_SCRIPT_List_Type::iterator iter;
127  for (iter=m_pScripts.begin();(iter!=m_pScripts.end())&&(a!=index);a++,iter++);
128  return (*iter);
129  };
130 
131  void DeleteScript(OBJ_TYPE* obj){
132  typename OBJ_SCRIPT_List_Type::iterator iter;
133  for (iter=m_pScripts.begin();iter!=m_pScripts.end();) {
134  if ((*iter).m_pObj==obj) {
135  iter=m_pScripts.erase(iter);
136  }else iter++;
137  }
138  };
139 
140  void DeleteScript(int etype){
141  typename OBJ_SCRIPT_List_Type::iterator iter;
142  for (iter=m_pScripts.begin();iter!=m_pScripts.end();) {
143  if ((*iter).m_objType==etype) {
144  iter=m_pScripts.erase(iter);
145  }else iter++;
146  }
147 
148  };
149 
150  void DeleteMarkedScript(){
151  typename OBJ_SCRIPT_List_Type::iterator iter;
152  for (iter=m_pScripts.begin();iter!=m_pScripts.end();) {
153  if ((*iter).m_bDelete) {
154  iter=m_pScripts.erase(iter);
155  }else iter++;
156  }
157  };
158 
159  void ActivateScript(const string& code){};
160  size_t size(){
161  return m_pScripts.size();
162  };
163  void ClearAll(){m_pScripts.clear();};
164 
165  private:
166  OBJ_SCRIPT_List_Type m_pScripts;
167  typename OBJ_SCRIPT_List_Type::iterator m_iter;
168  };
169 }
Definition: ObjScriptPool.h:25
different physics engine has different winding order.
Definition: EventBinding.h:32
Definition: inftrees.h:24
Definition: ObjScriptPool.h:11