Beispiel #1
0
void Test::createCivils(void)
{
	// set the collision system
	Ogre::Real	MAX_VEL = 50.0f;
	CivilSMTTable *tt = CivilFSMBuilder::build();
	CivilUnit::setSMTTable(tt);

	sm::Vector2 p;
	for(int i = 0; i < 1; ++i){
		Ogre::Entity * ent = GLOBAL_SCN_MNGR->createEntity("civil01.mesh");
		Ogre::SceneNode *node = GLOBAL_SCN_MNGR->getRootSceneNode()->createChildSceneNode();

		CivilUnit *cu = new CivilUnit;
		cu->setEntity(ent);
		cu->setSceneNode(node);
		cu->setHeight(5);
		cu->build();
		cu->setLife(190);
		node->showBoundingBox(true);

		cu->setVelocity(MAX_VEL);

		p.x = 507;
		p.y = 1030;
		cu->setPosition(p);
		mCivils.push_back(cu);
	}
}
Beispiel #2
0
// create game objects
void Test::createPlayer(void)
{
	GameObject::collMng = mLevelManager.getCollisionManager();
	Ogre::Real	MAX_VEL = 180.0f;
	PlayerSMTTable *tt = PlayerFSMBuilder::build();
	PlayerUnit::setSMTransitionTable(tt);

	// Create the player group
	PlayerGroup::setLevelManager(&mLevelManager);
	mPlayerGroup = new PlayerGroup;


	for(int i = 0; i < 1; i++){
		Ogre::Entity * ent = GLOBAL_SCN_MNGR->createEntity("coral.mesh");
		Ogre::SceneNode *node = GLOBAL_SCN_MNGR->getRootSceneNode()->createChildSceneNode();

		PlayerUnit *zu = new PlayerUnit;
		zu->setEntity(ent);
		zu->setSceneNode(node);
		zu->setHeight(5);
		zu->build();
		zu->setLife(9);
		node->showBoundingBox(true);
		zu->setMaxVelocity(MAX_VEL*2.0f);
		zu->setVelocity(MAX_VEL);

		sm::Vector2 p;
		p.x = 507 + 5*i;
		p.y = 788 + 30*i;
		zu->setPosition(p);

		mPlayers.push_back(zu);
		mPlayerGroup->addUnit(zu);
	}

	CircularFormation *formation = new CircularFormation;
	mPlayerGroup->setCreator(mPlayers[0]);
	mPlayerGroup->setFormation(formation);
	mPlayerGroup->build();


	static ShootContainer sc;
	Shoot::setCollisionManager(mLevelManager.getCollisionManager());
	Shoot::setContainer(&sc);
	Shoot::setUpdObjsManager(&mUpdMngr);
	for(int i = 0; i < 10; ++i){
		Shoot *s = new Shoot;
		s->build(Ogre::Math::RangeRandom(8,16));
	}
	Weapon::setShootContainer(&sc);
	Gun9mm *w = new Gun9mm;
	w->setOwner(mPlayers.back());
	w->setPower(1);
	w->setSqrRange(90000.0);
	w->setEntity(GLOBAL_SCN_MNGR->createEntity("9mm.mesh"));
	Weapon::Ammunition ammo;
	ammo.ammo = 25;
	w->setAmmunition(ammo);
	mPlayers.back()->addNewWeapon(w);
}
Beispiel #3
0
int Create_Static_Object::create(Ogre::SceneManager *mainSceneMgr) {
    if (meshName.empty() ) {
        std::cout << "Whoops, what do you think you're doing? You didn't give a mesh name!" << std::endl;
        return 0;
    }

    if (meshFile.empty() ) {
        std::cout << "Well what did you expect? There's no mesh file to load!" << std::endl;
        return 0;
    }

    Ogre::SceneNode *nodeStaticObject = mainSceneMgr->getRootSceneNode()->createChildSceneNode(meshName, location, rotation);
    Ogre::Entity *entityStaticObject = mainSceneMgr->createEntity(meshName, meshFile);

    if (!materialName.empty() ){
        entityStaticObject->setMaterialName(materialName);
    }

    entityStaticObject->setCastShadows(shadow);

    nodeStaticObject->attachObject(entityStaticObject);
    nodeStaticObject->showBoundingBox(showBBox);
    nodeStaticObject->scale(scale);

    //Create the ground shape.
    BtOgre::StaticMeshToShapeConverter ogreBulletShapeConverter(entityStaticObject);
    if (bulletCollision == "sphere"){
        shapeStaticObject = ogreBulletShapeConverter.createSphere();
    } else if (bulletCollision == "box"){
        shapeStaticObject = ogreBulletShapeConverter.createBox();
        offsetLocation = entityStaticObject->getBoundingBox().getHalfSize();
        location.y = location.y - offsetLocation.y;
    } else if (bulletCollision == "trimesh"){
        shapeStaticObject = ogreBulletShapeConverter.createTrimesh();
    } else if (bulletCollision == "cylinder"){
        shapeStaticObject = ogreBulletShapeConverter.createCylinder();
    } else if (bulletCollision == "convex"){
        shapeStaticObject = ogreBulletShapeConverter.createConvex();
    }else{
        return 0;
    }

    shapeStaticObject->setLocalScaling(BtOgre::Convert::toBullet(nodeStaticObject->getScale() ) );

    //Create MotionState (no need for BtOgre here, you can use it if you want to though).
    stateStaticObject = new btDefaultMotionState(btTransform( BtOgre::Convert::toBullet(rotation),  BtOgre::Convert::toBullet(location) ) );

    //Create the Body.
    bodyStaticObject = new btRigidBody(0, stateStaticObject, shapeStaticObject, btVector3(0,0,0));
    Globals::phyWorld->addRigidBody(bodyStaticObject);

    return 1;
}
Beispiel #4
0
void Test::createZombies(void)
{
	// set the collision system
	Ogre::Real	MAX_VEL = 50.0f;
	ZombieSMTTable *tt = ZombieFSMBuilder::build();
	ZombieUnit::setSMTransitionTable(tt);

	// create the batery for the zombies
	static BillboardBatery bbb;
	bbb.createSet(20, "Billboard/ZombieBlood", 10);
	ZombieUnit::setBillboardBBlood(&bbb);

	static ZombieQueue q;
	ZombieUnit::setQueue(&q);

	sm::Vector2 p;
	for(int i = 0; i < 15; ++i){
		Ogre::Entity * ent = GLOBAL_SCN_MNGR->createEntity("zombie01.mesh");
		Ogre::SceneNode *node = GLOBAL_SCN_MNGR->getRootSceneNode()->createChildSceneNode();

		ZombieUnit *zu = new ZombieUnit;
		zu->setEntity(ent);
		zu->setSceneNode(node);
		zu->setHeight(5);
		zu->setAttackPower(1);
		zu->build();
		zu->setLife(19);
		node->showBoundingBox(true);

		zu->setWalkVelocity(MAX_VEL);
		zu->setAttackVelocity(MAX_VEL*2.0f);
		zu->setVelocity(MAX_VEL);

		p.x = 1107;
		p.y = 1030;
		zu->setPosition(p);
		mZombies.push_back(zu);
	}
}
  App()
  {
   _makeOgre();
   _makeOIS();

   // Create the Librarian this is the "Root" class of Orangutan, responsible for
   // creating and destroying Orangutan Geometries.
   mLibrarian = new Orangutan::Librarian();

   // A node to attach our about to be created Geometry too.
   mNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();

   // Create a Geometry, but though the SceneManager as it's a MovableObject.
   // Use "OrangutanGeometry" as the type of MovableObject to create, as long as the Librarian
   // has been created, Ogre knows what you mean.
   mGeometry = static_cast<Orangutan::Geometry*>( mSceneMgr->createMovableObject("OrangutanGeometry") );
   mGeometry->setMaterialName(0, "uv_blend_test");
   mGeometry->setMaterialName(1, "BaseWhiteNoLighting");
   
   // Then attach it. Just treat Geometries like Entities, Lights or ManualObjects.
   mNode->attachObject(mGeometry);
   mGeometry->createPlane(Ogre::Vector3(0,0,0), Ogre::Vector2(10,10));
#if 1
   Orangutan::Displacement* dis = mGeometry->createDisplacement(Ogre::Vector3(0,0,0), Ogre::Vector3(0.25,0.25,0.25));
   dis->begin(10,10);
   for (size_t i=0;i < 10*10;i++)
   {
    dis->sample(i * 0.01f, Ogre::ColourValue(0.5f,0.5f,0.5f,0.5f));
   }
   dis->end();
   mNode->showBoundingBox(true);
#endif
   Orangutan::Block* block = mGeometry->createBlock(Ogre::Vector3(0,0,0), Ogre::Vector3(20,1,10));
   block->quad_index(Orangutan::Block::Quad_Top, 1);
   block->quad_show(Orangutan::Block::Quad_Left);
   mGeometry->saveAsOokFile("test.ook");
  }
void TutorialApplication::loadMap(l2p::StringRef name) {
  l2p::Package *package = l2p::Package::GetPackage(name);
  if (!package)
    return;

  std::vector<std::shared_ptr<l2p::UModel>> models;
  package->GetObjects("Model", models);

  // Find the largest model. The others aren't right or something like that...
  std::shared_ptr<l2p::UModel> m = nullptr;
  for (auto i = models.begin(), e = models.end(); i != e; ++i) {
    if (!m) {
      m = *i;
      continue;
    }
    if ((*i)->nodes.size() > m->nodes.size())
      m = *i;
  }

  // Get region from path.
  {
    name.substr(0, 2).getAsInteger(10, m->regionX);
    name.substr(3, 2).getAsInteger(10, m->regionY);
    mLoadedRegions.push_back(std::make_pair(m->regionX, m->regionY));
  }

  if (m->points.size() != 0)
    loadBSP(m);

  std::vector<std::shared_ptr<l2p::ABlockingVolume>> blocking_volumes;
  package->GetObjects("BlockingVolume", blocking_volumes);
  for (auto i = blocking_volumes.begin(), e = blocking_volumes.end(); i != e; ++i) {
    std::shared_ptr<l2p::UModel> m = (*i)->brush;
    if (m) {
      Ogre::SceneNode *n = loadBSP(m, false);
      if (n) {
        assignActorPropsToNode(*i, n);
        n->showBoundingBox(true);
        dynamic_cast<Ogre::Entity*>(
          n->getAttachedObject(0))->setMaterialName("Volume/Display");
      }
    }
  }

  std::vector<std::shared_ptr<l2p::ATerrainInfo>> terrains;
  package->GetObjects("TerrainInfo", terrains);

  for (auto i = terrains.begin(), e = terrains.end(); i != e; ++i) {
    loadTerrain(*i);
  }

  std::vector<std::shared_ptr<l2p::AStaticMeshActor>> smeshes;
  package->GetObjects("StaticMeshActor", smeshes);
  package->GetObjects("MovableStaticMeshActor", smeshes);

  for (auto i = smeshes.begin(), e = smeshes.end(); i != e; ++i) {
    if (  (*i)->bHidden
       || (*i)->bDeleteMe
       || !(*i)->bCollideActors
       || !(*i)->bBlockActors
       || !(*i)->bBlockPlayers
       )
      continue;
    loadStaticMeshActor(*i);
  }
}
Beispiel #7
0
 virtual void setSelected(bool selected) {
   mSceneNode->showBoundingBox(selected);
 }
Beispiel #8
0
void GameG::drawBoard()
{
	Ogre::SceneManager*  m_pSceneMgr=OgreFramework::getSingletonPtr()->m_pRoot->getSceneManager("GameSceneMgr");
	float widthKw = 30;
	float heightKw = 30;
	Ogre::ManualObject mo("Pole");
	 

	mo.begin("Examples/Rocky", Ogre::RenderOperation::OT_TRIANGLE_LIST);
		mo.position(0, 0, heightKw);
			mo.textureCoord(0, 0);
	 
			mo.position(widthKw, 0, heightKw);
			mo.textureCoord(1, 0);
	 
			mo.position(widthKw, 0, 0);
			mo.textureCoord(0, 1);
	 
			mo.position(0, 0, 0);
			mo.textureCoord(1, 1);
			
			mo.triangle(0, 1, 2);
			mo.triangle(0, 2, 3);
	
	mo.end();
	mo.convertToMesh("PoleKw");

	float width = 18;
	float height = 30;

	
	mo.clear();
	mo.begin("Examples/Rocky", Ogre::RenderOperation::OT_TRIANGLE_LIST);
		mo.position(0, 0, height);
			mo.textureCoord(0, 0);
	 
			mo.position(width, 0, height);
			mo.textureCoord(1, 0);
	 
			mo.position(width, 0, 0);
			mo.textureCoord(0, 1);
	 
			mo.position(0, 0, 0);
			mo.textureCoord(1, 1);
			
			mo.triangle(0, 1, 2);
			mo.triangle(0, 2, 3);
	
	mo.end();

	mo.convertToMesh("Pole");
	
	Ogre::Entity *pole = m_pSceneMgr->createEntity("pole0", "PoleKw");
	pole->setMaterialName("Examples/Chrome");
	Ogre::SceneNode *poleNode = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode0");
	poleNode->attachObject(pole);
	poleNode->setPosition(Ogre::Vector3(4.5*width, 0,-4.5*width));
	poleNode->showBoundingBox(true);

	Ogre::Entity *pole2 = m_pSceneMgr->createEntity("pole10", "PoleKw");
	pole2->setMaterialName("Examples/OgreLogo");
	Ogre::SceneNode *poleNode2 = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode10");
	poleNode2->attachObject(pole2);
	poleNode2->setPosition(Ogre::Vector3(-4.5*width-height, 0,-4.5*width));
	poleNode2->showBoundingBox(true);

	Ogre::Entity *pole3 = m_pSceneMgr->createEntity("pole20", "PoleKw");
	pole3->setMaterialName("Examples/OgreLogo");
	Ogre::SceneNode *poleNode3 = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode20");
	poleNode3->attachObject(pole3);
	poleNode3->setPosition(Ogre::Vector3(-4.5*width-height, 0,4.5*width+height));
	poleNode3->showBoundingBox(true);

	Ogre::Entity *pole4 = m_pSceneMgr->createEntity("pole30", "PoleKw");
	pole4->setMaterialName("Examples/OgreLogo");
	Ogre::SceneNode *poleNode4 = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode30");
	poleNode4->attachObject(pole4);
	poleNode4->setPosition(Ogre::Vector3(4.5*width , 0,4.5*width+height));
	poleNode4->showBoundingBox(true);

	for (int i=0; i<9; i++)
	{
		Ogre::Entity *pole = m_pSceneMgr->createEntity("pole"+Ogre::StringConverter::toString(i+1), "Pole");
		
		Ogre::SceneNode *poleNode = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode"+Ogre::StringConverter::toString(i+1));
		poleNode->attachObject(pole);
		poleNode->setPosition(Ogre::Vector3(3.5*width-i*width, 0, -4.5*width));
		poleNode->showBoundingBox(true);
	}

		for (int i=0; i<9; i++)
	{
		Ogre::Entity *pole = m_pSceneMgr->createEntity("pole"+Ogre::StringConverter::toString(i+11), "Pole");
		
		Ogre::SceneNode *poleNode = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode"+Ogre::StringConverter::toString(i+11));
		poleNode->attachObject(pole);
		poleNode->yaw(Ogre::Radian(Ogre::Math::PI/2.f));
		poleNode->setPosition(Ogre::Vector3(-4.5*width-height, 0, -1.8*width+i*width));
		poleNode->showBoundingBox(true);
	}

	for (int i=0; i<9; i++)
	{
		Ogre::Entity *pole = m_pSceneMgr->createEntity("pole"+Ogre::StringConverter::toString(i+21), "Pole");
		
		Ogre::SceneNode *poleNode = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode"+Ogre::StringConverter::toString(i+21));
		poleNode->attachObject(pole);
		poleNode->yaw(Ogre::Radian(Ogre::Math::PI));
		poleNode->setPosition(Ogre::Vector3(-3.5*width+i*width, 0, 4.5*width+2*height));
		poleNode->showBoundingBox(true);
	}

	for (int i=0; i<9; i++)
	{
		Ogre::Entity *pole = m_pSceneMgr->createEntity("pole"+Ogre::StringConverter::toString(i+31), "Pole");
		
		Ogre::SceneNode *poleNode = m_pSceneMgr->getRootSceneNode()->createChildSceneNode("poleNode"+Ogre::StringConverter::toString(i+31));
		poleNode->attachObject(pole);
		poleNode->yaw(Ogre::Radian(-Ogre::Math::PI/2.f));
		poleNode->setPosition(Ogre::Vector3(4.5*width+height, 0, 5.2*width-i*width));
		poleNode->showBoundingBox(true);
	}

	
}
Ogre::SceneNode* GameObjectFactory::create_SAF()
{
    Ogre::String _objectName = "SAF_" + Ogre::StringConverter::toString(SAF_id);
    SAF_id++;
    Ogre::SceneNode* root_scene_node = scene_manager->getRootSceneNode();

    Ogre::Entity* entity = scene_manager->createEntity(_objectName, "Base_Ship.mesh");
    Ogre::SceneNode* node = root_scene_node->createChildSceneNode(_objectName);
    entity->setMaterialName("ShinyMaterial");
    node->attachObject(entity);

    //node->setPosition(0.0,0.0,0.0);
    node->setScale(1.0,1.0,1.0);
    node->showBoundingBox(true);

    //cockpit
    entity = scene_manager->createEntity(_objectName + "_Cockpit", "Cockpit.mesh");
    Ogre::SceneNode* child = node->createChildSceneNode(_objectName + "_Cockpit");
    entity->setMaterialName("BlueMaterial");
    child->attachObject(entity);

    child->rotate(Ogre::Quaternion(Ogre::Radian(1.570797f), Ogre::Vector3(0.0,0.0,-1.0)));
    child->translate(-1.22, -0.17430, 0.0f);

    //
    /*
    Ogre::SceneNode* camera = scene_manager->getSceneNode("MyCameraNode");
    Ogre::Camera* mCam = (Ogre::Camera*)camera->detachObject("MyCamera");
    scene_manager->destroySceneNode("MyCameraNode");

    mCam->setPosition(child->_getDerivedPosition());
    mCam->setOrientation(child->_getDerivedOrientation());
    mCam->move(Ogre::Vector3(0.0, 0.5, 0.0));

    cout << mCam->getPosition() << endl;
    child->attachObject(mCam);

    child = child->createChildSceneNode("MyCameraNode");
    child->attachObject(mCam);

    child->rotate(Ogre::Quaternion(Ogre::Radian(3.14159f), Ogre::Vector3(-1.0, 0.0, 1.0)));
    child->pitch(Ogre::Degree(95));
    child->translate(0.0, -1.6, 0.0);
    */

    //generators
    entity =  scene_manager->createEntity(_objectName + "_Generator", "Generator.mesh");
    child = node->createChildSceneNode(_objectName + "_Generator");
    entity->setMaterialName("ObjectMaterial");
    child->attachObject(entity);

    child->translate(0.5f, 0.0f, 0.0f);

    //engines
    entity =  scene_manager->createEntity(_objectName + "_Engines", "Engines.mesh");
    child = node->createChildSceneNode(_objectName + "_Engines");
    entity->setMaterialName("ShinyBlueMaterial");
    child->attachObject(entity);

    child->rotate(Ogre::Quaternion(Ogre::Radian(3.01f), Ogre::Vector3(-1.0,0.0,0.0)));
    child->translate(-0.02796f, -0.92620f, -0.87242f);

    //
    entity =  scene_manager->createEntity(_objectName + "_Impulse", "Impule_Engine.mesh");
    child = node->createChildSceneNode(_objectName + "_Impulse");
    entity->setMaterialName("ObjectMaterial");
    child->attachObject(entity);

    child->translate(1.69124f, 0.31351f, 0.005f);

    //launchers
    entity =  scene_manager->createEntity(_objectName + "_Launcher", "Launcher_Weapon.mesh");
    child = node->createChildSceneNode(_objectName + "_Launcher");
    entity->setMaterialName("ShinyBlueMaterial");
    child->attachObject(entity);

    child->translate(1.64124f, 0.2, 0.005);

    //laser
    entity =  scene_manager->createEntity(_objectName + "_Laser", "Laser_Weapon.mesh");
    child = node->createChildSceneNode(_objectName + "_Laser");
    entity->setMaterialName("ShinyBlueMaterial");
    child->attachObject(entity);

    child->translate(1.66224f, 0.21, 0.005);

    //

    return node;
}