Skip to content

Commit ad64cda

Browse files
committed
调整debugAOI()输出的信息。
1 parent a979cce commit ad64cda

File tree

5 files changed

+65
-6
lines changed

5 files changed

+65
-6
lines changed

kbe/src/lib/pyscript/script.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,10 @@ class Script
153153
static void acquireLock();
154154
static void releaseLock();
155155

156+
INLINE ScriptStdOutErr* pyStdouterr()const;
156157
INLINE ScriptStdOutErrHook* pyStdouterrHook()const;
158+
159+
INLINE void pyPrint(const std::string& str);
157160
protected:
158161
PyObject* module_;
159162
PyObject* extraModule_; // 扩展脚本模块

kbe/src/lib/pyscript/script.ipp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ INLINE ScriptStdOutErrHook* Script::pyStdouterrHook()const
4242
return pyStdouterrHook_;
4343
}
4444

45+
INLINE ScriptStdOutErr* Script::pyStdouterr()const
46+
{
47+
return pyStdouterr_;
48+
}
49+
50+
INLINE void Script::pyPrint(const std::string& str)
51+
{
52+
pyStdouterr_->pyPrint(str);
53+
}
54+
4555
}
4656
}
4757

kbe/src/lib/pyscript/scriptstdouterr.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,16 @@ bool ScriptStdOutErr::install(void)
108108
return false;
109109
}
110110

111+
PyObject * m = PyImport_ImportModule("builtins");
112+
if (!m)
113+
{
114+
ERROR_MSG("ScriptStdOut: Failed to import builtins module\n");
115+
return false;
116+
}
117+
118+
pyPrint_ = PyObject_GetAttrString(m, "print");
119+
Py_DECREF(m);
120+
111121
prevStderr_ = PyObject_GetAttrString(sysModule_, "stderr");
112122
prevStdout_ = PyObject_GetAttrString(sysModule_, "stdout");
113123

@@ -134,12 +144,32 @@ bool ScriptStdOutErr::uninstall(void)
134144
prevStdout_ = NULL;
135145
}
136146

147+
if (pyPrint_)
148+
{
149+
Py_DECREF(pyPrint_);
150+
pyPrint_ = NULL;
151+
}
152+
137153
Py_DECREF(sysModule_);
138154
sysModule_ = NULL;
139155
isInstall_ = false;
140156
return true;
141157
}
142158

159+
//-------------------------------------------------------------------------------------
160+
void ScriptStdOutErr::pyPrint(const std::string& str)
161+
{
162+
PyObject* pyRet = PyObject_CallFunction(pyPrint_,
163+
const_cast<char*>("(s)"), str.c_str());
164+
165+
SCRIPT_ERROR_CHECK();
166+
167+
if(pyRet)
168+
{
169+
S_RELEASE(pyRet);
170+
}
171+
}
172+
143173
//-------------------------------------------------------------------------------------
144174

145175
}

kbe/src/lib/pyscript/scriptstdouterr.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,14 @@ class ScriptStdOutErr: public ScriptObject
5050
virtual void onPrint(const wchar_t* msg, uint32 msglen);
5151

5252
INLINE std::wstring& buffer();
53+
54+
void pyPrint(const std::string& str);
5355
protected:
5456
bool softspace_;
5557
PyObject* sysModule_;
5658
PyObject* prevStderr_;
5759
PyObject* prevStdout_;
60+
PyObject* pyPrint_;
5861
bool isInstall_;
5962
std::wstring sbuffer_;
6063
} ;

kbe/src/server/cellapp/entity.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1970,15 +1970,28 @@ void Entity::debugAOI()
19701970
{
19711971
if(pWitness_ == NULL)
19721972
{
1973-
ERROR_MSG(fmt::format("{}::debugAOI: {} has no witness!\n", scriptName(), this->id()));
1973+
Cellapp::getSingleton().getScript().pyPrint(fmt::format("{}::debugAOI: {} has no witness!\n", scriptName(), this->id()));
19741974
return;
19751975
}
19761976

1977-
INFO_MSG(fmt::format("{}::debugAOI: {} size={}\n", scriptName(), this->id(),
1978-
pWitness_->aoiEntities().size()));
1979-
1977+
int pending = 0;
19801978
EntityRef::AOI_ENTITIES::iterator iter = pWitness_->aoiEntities().begin();
19811979
for(; iter != pWitness_->aoiEntities().end(); iter++)
1980+
{
1981+
Entity* pEntity = (*iter)->pEntity();
1982+
1983+
if(pEntity)
1984+
{
1985+
if(((*iter)->flags() & ENTITYREF_FLAG_ENTER_CLIENT_PENDING) > 0)
1986+
pending++;
1987+
}
1988+
}
1989+
1990+
Cellapp::getSingleton().getScript().pyPrint(fmt::format("{}::debugAOI: {} size={}, Seen={}, Pending={}\n", scriptName(), this->id(),
1991+
pWitness_->aoiEntities().size(), pWitness_->aoiEntities().size() - pending, pending));
1992+
1993+
iter = pWitness_->aoiEntities().begin();
1994+
for(; iter != pWitness_->aoiEntities().end(); iter++)
19821995
{
19831996
Entity* pEntity = (*iter)->pEntity();
19841997
Position3D epos;
@@ -1991,13 +2004,13 @@ void Entity::debugAOI()
19912004
dist = KBEVec3Length(&distvec);
19922005
}
19932006

1994-
INFO_MSG(fmt::format("{7}::debugAOI: {0} {1}({2}), position({3}.{4}.{5}), dist={6}\n",
2007+
Cellapp::getSingleton().getScript().pyPrint(fmt::format("{7}::debugAOI: {0} {1}({2}), position({3}.{4}.{5}), dist={6}, Seen={8}\n",
19952008
this->id(),
19962009
(pEntity != NULL ? pEntity->scriptName() : "unknown"),
19972010
(*iter)->id(),
19982011
epos.x, epos.y, epos.z,
19992012
dist,
2000-
this->scriptName()));
2013+
this->scriptName(), (((*iter)->flags() & ENTITYREF_FLAG_ENTER_CLIENT_PENDING) ? "false" : "true")));
20012014
}
20022015
}
20032016

0 commit comments

Comments
 (0)