Pass ScriptRequest instead of ScriptInterface in simulation messages.
The previous code was constructing un-necessary ScriptRequest objects. Minor optimisation from not entering/leaving realms. Differential Revision: https://code.wildfiregames.com/D5026 This was SVN commit r27728.
This commit is contained in:
parent
dafa5ab774
commit
87063a94ff
@ -35,8 +35,8 @@
|
||||
virtual int GetType() const { return MT_##name; } \
|
||||
virtual const char* GetScriptHandlerName() const { return "On" #name; } \
|
||||
virtual const char* GetScriptGlobalHandlerName() const { return "OnGlobal" #name; } \
|
||||
virtual JS::Value ToJSVal(const ScriptInterface& scriptInterface) const; \
|
||||
static CMessage* FromJSVal(const ScriptInterface&, JS::HandleValue val);
|
||||
virtual JS::Value ToJSVal(const ScriptRequest& rq) const; \
|
||||
static CMessage* FromJSVal(const ScriptRequest&, JS::HandleValue val);
|
||||
|
||||
class SceneCollector;
|
||||
class CFrustum;
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include "simulation2/MessageTypes.h"
|
||||
|
||||
#define TOJSVAL_SETUP() \
|
||||
ScriptRequest rq(scriptInterface); \
|
||||
JS::RootedObject obj(rq.cx, JS_NewPlainObject(rq.cx)); \
|
||||
if (!obj) \
|
||||
return JS::UndefinedValue();
|
||||
@ -35,7 +34,6 @@
|
||||
} while (0);
|
||||
|
||||
#define FROMJSVAL_SETUP() \
|
||||
ScriptRequest rq(scriptInterface); \
|
||||
if (val.isPrimitive()) \
|
||||
return NULL; \
|
||||
JS::RootedObject obj(rq.cx, &val.toObject()); \
|
||||
@ -50,24 +48,23 @@
|
||||
return NULL; \
|
||||
}
|
||||
|
||||
JS::Value CMessage::ToJSValCached(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessage::ToJSValCached(const ScriptRequest& rq) const
|
||||
{
|
||||
ScriptRequest rq(scriptInterface);
|
||||
if (!m_Cached)
|
||||
m_Cached.reset(new JS::PersistentRootedValue(rq.cx, ToJSVal(scriptInterface)));
|
||||
m_Cached.reset(new JS::PersistentRootedValue(rq.cx, ToJSVal(rq)));
|
||||
|
||||
return m_Cached->get();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageTurnStart::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageTurnStart::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageTurnStart::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageTurnStart::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageTurnStart();
|
||||
}
|
||||
@ -75,13 +72,13 @@ CMessage* CMessageTurnStart::FromJSVal(const ScriptInterface& UNUSED(scriptInter
|
||||
////////////////////////////////
|
||||
|
||||
#define MESSAGE_1(name, t0, a0) \
|
||||
JS::Value CMessage##name::ToJSVal(const ScriptInterface& scriptInterface) const \
|
||||
JS::Value CMessage##name::ToJSVal(const ScriptRequest& rq) const \
|
||||
{ \
|
||||
TOJSVAL_SETUP(); \
|
||||
SET_MSG_PROPERTY(a0); \
|
||||
return JS::ObjectValue(*obj); \
|
||||
} \
|
||||
CMessage* CMessage##name::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val) \
|
||||
CMessage* CMessage##name::FromJSVal(const ScriptRequest& rq, JS::HandleValue val) \
|
||||
{ \
|
||||
FROMJSVAL_SETUP(); \
|
||||
GET_MSG_PROPERTY(t0, a0); \
|
||||
@ -95,7 +92,7 @@ MESSAGE_1(Update_Final, fixed, turnLength)
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageInterpolate::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageInterpolate::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(deltaSimTime);
|
||||
@ -104,7 +101,7 @@ JS::Value CMessageInterpolate::ToJSVal(const ScriptInterface& scriptInterface) c
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageInterpolate::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageInterpolate::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(float, deltaSimTime);
|
||||
@ -115,13 +112,13 @@ CMessage* CMessageInterpolate::FromJSVal(const ScriptInterface& scriptInterface,
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageRenderSubmit::ToJSVal(const ScriptInterface& UNUSED(scriptInterface)) const
|
||||
JS::Value CMessageRenderSubmit::ToJSVal(const ScriptRequest& UNUSED(rq)) const
|
||||
{
|
||||
LOGWARNING("CMessageRenderSubmit::ToJSVal not implemented");
|
||||
return JS::UndefinedValue();
|
||||
}
|
||||
|
||||
CMessage* CMessageRenderSubmit::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageRenderSubmit::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
LOGWARNING("CMessageRenderSubmit::FromJSVal not implemented");
|
||||
return NULL;
|
||||
@ -129,13 +126,13 @@ CMessage* CMessageRenderSubmit::FromJSVal(const ScriptInterface& UNUSED(scriptIn
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageProgressiveLoad::ToJSVal(const ScriptInterface& UNUSED(scriptInterface)) const
|
||||
JS::Value CMessageProgressiveLoad::ToJSVal(const ScriptRequest& UNUSED(rq)) const
|
||||
{
|
||||
LOGWARNING("CMessageProgressiveLoad::ToJSVal not implemented");
|
||||
return JS::UndefinedValue();
|
||||
}
|
||||
|
||||
CMessage* CMessageProgressiveLoad::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageProgressiveLoad::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
LOGWARNING("CMessageProgressiveLoad::FromJSVal not implemented");
|
||||
return NULL;
|
||||
@ -143,13 +140,13 @@ CMessage* CMessageProgressiveLoad::FromJSVal(const ScriptInterface& UNUSED(scrip
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageDeserialized::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageDeserialized::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageDeserialized::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageDeserialized::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
return new CMessageDeserialized();
|
||||
@ -157,14 +154,14 @@ CMessage* CMessageDeserialized::FromJSVal(const ScriptInterface& scriptInterface
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageCreate::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageCreate::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageCreate::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageCreate::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -173,14 +170,14 @@ CMessage* CMessageCreate::FromJSVal(const ScriptInterface& scriptInterface, JS::
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageDestroy::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageDestroy::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageDestroy::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageDestroy::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -189,7 +186,7 @@ CMessage* CMessageDestroy::FromJSVal(const ScriptInterface& scriptInterface, JS:
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageOwnershipChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageOwnershipChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
@ -198,7 +195,7 @@ JS::Value CMessageOwnershipChanged::ToJSVal(const ScriptInterface& scriptInterfa
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageOwnershipChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageOwnershipChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -209,7 +206,7 @@ CMessage* CMessageOwnershipChanged::FromJSVal(const ScriptInterface& scriptInter
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessagePositionChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessagePositionChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
@ -220,7 +217,7 @@ JS::Value CMessagePositionChanged::ToJSVal(const ScriptInterface& scriptInterfac
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessagePositionChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessagePositionChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -233,13 +230,13 @@ CMessage* CMessagePositionChanged::FromJSVal(const ScriptInterface& scriptInterf
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageInterpolatedPositionChanged::ToJSVal(const ScriptInterface& UNUSED(scriptInterface)) const
|
||||
JS::Value CMessageInterpolatedPositionChanged::ToJSVal(const ScriptRequest& UNUSED(rq)) const
|
||||
{
|
||||
LOGWARNING("CMessageInterpolatedPositionChanged::ToJSVal not implemented");
|
||||
return JS::UndefinedValue();
|
||||
}
|
||||
|
||||
CMessage* CMessageInterpolatedPositionChanged::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageInterpolatedPositionChanged::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
LOGWARNING("CMessageInterpolatedPositionChanged::FromJSVal not implemented");
|
||||
return NULL;
|
||||
@ -251,7 +248,7 @@ const std::array<const char*, CMessageMotionUpdate::UpdateType::LENGTH> CMessage
|
||||
"likelySuccess", "likelyFailure", "obstructed", "veryObstructed"
|
||||
} };
|
||||
|
||||
JS::Value CMessageMotionUpdate::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageMotionUpdate::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
JS::RootedValue prop(rq.cx);
|
||||
@ -262,7 +259,7 @@ JS::Value CMessageMotionUpdate::ToJSVal(const ScriptInterface& scriptInterface)
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageMotionUpdate::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageMotionUpdate::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(std::wstring, updateString);
|
||||
@ -282,7 +279,7 @@ CMessage* CMessageMotionUpdate::FromJSVal(const ScriptInterface& scriptInterface
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageTerrainChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageTerrainChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(i0);
|
||||
@ -292,7 +289,7 @@ JS::Value CMessageTerrainChanged::ToJSVal(const ScriptInterface& scriptInterface
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageTerrainChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageTerrainChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(int32_t, i0);
|
||||
@ -304,7 +301,7 @@ CMessage* CMessageTerrainChanged::FromJSVal(const ScriptInterface& scriptInterfa
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageVisibilityChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageVisibilityChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(player);
|
||||
@ -314,7 +311,7 @@ JS::Value CMessageVisibilityChanged::ToJSVal(const ScriptInterface& scriptInterf
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageVisibilityChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageVisibilityChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(player_id_t, player);
|
||||
@ -326,59 +323,59 @@ CMessage* CMessageVisibilityChanged::FromJSVal(const ScriptInterface& scriptInte
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageWaterChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageWaterChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageWaterChanged::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageWaterChanged::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageWaterChanged();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageMovementObstructionChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageMovementObstructionChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageMovementObstructionChanged::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageMovementObstructionChanged::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageMovementObstructionChanged();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageObstructionMapShapeChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageObstructionMapShapeChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageObstructionMapShapeChanged::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageObstructionMapShapeChanged::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageObstructionMapShapeChanged();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageTerritoriesChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageTerritoriesChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageTerritoriesChanged::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageTerritoriesChanged::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageTerritoriesChanged();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageRangeUpdate::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageRangeUpdate::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(tag);
|
||||
@ -387,7 +384,7 @@ JS::Value CMessageRangeUpdate::ToJSVal(const ScriptInterface& scriptInterface) c
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageRangeUpdate::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageRangeUpdate::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
LOGWARNING("CMessageRangeUpdate::FromJSVal not implemented");
|
||||
return NULL;
|
||||
@ -395,13 +392,13 @@ CMessage* CMessageRangeUpdate::FromJSVal(const ScriptInterface& UNUSED(scriptInt
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessagePathResult::ToJSVal(const ScriptInterface& UNUSED(scriptInterface)) const
|
||||
JS::Value CMessagePathResult::ToJSVal(const ScriptRequest& UNUSED(rq)) const
|
||||
{
|
||||
LOGWARNING("CMessagePathResult::ToJSVal not implemented");
|
||||
return JS::UndefinedValue();
|
||||
}
|
||||
|
||||
CMessage* CMessagePathResult::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessagePathResult::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
LOGWARNING("CMessagePathResult::FromJSVal not implemented");
|
||||
return NULL;
|
||||
@ -409,7 +406,7 @@ CMessage* CMessagePathResult::FromJSVal(const ScriptInterface& UNUSED(scriptInte
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageValueModification::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageValueModification::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entities);
|
||||
@ -418,7 +415,7 @@ JS::Value CMessageValueModification::ToJSVal(const ScriptInterface& scriptInterf
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageValueModification::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageValueModification::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(std::vector<entity_id_t>, entities);
|
||||
@ -429,7 +426,7 @@ CMessage* CMessageValueModification::FromJSVal(const ScriptInterface& scriptInte
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageTemplateModification::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageTemplateModification::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(player);
|
||||
@ -438,7 +435,7 @@ JS::Value CMessageTemplateModification::ToJSVal(const ScriptInterface& scriptInt
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageTemplateModification::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageTemplateModification::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(player_id_t, player);
|
||||
@ -449,7 +446,7 @@ CMessage* CMessageTemplateModification::FromJSVal(const ScriptInterface& scriptI
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageVisionRangeChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageVisionRangeChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
@ -458,7 +455,7 @@ JS::Value CMessageVisionRangeChanged::ToJSVal(const ScriptInterface& scriptInter
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageVisionRangeChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageVisionRangeChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -467,7 +464,7 @@ CMessage* CMessageVisionRangeChanged::FromJSVal(const ScriptInterface& scriptInt
|
||||
return new CMessageVisionRangeChanged(entity, oldRange, newRange);
|
||||
}
|
||||
|
||||
JS::Value CMessageVisionSharingChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageVisionSharingChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(entity);
|
||||
@ -476,7 +473,7 @@ JS::Value CMessageVisionSharingChanged::ToJSVal(const ScriptInterface& scriptInt
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageVisionSharingChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageVisionSharingChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(entity_id_t, entity);
|
||||
@ -487,27 +484,27 @@ CMessage* CMessageVisionSharingChanged::FromJSVal(const ScriptInterface& scriptI
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageMinimapPing::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageMinimapPing::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageMinimapPing::FromJSVal(const ScriptInterface& UNUSED(scriptInterface), JS::HandleValue UNUSED(val))
|
||||
CMessage* CMessageMinimapPing::FromJSVal(const ScriptRequest& UNUSED(rq), JS::HandleValue UNUSED(val))
|
||||
{
|
||||
return new CMessageMinimapPing();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageCinemaPathEnded::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageCinemaPathEnded::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(name);
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageCinemaPathEnded::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageCinemaPathEnded::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(CStrW, name);
|
||||
@ -516,13 +513,13 @@ CMessage* CMessageCinemaPathEnded::FromJSVal(const ScriptInterface& scriptInterf
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
JS::Value CMessageCinemaQueueEnded::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessageCinemaQueueEnded::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessageCinemaQueueEnded::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessageCinemaQueueEnded::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
return new CMessageCinemaQueueEnded();
|
||||
@ -530,14 +527,14 @@ CMessage* CMessageCinemaQueueEnded::FromJSVal(const ScriptInterface& scriptInter
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
JS::Value CMessagePlayerColorChanged::ToJSVal(const ScriptInterface& scriptInterface) const
|
||||
JS::Value CMessagePlayerColorChanged::ToJSVal(const ScriptRequest& rq) const
|
||||
{
|
||||
TOJSVAL_SETUP();
|
||||
SET_MSG_PROPERTY(player);
|
||||
return JS::ObjectValue(*obj);
|
||||
}
|
||||
|
||||
CMessage* CMessagePlayerColorChanged::FromJSVal(const ScriptInterface& scriptInterface, JS::HandleValue val)
|
||||
CMessage* CMessagePlayerColorChanged::FromJSVal(const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
FROMJSVAL_SETUP();
|
||||
GET_MSG_PROPERTY(player_id_t, player);
|
||||
@ -546,11 +543,11 @@ CMessage* CMessagePlayerColorChanged::FromJSVal(const ScriptInterface& scriptInt
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
CMessage* CMessageFromJSVal(int mtid, const ScriptInterface& scriptingInterface, JS::HandleValue val)
|
||||
CMessage* CMessageFromJSVal(int mtid, const ScriptRequest& rq, JS::HandleValue val)
|
||||
{
|
||||
switch (mtid)
|
||||
{
|
||||
#define MESSAGE(name) case MT_##name: return CMessage##name::FromJSVal(scriptingInterface, val);
|
||||
#define MESSAGE(name) case MT_##name: return CMessage##name::FromJSVal(rq, val);
|
||||
#define INTERFACE(name)
|
||||
#define COMPONENT(name)
|
||||
#include "simulation2/TypeList.h"
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2021 Wildfire Games.
|
||||
/* Copyright (C) 2023 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -52,7 +52,7 @@ void CComponentTypeScript::HandleMessage(const CMessage& msg, bool global)
|
||||
|
||||
const char* name = global ? msg.GetScriptGlobalHandlerName() : msg.GetScriptHandlerName();
|
||||
|
||||
JS::RootedValue msgVal(rq.cx, msg.ToJSValCached(m_ScriptInterface));
|
||||
JS::RootedValue msgVal(rq.cx, msg.ToJSValCached(rq));
|
||||
|
||||
if (!ScriptFunction::CallVoid(rq, m_Instance, name, msgVal))
|
||||
LOGERROR("Script message handler %s failed", name);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2022 Wildfire Games.
|
||||
/* Copyright (C) 2023 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -43,10 +43,10 @@ public:
|
||||
virtual int GetType() const { return mtid; }
|
||||
virtual const char* GetScriptHandlerName() const { return handlerName.c_str(); }
|
||||
virtual const char* GetScriptGlobalHandlerName() const { return globalHandlerName.c_str(); }
|
||||
virtual JS::Value ToJSVal(const ScriptInterface& UNUSED(scriptInterface)) const { return msg.get(); }
|
||||
virtual JS::Value ToJSVal(const ScriptRequest& UNUSED(rq)) const { return msg.get(); }
|
||||
|
||||
CMessageScripted(const ScriptInterface& scriptInterface, int mtid, const std::string& name, JS::HandleValue msg) :
|
||||
mtid(mtid), handlerName("On" + name), globalHandlerName("OnGlobal" + name), msg(scriptInterface.GetGeneralJSContext(), msg)
|
||||
CMessageScripted(const ScriptRequest& rq, int mtid, const std::string& name, JS::HandleValue msg) :
|
||||
mtid(mtid), handlerName("On" + name), globalHandlerName("OnGlobal" + name), msg(rq.cx, msg)
|
||||
{
|
||||
}
|
||||
|
||||
@ -429,13 +429,14 @@ CMessage* CComponentManager::ConstructMessage(int mtid, JS::HandleValue data)
|
||||
if (mtid == MT__Invalid || mtid > (int)m_MessageTypeIdsByName.size()) // (IDs start at 1 so use '>' here)
|
||||
LOGERROR("PostMessage with invalid message type ID '%d'", mtid);
|
||||
|
||||
ScriptRequest rq(m_ScriptInterface);
|
||||
if (mtid < MT__LastNative)
|
||||
{
|
||||
return CMessageFromJSVal(mtid, m_ScriptInterface, data);
|
||||
return CMessageFromJSVal(mtid, rq, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new CMessageScripted(m_ScriptInterface, mtid, m_MessageTypeNamesById[mtid], data);
|
||||
return new CMessageScripted(rq, mtid, m_MessageTypeNamesById[mtid], data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2020 Wildfire Games.
|
||||
/* Copyright (C) 2023 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -20,6 +20,8 @@
|
||||
|
||||
#include "scriptinterface/ScriptTypes.h"
|
||||
|
||||
class ScriptRequest;
|
||||
|
||||
class CMessage
|
||||
{
|
||||
NONCOPYABLE(CMessage);
|
||||
@ -30,14 +32,14 @@ public:
|
||||
virtual int GetType() const = 0;
|
||||
virtual const char* GetScriptHandlerName() const = 0;
|
||||
virtual const char* GetScriptGlobalHandlerName() const = 0;
|
||||
virtual JS::Value ToJSVal(const ScriptInterface&) const = 0;
|
||||
JS::Value ToJSValCached(const ScriptInterface&) const;
|
||||
virtual JS::Value ToJSVal(const ScriptRequest&) const = 0;
|
||||
JS::Value ToJSValCached(const ScriptRequest&) const;
|
||||
private:
|
||||
mutable std::unique_ptr<JS::PersistentRootedValue> m_Cached;
|
||||
};
|
||||
// TODO: GetType could be replaced with a plain member variable to avoid some
|
||||
// virtual calls, if that turns out to be worthwhile
|
||||
|
||||
CMessage* CMessageFromJSVal(int mtid, const ScriptInterface&, JS::HandleValue);
|
||||
CMessage* CMessageFromJSVal(int mtid, const ScriptRequest&, JS::HandleValue);
|
||||
|
||||
#endif // INCLUDED_MESSAGE
|
||||
|
Loading…
Reference in New Issue
Block a user