MCPcopy Create free account
hub / github.com/BZFlag-Dev/bzflag / SetSceneNodeTracking

Method SetSceneNodeTracking

src/lua/LuaSceneNode.cpp:519–560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

517
518
519int LuaSceneNodeMgr::SetSceneNodeTracking(lua_State* L) {
520 LuaSceneNode* sceneNode = CheckLuaSceneNode(L, 1);
521 if (sceneNode == NULL) {
522 lua_settop(L, 1);
523 return 1;
524 }
525
526 if (lua_isnil(L, 2)) {
527 sceneNode->trackMode = LuaSceneNode::TrackNone;
528 sceneNode->trackTarget = -1;
529 lua_settop(L, 1);
530 return 1;
531 }
532
533 if (!L2H(L)->HasFullRead()) {
534 luaL_error(L, "this script can not use positional tracking");
535 }
536
537 const std::string mode = luaL_checkstring(L, 2);
538 if (mode == "none") {
539 sceneNode->trackMode = LuaSceneNode::TrackNone;
540 sceneNode->trackTarget = -1;
541 }
542 else if (mode == "tank") {
543 sceneNode->trackMode = LuaSceneNode::TrackTank;
544 sceneNode->trackTarget = luaL_checkint(L, 3);
545 }
546 else if (mode == "flag") {
547 sceneNode->trackMode = LuaSceneNode::TrackFlag;
548 sceneNode->trackTarget = luaL_checkint(L, 3);
549 }
550 else if (mode == "shot") {
551 sceneNode->trackMode = LuaSceneNode::TrackShot;
552 sceneNode->trackTarget = luaL_checkint(L, 3);
553 }
554 else {
555 luaL_error(L, "bad tracking type");
556 }
557
558 lua_settop(L, 1);
559 return 1;
560}
561
562
563int LuaSceneNodeMgr::GetSceneNodeInfo(lua_State* L) {

Callers

nothing calls this directly

Calls 5

CheckLuaSceneNodeFunction · 0.85
L2HFunction · 0.85
HasFullReadMethod · 0.80
lua_settopFunction · 0.50
luaL_errorFunction · 0.50

Tested by

no test coverage detected