本文整理汇总了C++中SharedObjectTemplate::isSharedStructureObjectTemplate方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedObjectTemplate::isSharedStructureObjectTemplate方法的具体用法?C++ SharedObjectTemplate::isSharedStructureObjectTemplate怎么用?C++ SharedObjectTemplate::isSharedStructureObjectTemplate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedObjectTemplate
的用法示例。
在下文中一共展示了SharedObjectTemplate::isSharedStructureObjectTemplate方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isInObjectsNoBuildZone
bool PlanetManagerImplementation::isInObjectsNoBuildZone(float x, float y, float extraMargin) {
SortedVector<QuadTreeEntry*> closeObjects;
Vector3 targetPos(x, y, zone->getHeight(x, y));
zone->getInRangeObjects(x, y, 512, &closeObjects, true);
for (int i = 0; i < closeObjects.size(); ++i) {
SceneObject* obj = cast<SceneObject*>(closeObjects.get(i));
SharedObjectTemplate* objectTemplate = obj->getObjectTemplate();
if (objectTemplate != NULL) {
float radius = objectTemplate->getNoBuildRadius();
// Only check objects with an actual NoBuildRadius
if (radius > 0) {
// Add margin to check
radius += extraMargin;
Vector3 objWorldPos = obj->getWorldPosition();
if (objWorldPos.squaredDistanceTo(targetPos) < radius * radius) {
return true;
}
}
// Check if it's within a structure's footprint
if (objectTemplate->isSharedStructureObjectTemplate()) {
if (StructureManager::instance()->isInStructureFootprint(cast<StructureObject*>(obj), x, y, extraMargin)) {
return true;
}
}
}
}
return false;
}
示例2: handleObjectMenuSelect
//.........这里部分代码省略.........
error("Player has NULL closeObjectsVector in EventPerkDeedImplementation::handleObjectMenuSelect");
return 1;
}
for (int i = 0; i < closeObjects->size(); ++i) {
SceneObject* obj = cast<SceneObject*>(closeObjects->get(i).get());
if (obj == NULL) {
continue;
}
SharedObjectTemplate* objectTemplate = obj->getObjectTemplate();
if (objectTemplate == NULL) {
continue;
}
float radius = objectTemplate->getNoBuildRadius();
if (obj->isLairObject() && player->isInRange(obj, radius)) {
player->sendSystemMessage("@event_perk:too_close_lair"); // You cannot place a Rental this close to a lair.
return 1;
}
if (obj->isCampStructure() && player->isInRange(obj, radius)) {
player->sendSystemMessage("@event_perk:too_close_camp"); // You cannot place a Rental this close to a camp.
return 1;
}
if (radius > 0 && player->isInRange(obj, radius)) {
player->sendSystemMessage("@event_perk:too_close_something"); // You are too close to an object to deploy your Rental here. Move away from it.
return 1;
}
if (objectTemplate->isSharedStructureObjectTemplate()) {
if (StructureManager::instance()->isInStructureFootprint(cast<StructureObject*>(obj), x, y, 0)) {
player->sendSystemMessage("@event_perk:too_close_building"); // You may not place a Rental this close to a building.
return 1;
}
}
if (obj->isEventPerk() && player->isInRange(obj, 32) && ++nearbyPerks > 2) {
player->sendSystemMessage("@event_perk:too_many_perks"); // There are too many Rentals already deployed in this area. Please move to another location.
return 1;
}
}
SortedVector<ManagedReference<ActiveArea* > > activeAreas;
zone->getInRangeActiveAreas(x, y, &activeAreas, true);
for (int i = 0; i < activeAreas.size(); ++i) {
ActiveArea* area = activeAreas.get(i);
if (area->isNoBuildArea()) {
player->sendSystemMessage("@event_perk:too_close_something"); // You are too close to an object to deploy your Rental here. Move away from it.
return 1;
}
}
if (planetManager->isInRangeWithPoi(x, y, 150)) {
player->sendSystemMessage("@event_perk:too_close_something"); // You are too close to an object to deploy your Rental here. Move away from it.
return 1;
}
if (perkType != EventPerkDeedTemplate::STATIC) {
player->sendSystemMessage("This type of event perk deed is not functional yet.");
return 1;