本文整理汇总了C++中ManagedReference::createObject方法的典型用法代码示例。如果您正苦于以下问题:C++ ManagedReference::createObject方法的具体用法?C++ ManagedReference::createObject怎么用?C++ ManagedReference::createObject使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ManagedReference
的用法示例。
在下文中一共展示了ManagedReference::createObject方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: changeSize
void PlantObjectImplementation::changeSize(int size) {
String plantTemplate = "";
switch (size) {
case 0: plantTemplate = "object/tangible/loot/plant_grow/plant_stage_dead.iff"; break;
case 1: plantTemplate = "object/tangible/loot/plant_grow/plant_stage_1.iff"; break;
case 2: plantTemplate = "object/tangible/loot/plant_grow/plant_stage_2.iff"; break;
case 3: plantTemplate = "object/tangible/loot/plant_grow/plant_stage_3.iff"; break;
}
ManagedReference<ZoneServer*> zoneServer = getZoneServer();
if (zoneServer == NULL)
return;
ManagedReference<SceneObject*> parent = getParent();
if (parent == NULL || !parent->isCellObject())
return;
ManagedReference<SceneObject*> obj = zoneServer->createObject(plantTemplate.hashCode(), getPersistenceLevel());
if (obj == NULL)
return;
Locker clocker(obj, _this.getReferenceUnsafeStaticCast());
obj->initializePosition(getPositionX(), getPositionZ(), getPositionY());
obj->setDirection(Math::deg2rad(getDirectionAngle()));
ManagedReference<PlantObject*> newPlant = cast<PlantObject*>( obj.get());
if (newPlant == NULL)
return;
newPlant->setWaterLevel(waterLevel);
newPlant->setNutrientLevel(nutrientLevel);
newPlant->setWaterQuality(waterQuality);
newPlant->setNutrientQuality(nutrientQuality);
newPlant->setPlantHealth(health);
newPlant->initializePlant(size);
parent->transferObject(obj, -1);
clocker.release();
destroyObjectFromWorld(true);
destroyObjectFromDatabase();
}
示例2: activate
void ReconMissionObjectiveImplementation::activate() {
MissionObjectiveImplementation::activate();
ManagedReference<MissionObject* > mission = this->mission.get();
if (mission == NULL)
return;
ManagedReference<ZoneServer*> zoneServer = Core::lookupObject<ZoneServer>("ZoneServer");
if (locationActiveArea == NULL) {
locationActiveArea = ( zoneServer->createObject(STRING_HASHCODE("object/mission_recon_area.iff"), 1)).castTo<MissionReconActiveArea*>();
Locker locker(locationActiveArea);
locationActiveArea->setMissionObjective(_this.getReferenceUnsafeStaticCast());
}
if (!locationActiveArea->isInQuadTree()) {
String planetName = mission->getStartPlanet();
Zone* zone = zoneServer->getZone(planetName);
if (zone != nullptr) {
Reference<MissionReconActiveArea* > area = locationActiveArea;
Core::getTaskManager()->executeTask([zone, area, this, mission] () {
Locker locker(area);
area->initializePosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
area->setRadius(32.f);
if (zone != NULL) {
zone->transferObject(area, -1, true);
} else {
error("Failed to insert recon location to zone.");
abort();
return;
}
}, "ReconMissionObjectiveActivateLambda");
}
}
ManagedReference<WaypointObject*> waypoint = mission->getWaypointToMission();
Locker locker(waypoint);
waypoint->setPlanetCRC(mission->getStartPlanetCRC());
waypoint->setPosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
waypoint->setActive(true);
mission->updateMissionLocation();
}
示例3: activate
void ReconMissionObjectiveImplementation::activate() {
MissionObjectiveImplementation::activate();
ManagedReference<MissionObject* > mission = this->mission.get();
if (mission == NULL)
return;
ManagedReference<ZoneServer*> zoneServer = Core::lookupObject<ZoneServer>("ZoneServer");
if (locationActiveArea == NULL) {
locationActiveArea = ( zoneServer->createObject(String("object/mission_recon_area.iff").hashCode(), 1)).castTo<MissionReconActiveArea*>();
Locker locker(locationActiveArea);
locationActiveArea->setMissionObjective(_this.get());
}
if (!locationActiveArea->isInQuadTree()) {
String planetName = mission->getStartPlanet();
Zone* zone = zoneServer->getZone(planetName);
Locker locker(locationActiveArea);
locationActiveArea->initializePosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
locationActiveArea->setRadius(32.f);
if (zone != NULL) {
zone->transferObject(locationActiveArea, -1, true);
} else {
error("Failed to insert recon location to zone.");
abort();
return;
}
}
ManagedReference<WaypointObject*> waypoint = mission->getWaypointToMission();
if (waypoint == NULL)
waypoint = mission->createWaypoint();
waypoint->setPlanetCRC(mission->getStartPlanetCRC());
waypoint->setPosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
waypoint->setActive(true);
mission->updateMissionLocation();
}
示例4: handleObjectMenuSelect
//.........这里部分代码省略.........
}
}
if (scno->getObserverCount(ObserverEventType::CREATUREDESPAWNED) > 0) {
SortedVector<ManagedReference<Observer* > > observers2 = scno->getObservers(ObserverEventType::CREATUREDESPAWNED);
for(int j = 0; j < observers2.size(); ++j) {
if(observers2.get(j)->isObserverType(ObserverType::LAIR)) {
player->sendSystemMessage("@camp:error_lair_too_close");
return 0;
}
}
}
}
}
/// Check to see if you can camp here (Allows building in city no-build zone but not within city limits which are checked above)
if (!planetManager->isCampingPermittedAt(player->getPositionX(), player->getPositionY(), campStructureData->getRadius())) {
player->sendSystemMessage("@camp:error_nobuild");
return 0;
}
player->sendSystemMessage("@camp:starting_camp");
/// Create Structure
StructureObject* structureObject = StructureManager::instance()->placeStructure(
player, campKitData->getSpawnObjectTemplate(),
player->getPositionX(), player->getPositionY(),
(int) player->getDirectionAngle());
if (structureObject == NULL) {
error("Unable to create camp: " + campKitData->getSpawnObjectTemplate());
return 1;
}
/// Identify terminal for Active area
Terminal* campTerminal = NULL;
SortedVector < ManagedReference<SceneObject*> > *childObjects
= structureObject->getChildObjects();
for (int i = 0; i < childObjects->size(); ++i) {
if (childObjects->get(i)->isTerminal()) {
campTerminal = cast<Terminal*> (childObjects->get(i).get());
break;
}
}
if (campTerminal == NULL) {
structureObject->destroyObjectFromDatabase(true);
error("Camp does not have terminal: " + campStructureData->getTemplateFileName());
return 1;
}
String campName = player->getFirstName();
if(!player->getLastName().isEmpty())
campName += " " + player->getLastName();
campName += "'s Camp";
campTerminal->setCustomObjectName(campName, true);
/// Create active area
String areaPath = "object/camp_area.iff";
ManagedReference<CampSiteActiveArea*> campArea =
(zoneServer->createObject( areaPath.hashCode(), 1)).castTo< CampSiteActiveArea*>();
if (campArea == NULL) {
structureObject->destroyObjectFromDatabase(true);
return 1;
}
Locker areaLocker(campArea, player);
campArea->init(campStructureData);
campArea->setTerminal(campTerminal);
campArea->setCamp(structureObject);
campArea->setOwner(player);
campArea->setNoBuildArea(true);
campArea->initializePosition(player->getPositionX(), 0, player->getPositionY());
if (!zone->transferObject(campArea, -1, false)) {
structureObject->destroyObjectFromDatabase(true);
campArea->destroyObjectFromDatabase(true);
return 1;
}
structureObject->addActiveArea(campArea);
player->sendSystemMessage("@camp:camp_complete");
/// Remove Camp
TangibleObject* tano = cast<TangibleObject*>(sceneObject);
if(tano != NULL)
tano->decreaseUseCount();
return 0;
} else
return TangibleObjectMenuComponent::handleObjectMenuSelect(sceneObject,
player, selectedID);
return 0;
}
示例5: activate
void EntertainerMissionObjectiveImplementation::activate() {
Locker _lock(_this.getReferenceUnsafeStaticCast());
ManagedReference<MissionObject* > mission = this->mission.get();
MissionObjectiveImplementation::activate();
if (hasObservers()) {
return;
}
if (mission == NULL)
return;
ManagedReference<ZoneServer*> zoneServer = Core::lookupObject<ZoneServer>("ZoneServer");
if (locationActiveArea == NULL) {
locationActiveArea = ( zoneServer->createObject(STRING_HASHCODE("object/active_area.iff"), 1)).castTo<ActiveArea*>();
}
if (!locationActiveArea->isInQuadTree()) {
String planetName = mission->getStartPlanet();
Zone* zone = zoneServer->getZone(planetName);
Locker locker(locationActiveArea);
locationActiveArea->initializePosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
locationActiveArea->setRadius(32.f);
if (zone != NULL) {
zone->transferObject(locationActiveArea, -1, true);
} else {
error("Failed to insert entertainer location to zone.");
abort();
return;
}
}
Locker locationLocker(locationActiveArea);
ManagedReference<MissionObserver*> observer1 = new MissionObserver(_this.getReferenceUnsafeStaticCast());
addObserver(observer1, true);
locationActiveArea->registerObserver(ObserverEventType::ENTEREDAREA, observer1);
ManagedReference<MissionObserver*> observer2 = new MissionObserver(_this.getReferenceUnsafeStaticCast());
addObserver(observer2, true);
locationActiveArea->registerObserver(ObserverEventType::EXITEDAREA, observer2);
locationLocker.release();
WaypointObject* waypoint = mission->getWaypointToMission();
if (waypoint == NULL) {
Locker mlocker(mission);
waypoint = mission->createWaypoint();
}
Locker wplocker(waypoint);
waypoint->setPlanetCRC(mission->getStartPlanetCRC());
waypoint->setPosition(mission->getStartPositionX(), 0, mission->getStartPositionY());
waypoint->setActive(true);
mission->updateMissionLocation();
}
开发者ID:Mesagoppinmypants,项目名称:mtgtestserver,代码行数:66,代码来源:EntertainerMissionObjectiveImplementation.cpp