Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/simulation2/components/ICmpFootprint.cpp
/* Copyright (C) 2017 Wildfire Games. | /* Copyright (C) 2020 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
Show All 15 Lines | |||||
#include "maths/FixedVector3D.h" | #include "maths/FixedVector3D.h" | ||||
JS::Value ICmpFootprint::GetShape_wrapper() const | JS::Value ICmpFootprint::GetShape_wrapper() const | ||||
{ | { | ||||
EShape shape; | EShape shape; | ||||
entity_pos_t size0, size1, height; | entity_pos_t size0, size1, height; | ||||
GetShape(shape, size0, size1, height); | GetShape(shape, size0, size1, height); | ||||
JSContext* cx = GetSimContext().GetScriptInterface().GetContext(); | ScriptInterface::Request rq(GetSimContext().GetScriptInterface()); | ||||
JSAutoRequest rq(cx); | |||||
JS::RootedObject obj(cx, JS_NewPlainObject(cx)); | JS::RootedObject obj(rq.cx, JS_NewPlainObject(rq.cx)); | ||||
if (!obj) | if (!obj) | ||||
return JS::UndefinedValue(); | return JS::UndefinedValue(); | ||||
if (shape == CIRCLE) | if (shape == CIRCLE) | ||||
{ | { | ||||
JS::RootedValue ptype(cx); | JS::RootedValue ptype(rq.cx); | ||||
JS::RootedValue pradius(cx); | JS::RootedValue pradius(rq.cx); | ||||
JS::RootedValue pheight(cx); | JS::RootedValue pheight(rq.cx); | ||||
ScriptInterface::ToJSVal<std::string>(cx, &ptype, "circle"); | ScriptInterface::ToJSVal<std::string>(rq, &ptype, "circle"); | ||||
ScriptInterface::ToJSVal(cx, &pradius, size0); | ScriptInterface::ToJSVal(rq, &pradius, size0); | ||||
ScriptInterface::ToJSVal(cx, &pheight, height); | ScriptInterface::ToJSVal(rq, &pheight, height); | ||||
JS_SetProperty(cx, obj, "type", ptype); | JS_SetProperty(rq.cx, obj, "type", ptype); | ||||
JS_SetProperty(cx, obj, "radius", pradius); | JS_SetProperty(rq.cx, obj, "radius", pradius); | ||||
JS_SetProperty(cx, obj, "height", pheight); | JS_SetProperty(rq.cx, obj, "height", pheight); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
JS::RootedValue ptype(cx); | JS::RootedValue ptype(rq.cx); | ||||
JS::RootedValue pwidth(cx); | JS::RootedValue pwidth(rq.cx); | ||||
JS::RootedValue pdepth(cx); | JS::RootedValue pdepth(rq.cx); | ||||
JS::RootedValue pheight(cx); | JS::RootedValue pheight(rq.cx); | ||||
ScriptInterface::ToJSVal<std::string>(cx, &ptype, "square"); | ScriptInterface::ToJSVal<std::string>(rq, &ptype, "square"); | ||||
ScriptInterface::ToJSVal(cx, &pwidth, size0); | ScriptInterface::ToJSVal(rq, &pwidth, size0); | ||||
ScriptInterface::ToJSVal(cx, &pdepth, size1); | ScriptInterface::ToJSVal(rq, &pdepth, size1); | ||||
ScriptInterface::ToJSVal(cx, &pheight, height); | ScriptInterface::ToJSVal(rq, &pheight, height); | ||||
JS_SetProperty(cx, obj, "type", ptype); | JS_SetProperty(rq.cx, obj, "type", ptype); | ||||
JS_SetProperty(cx, obj, "width", pwidth); | JS_SetProperty(rq.cx, obj, "width", pwidth); | ||||
JS_SetProperty(cx, obj, "depth", pdepth); | JS_SetProperty(rq.cx, obj, "depth", pdepth); | ||||
JS_SetProperty(cx, obj, "height", pheight); | JS_SetProperty(rq.cx, obj, "height", pheight); | ||||
} | } | ||||
return JS::ObjectValue(*obj); | return JS::ObjectValue(*obj); | ||||
} | } | ||||
BEGIN_INTERFACE_WRAPPER(Footprint) | BEGIN_INTERFACE_WRAPPER(Footprint) | ||||
DEFINE_INTERFACE_METHOD_CONST_1("PickSpawnPoint", CFixedVector3D, ICmpFootprint, PickSpawnPoint, entity_id_t) | DEFINE_INTERFACE_METHOD_CONST_1("PickSpawnPoint", CFixedVector3D, ICmpFootprint, PickSpawnPoint, entity_id_t) | ||||
DEFINE_INTERFACE_METHOD_CONST_1("PickSpawnPointBothPass", CFixedVector3D, ICmpFootprint, PickSpawnPointBothPass, entity_id_t) | DEFINE_INTERFACE_METHOD_CONST_1("PickSpawnPointBothPass", CFixedVector3D, ICmpFootprint, PickSpawnPointBothPass, entity_id_t) | ||||
DEFINE_INTERFACE_METHOD_CONST_0("GetShape", JS::Value, ICmpFootprint, GetShape_wrapper) | DEFINE_INTERFACE_METHOD_CONST_0("GetShape", JS::Value, ICmpFootprint, GetShape_wrapper) | ||||
END_INTERFACE_WRAPPER(Footprint) | END_INTERFACE_WRAPPER(Footprint) |
Wildfire Games · Phabricator