本文整理汇总了C++中witcher::Object类的典型用法代码示例。如果您正苦于以下问题:C++ Object类的具体用法?C++ Object怎么用?C++ Object使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Object类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getArea
void Functions::getArea(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *object = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (object)
ctx.getReturn() = (Aurora::NWScript::Object *) object->getArea();
}
示例2: getLocation
void Functions::getLocation(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object)
return;
ctx.getReturn() = object->getLocation();
}
示例3: getNearestObjectByTag
void Functions::getNearestObjectByTag(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Object *) 0;
const Common::UString &tag = ctx.getParams()[0].getString();
if (tag.empty())
return;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 1));
if (!target)
return;
size_t nth = MAX<int32>(ctx.getParams()[2].getInt() - 1, 0);
Common::ScopedPtr<Aurora::NWScript::ObjectSearch> search(_game->getModule().findObjectsByTag(tag));
Aurora::NWScript::Object *object = 0;
std::list<Object *> objects;
while ((object = search->next())) {
// Needs to be a valid object, not the target, but in the target's area
Witcher::Object *witcherObject = Witcher::ObjectContainer::toObject(object);
if (!witcherObject || (witcherObject == target) || (witcherObject->getArea() != target->getArea()))
continue;
objects.push_back(witcherObject);
}
objects.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = objects.begin();
for (size_t n = 0; (n < nth) && (it != objects.end()); ++n)
++it;
if (it != objects.end())
ctx.getReturn() = *it;
}
示例4: getObjectType
void Functions::getObjectType(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (int32) kObjectTypeInvalid;
Witcher::Object *object = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object || ((uint32)object->getType() >= kObjectTypeMAX))
return;
ctx.getReturn() = (int32) object->getType();
}
示例5: playSound
void Functions::playSound(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
if (object)
object->playSound(ctx.getParams()[0].getString());
else
::Engines::playSound(ctx.getParams()[0].getString(), Sound::kSoundTypeSFX);
unimplementedFunction(ctx);
}
示例6: getPosition
void Functions::getPosition(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn().setVector(0.0f, 0.0f, 0.0f);
Witcher::Object *object = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object)
return;
float x, y, z;
object->getPosition(x, y, z);
ctx.getReturn().setVector(x, y, z);
}
示例7: playSoundByStrRef
void Functions::playSoundByStrRef(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
const Common::UString sound = TalkMan.getSoundResRef((uint32) ctx.getParams()[0].getInt());
// TODO: Run as action
// bool runAsAction = ctx.getParams()[1].getInt() != 0;
if (object)
object->playSound(sound);
else
::Engines::playSound(sound, Sound::kSoundTypeVoice);
}
示例8: actionMoveToObject
void Functions::actionMoveToObject(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
Witcher::Object *moveTo = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object || !moveTo)
return;
float x, y, z;
moveTo->getPosition(x, y, z);
jumpTo(object, moveTo->getArea(), x, y, z);
unimplementedFunction(ctx);
}
示例9: jumpToObject
void Functions::jumpToObject(Aurora::NWScript::FunctionContext &ctx) {
// TODO: walkStraightLineToPoint
// bool walkStraightLineToPoint = ctx.getParams()[1].getInt() != 0;
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
Witcher::Object *moveTo = Witcher::ObjectContainer::toObject(getParamObject(ctx, 0));
if (!object || !moveTo)
return;
float x, y, z;
moveTo->getPosition(x, y, z);
jumpTo(object, moveTo->getArea(), x, y, z);
}
示例10: addObject
void ObjectContainer::addObject(Witcher::Object &object) {
lock();
::Aurora::NWScript::ObjectContainer::addObject(object);
_objects[object.getType()].push_back(&object);
unlock();
}
示例11: removeObject
void ObjectContainer::removeObject(Witcher::Object &object) {
lock();
_objects[object.getType()].remove(&object);
::Aurora::NWScript::ObjectContainer::removeObject(object);
unlock();
}
示例12: getNearestObject
void Functions::getNearestObject(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 1));
if (!target)
return;
// Bitfield of type(s) to check for
uint32 type = ctx.getParams()[0].getInt();
// We want the nth nearest object
size_t nth = MAX<int32>(ctx.getParams()[2].getInt() - 1, 0);
Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjects();
Aurora::NWScript::Object *object = 0;
std::list<Object *> objects;
while ((object = search->next())) {
// Needs to be a valid object, not the target, but in the target's area
Witcher::Object *witcherObject = Witcher::ObjectContainer::toObject(object);
if (!witcherObject || (witcherObject == target) || (witcherObject->getArea() != target->getArea()))
continue;
// Ignore invalid object types
const uint32 objectType = (uint32) witcherObject->getType();
if (objectType >= kObjectTypeMAX)
continue;
if (type & objectType)
objects.push_back(witcherObject);
}
delete search;
objects.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = objects.begin();
for (size_t n = 0; (n < nth) && (it != objects.end()); ++n)
++it;
if (it != objects.end())
ctx.getReturn() = *it;
}
示例13: getNearestCreature
void Functions::getNearestCreature(Aurora::NWScript::FunctionContext &ctx) {
ctx.getReturn() = (Aurora::NWScript::Object *) 0;
Witcher::Object *target = Witcher::ObjectContainer::toObject(getParamObject(ctx, 2));
if (!target)
return;
size_t nth = MAX<int32>(ctx.getParams()[3].getInt() - 1, 0);
/* TODO: Criteria:
*
* int crit1Type = ctx.getParams()[0].getInt();
* int crit1Value = ctx.getParams()[1].getInt();
* int crit2Type = ctx.getParams()[4].getInt();
* int crit2Value = ctx.getParams()[5].getInt();
* int crit3Type = ctx.getParams()[6].getInt();
* int crit3Value = ctx.getParams()[7].getInt();
*/
Aurora::NWScript::ObjectSearch *search = _game->getModule().findObjects();
Aurora::NWScript::Object *object = 0;
std::list<Object *> creatures;
while ((object = search->next())) {
Creature *creature = Witcher::ObjectContainer::toCreature(object);
if (creature && (creature != target) && (creature->getArea() == target->getArea()))
creatures.push_back(creature);
}
delete search;
creatures.sort(ObjectDistanceSort(*target));
std::list<Object *>::iterator it = creatures.begin();
for (size_t n = 0; (n < nth) && (it != creatures.end()); ++n)
++it;
if (it != creatures.end())
ctx.getReturn() = *it;
}
示例14: actionSpeakString
void Functions::actionSpeakString(Aurora::NWScript::FunctionContext &ctx) {
Witcher::Object *object = Witcher::ObjectContainer::toObject(ctx.getCaller());
if (object)
object->speakString(ctx.getParams()[0].getString(), ctx.getParams()[1].getInt());
}
示例15:
ObjectDistanceSort::ObjectDistanceSort(const Witcher::Object &target) {
target.getPosition(xt, yt, zt);
}