ZoneData* findZoneAt(const glm::vec3& pos) { RW_CHECK(!gamezones.empty(), "No game zones loaded"); ZoneData* zone = gamezones[0].findLeafAtPoint(pos); return zone; }
void GameWorld::destroyObjectQueued(GameObject *object) { RW_CHECK(object != nullptr, "destroying a null object?"); if (object) deletionQueue.insert(object); }
GameObject* ScriptArguments::getObject<VehicleObject>(unsigned int arg) const { auto gameObjectID = parameters->at(arg).integerValue(); auto object = getWorld()->vehiclePool.find(gameObjectID); RW_CHECK(object != nullptr, "No pedestrian for ID " << gameObjectID); return object; }
void CharacterObject::playActivityAnimation(Animation* animation, bool repeat, bool blocked) { RW_CHECK(animator != nullptr, "No Animator"); animator->playAnimation(AnimIndexAction, animation, 1.f, repeat); motionBlockedByActivity = blocked; }
GameObject* ScriptArguments::getObject<CutsceneObject>(unsigned int arg) const { auto gameObjectID = parameters->at(arg).integerValue(); auto object = getWorld()->cutscenePool.find(gameObjectID); RW_CHECK(object != nullptr, "No cutscene object for ID " << gameObjectID); return object; }
GameObject* ScriptArguments::getPlayerCharacter(unsigned int player) const { auto playerId = parameters->at(player).integerValue(); PlayerController* controller = getWorld()->players.at(playerId); RW_CHECK(controller != nullptr, "No controller for player " << player); return controller->getCharacter(); }
ScriptObjectType<int> ScriptArguments::getScriptObject(unsigned int arg) const { auto& param = (*this)[arg]; RW_CHECK(param.isLvalue(), "Non lvalue passed as object"); return ScriptObjectType<int>(param.handleValue(), (int*)nullptr); }
ScriptRGBA ScriptArguments::getParameter<ScriptRGBA>(unsigned int arg) const { RW_CHECK(getParameters().size() > arg + 3, "Argument list too short to get u8vec4"); return ScriptRGBA(getParameter<int>(arg), getParameter<int>(arg + 1), getParameter<int>(arg + 2), getParameter<int>(arg + 3)); }
ScriptVec3 ScriptArguments::getParameter<ScriptVec3>(unsigned int arg) const { RW_CHECK(getParameters().size() > arg + 2, "Argument list too short to get vec3"); return glm::vec3(getParameter<float>(arg), getParameter<float>(arg + 1), getParameter<float>(arg + 2)); }