-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDebugWrapperActor.js
40 lines (32 loc) · 1.09 KB
/
DebugWrapperActor.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"use strict";
const FUNCTION = 'function';
module.exports = class DebugWrapperActor
{
constructor(ActorClass, actorId, core)
{
core.startCpuLog(ActorClass.name + ".constructor");
core.startCpuLog(ActorClass.name + ".constructor.inner");
let actorInstance = new ActorClass(core);
core.endCpuLog(ActorClass.name + ".constructor.inner");
//doesn't see inhereted values. http://stackoverflow.com/questions/30881632/es6-iterate-over-class-methods
let actorProperties = Object.getOwnPropertyNames( ActorClass.prototype );
for(let index in actorProperties)
{
let propertyName = actorProperties[index];
if(propertyName === "constructor")
continue;
if(typeof actorInstance[propertyName] === FUNCTION)
{
this[propertyName] = function(p1, p2, p3, p4, p5) //assuming max 5 parameters.
{
let text = ActorClass.name + "(" + actorId + ")." + propertyName;
core.startCpuLog(text);
let result = actorInstance[propertyName](p1, p2, p3, p4, p5);
core.endCpuLog(text);
return result;
};
}
}
core.endCpuLog(ActorClass.name + ".constructor");
}
};