Esempio n. 1
0
File: saver.cpp Progetto: garinh/cs
  bool Terrain2SaverCommon::SaveRenderProperties (iDocumentNode* node,
    iTerrainCellRenderProperties* props,
    iTerrainCellRenderProperties* dfltProp)
  {
    bool result = SaveProperties (node, props, dfltProp);

    csSet<csPtrKey<csShaderVariable> > dfltSV;
    if (dfltProp != 0)
    {
      const csRefArray<csShaderVariable>& dfltSVarr =
	dfltProp->GetShaderVariables();
      for (size_t i = 0; i < dfltSVarr.GetSize(); i++)
	dfltSV.Add (dfltSVarr[i]);
    }

    const csRefArray<csShaderVariable>& SVarr =
	props->GetShaderVariables();
    for (size_t i = 0; i < SVarr.GetSize(); i++)
    {
      if (dfltSV.Contains (SVarr[i])) continue;

      csRef<iDocumentNode> svNode = 
        node->CreateNodeBefore (CS_NODE_ELEMENT, 0);
      svNode->SetValue ("shadervar");
      if (!synldr->WriteShaderVar (svNode, *(SVarr[i])))
	return false;

      result = true;
    }

    return result;
  }
Esempio n. 2
0
void cLayerProperties::OKClick( const cUIEvent * Event ) {
	SaveProperties();

	mLayer->Name( mUIInput->Text().ToUtf8() );

	if ( mRefreshCb.IsSet() ) {
		mRefreshCb();
	}

	mUIWindow->CloseWindow();
}
// Saves the given entity object to the given XML node.
void EntitySerializer::Save(const Entity *entity, rapidxml::xml_node<lean::utf8_t> &node,
	beCore::ParameterSet &parameters, beCore::SerializationQueue<beCore::SaveJob> &queue) const
{
	ComponentSerializer<Entity>::Save(entity, node, parameters, queue);
	SetName(entity->GetName(), node);
	SetID(entity->GetPersistentID(), node);

	// Properties
	SaveProperties(*entity, node);
	
	// Controllers
	SaveControllers(entity, node, parameters, queue);
}
Esempio n. 4
0
File: saver.cpp Progetto: garinh/cs
  bool Terrain2SaverCommon::SaveFeederProperties (iDocumentNode* node,
    iTerrainCellFeederProperties* props,
    iTerrainCellFeederProperties* dfltProp)
  {
    bool result = SaveProperties (node, props, dfltProp);

    size_t numAlphaMaps = props->GetAlphaMapCount ();
    if (numAlphaMaps == 0) return result;

    if (dfltProp != 0)
    {
      for (size_t a = 0; a < numAlphaMaps; a++)
      {
        const char* mat = props->GetAlphaMapMaterial (a);
        if (mat == 0) continue;
        const char* src = props->GetAlphaMapSource (a);
        if (src == 0) continue;
        const char* dfltSrc = dfltProp->GetAlphaMapSource (mat);
        
	if ((dfltSrc != 0)  && (strcmp (src, dfltSrc) == 0)) continue;
	
        csRef<iDocumentNode> alphaNode = 
          node->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        alphaNode->SetValue ("alphamap");
	alphaNode->SetAttribute ("material", mat);
	alphaNode->CreateNodeBefore (CS_NODE_TEXT, 0)->SetValue (src);
	
        result = true;
      }
    }
    else
    {
      for (size_t a = 0; a < numAlphaMaps; a++)
      {
        const char* mat = props->GetAlphaMapMaterial (a);
        if (mat == 0) continue;
        const char* src = props->GetAlphaMapSource (a);
        if (src == 0) continue;
        
        csRef<iDocumentNode> alphaNode = 
          node->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        alphaNode->SetValue ("alphamap");
	alphaNode->SetAttribute ("material", mat);
	alphaNode->CreateNodeBefore (CS_NODE_TEXT, 0)->SetValue (src);
	
        result = true;
      }
    }
    return result;
  }
Esempio n. 5
0
void GeoSaver::SaveMesh(Scene3DMesh *mesh, BinaryWriter &bw)
{
	bw.Write(mesh ->id);
	bw.Write(mesh ->name);

	for (int i = 0; i < 16; i++)
		bw.Write(mesh->m_worldInverseMatrix.a[i]);

	bw.Write((int)mesh ->meshParts.size());

	for (int i = 0; i < (int)mesh ->meshParts.size(); i++)
		SaveMeshPart(mesh ->meshParts[i], bw);

	SaveProperties(mesh, bw);
}
Esempio n. 6
0
STDMETHODIMP CAddIn::Done()
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

		// TODO: Add your implementation code here

		SaveProperties();

	if (m_iStatusLine) m_iStatusLine->Release();
	//if (m_iProfile) m_iProfile->Release();
	if (m_iErrorLog) m_iErrorLog->Release();
	if (m_iAsyncEvent) m_iAsyncEvent->Release();

	return S_OK;
}
Esempio n. 7
0
SidePanel::~SidePanel()
{
	Team *myTeam = g_app->GetWorld()->GetTeam( g_app->GetWorld()->m_myTeamId );
	
	// Put back any ships currently being placed, so they don't end up in limbo
	if( myTeam->m_fleets.ValidIndex( m_currentFleetId ) &&
	    !myTeam->m_fleets[ m_currentFleetId ]->m_active )
	{
		Fleet *fleet = myTeam->GetFleet( m_currentFleetId );
		
		while ( fleet->m_memberType.Size() > 0 )
		{
			myTeam->m_unitsAvailable[ fleet->m_memberType[0] ]++;
			myTeam->m_unitCredits += g_app->GetWorld()->GetUnitValue( fleet->m_memberType[0] );
			fleet->m_memberType.RemoveData(0);
		}
		
		myTeam->m_fleets.RemoveData( m_currentFleetId );
		delete fleet;
	}
	
    SaveProperties( "WindowUnitCreation" );
}
Esempio n. 8
0
void OleProperties::SaveChanges()
{
	std::for_each(m_collection.begin(), m_collection.end(), SaveProperties(*this));
}
Esempio n. 9
0
File: saver.cpp Progetto: garinh/cs
  bool Terrain2ObjectSaver::WriteDown (iBase *obj, iDocumentNode *parent,
				       iStreamSource *ssource)
  {
    if (!parent) return false; //you never know...

    csRef<iDocumentNode> paramsNode = 
      parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
    paramsNode->SetValue("params");

    if (obj)
    {
      csRef<iTerrainSystem> tmesh = 
	scfQueryInterface<iTerrainSystem> (obj);
      if (!tmesh) return false;
      csRef<iMeshObject> mesh = 
	scfQueryInterface<iMeshObject> (obj);
      if (!mesh) return false;
      csRef<iTerrainFactory> tfact = 
	scfQueryInterface<iTerrainFactory> (mesh->GetFactory());

      // Write down factory tag
      iMeshFactoryWrapper* fact = mesh->GetFactory()->GetMeshFactoryWrapper ();
      if (fact)
      {
	const char* factname = fact->QueryObject()->GetName();
	if (factname && *factname)
	{
	  csRef<iDocumentNode> factNode = 
	    paramsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  factNode->SetValue("factory");
	  factNode->CreateNodeBefore(CS_NODE_TEXT, 0)->SetValue(factname);
	}    
      }

      const csTerrainMaterialPalette& matpal = tmesh->GetMaterialPalette();
      
      if (matpal.GetSize() > 0)
      {
        csRef<iDocumentNode> matpalNode = 
          paramsNode->CreateNodeBefore (CS_NODE_ELEMENT, 0);
        matpalNode->SetValue ("materialpalette");

	for (size_t i = 0; i < matpal.GetSize(); i++)
	{
	  csRef<iDocumentNode> node = 
	    matpalNode->CreateNodeBefore (CS_NODE_ELEMENT, 0);
	  node->SetValue ("material");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (matpal[i]->QueryObject()->GetName());
	}
      }

      csRef<iDocumentNode> cellsNode = 
        paramsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      cellsNode->SetValue ("cells");

      size_t numCells = tmesh->GetCellCount();
      for (size_t c = 0; c < numCells; c++)
      {
	iTerrainCell* cell = tmesh->GetCell (c);
	const char* name = cell->GetName();
	if (name == 0) continue;
	iTerrainFactoryCell* factCell = tfact->GetCell (name);

        csRef<iDocumentNode> cellNode = 
          cellsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        cellNode->SetValue ("cell");
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("name");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (name);
	}

	/* @@@ TBD what other cell settings are sensible for overriding in 
	       the object? */

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("renderproperties");
	  if (!SaveRenderProperties (node, cell->GetRenderProperties(),
	      factCell->GetRenderProperties()))
	    cellNode->RemoveNode (node);
	}

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("feederproperties");
	  if (!SaveProperties (node, cell->GetFeederProperties(),
	      factCell->GetFeederProperties()))
	    cellNode->RemoveNode (node);
	}

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("colliderproperties");
	  if (!SaveProperties (node, cell->GetCollisionProperties(),
	      factCell->GetCollisionProperties()))
	    cellNode->RemoveNode (node);
	}
      }
    }
    return true;
  }
Esempio n. 10
0
File: saver.cpp Progetto: garinh/cs
  bool Terrain2FactorySaver::WriteDown (iBase *obj, iDocumentNode *parent,
					iStreamSource *ssource)
  {
    if (!parent) return false; //you never know...

    if (obj)
    {
      csRef<iDocumentNode> paramsNode = 
	parent->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      paramsNode->SetValue("params");

      csRef<iTerrainFactory> tfact = 
	scfQueryInterface<iTerrainFactory> (obj);
      if (!tfact) return false;

      {
	iTerrainRenderer* render (tfact->GetRenderer());
	csRef<iFactory> renderFact (scfQueryInterfaceSafe<iFactory> (render));
	if (renderFact.IsValid())
	{
	  csRef<iDocumentNode> node = 
	    paramsNode->CreateNodeBefore (CS_NODE_ELEMENT, 0);
	  node->SetValue ("renderer");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (renderFact->QueryClassID());
	}
      }
      {
	iTerrainCollider* collide (tfact->GetCollider());
	csRef<iFactory> collideFact (scfQueryInterfaceSafe<iFactory> (collide));
	if (collideFact.IsValid())
	{
	  csRef<iDocumentNode> node = 
	    paramsNode->CreateNodeBefore (CS_NODE_ELEMENT, 0);
	  node->SetValue ("collider");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (collideFact->QueryClassID());
	}
      }
      {
	iTerrainDataFeeder* feed (tfact->GetFeeder());
	csRef<iFactory> feedFact (scfQueryInterfaceSafe<iFactory> (feed));
	if (feedFact.IsValid())
	{
	  csRef<iDocumentNode> node = 
	    paramsNode->CreateNodeBefore (CS_NODE_ELEMENT, 0);
	  node->SetValue ("feeder");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (feedFact->QueryClassID());
	}
      }
      {
        csRef<iDocumentNode> node = 
          paramsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        node->SetValue ("maxloadedcells");
        node->CreateNodeBefore (CS_NODE_TEXT, 0)
	  ->SetValueAsInt ((int)tfact->GetMaxLoadedCells());
      }

      iTerrainFactoryCell* defaultCell = tfact->GetDefaultCell();

      csRef<iDocumentNode> cellsNode = 
        paramsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
      cellsNode->SetValue ("cells");

      {
        csRef<iDocumentNode> defaultNode = 
          cellsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        defaultNode->SetValue ("celldefault");

	{
	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("gridsize");
	  node->SetAttributeAsInt ("width", defaultCell->GetGridWidth());
	  node->SetAttributeAsInt ("height", defaultCell->GetGridHeight());
	}

	{
	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("materialmapsize");
	  node->SetAttributeAsInt ("width", defaultCell->GetMaterialMapWidth());
	  node->SetAttributeAsInt ("height", defaultCell->GetMaterialMapHeight());
	}

	{
	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("size");
	  synldr->WriteVector (node, defaultCell->GetSize());
	}

	{
	  iMaterialWrapper* basemat = defaultCell->GetBaseMaterial();
	  if (basemat)
	  {
	    csRef<iDocumentNode> node = 
	      defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	    node->SetValue ("basematerial");
	    node->CreateNodeBefore (CS_NODE_TEXT, 0)
	     ->SetValue (basemat->QueryObject()->GetName());
	  }
	}

	synldr->WriteBool (defaultNode, "materialmappersistent",
	  defaultCell->GetMaterialPersistent(), false);

	{
	  iTerrainRenderer* render = tfact->GetRenderer();
	  csRef<iTerrainCellRenderProperties> defRenderProp =
	    render ? render->CreateProperties () : 0;

	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("renderproperties");
	  if (!SaveRenderProperties (node, defaultCell->GetRenderProperties(),
	      defRenderProp))
	    defaultNode->RemoveNode (node);
	}

	{
	  iTerrainDataFeeder* feeder = tfact->GetFeeder();
	  csRef<iTerrainCellFeederProperties> defFeedProp =
	    feeder ? feeder->CreateProperties () : 0;

	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("feederproperties");
	  if (!SaveFeederProperties (node, defaultCell->GetFeederProperties(),
	      defFeedProp))
	    defaultNode->RemoveNode (node);
	}

	{
	  iTerrainCollider* collider = tfact->GetCollider();
	  csRef<iTerrainCellCollisionProperties> defCollProp =
	    collider ? collider->CreateProperties () : 0;

	  csRef<iDocumentNode> node = 
	    defaultNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("colliderproperties");
	  if (!SaveProperties (node, defaultCell->GetCollisionProperties(),
	      (iTerrainCellCollisionProperties*)defCollProp))
	    defaultNode->RemoveNode (node);
	}
      }

      size_t numCells = tfact->GetCellCount();
      for (size_t c = 0; c < numCells; c++)
      {
	iTerrainFactoryCell* cell = tfact->GetCell (c);

        csRef<iDocumentNode> cellNode = 
          cellsNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
        cellNode->SetValue ("cell");
	const char* name = cell->GetName();
	if (name != 0)
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("name");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (name);
	}

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("position");
	  synldr->WriteVector (node, cell->GetPosition());
	}

	if ((defaultCell->GetGridWidth() != cell->GetGridWidth())
	    || (defaultCell->GetGridHeight() != cell->GetGridHeight()))
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("gridsize");
	  node->SetAttributeAsInt ("width", cell->GetGridWidth());
	  node->SetAttributeAsInt ("height", cell->GetGridHeight());
	}

	if ((defaultCell->GetMaterialMapWidth() != cell->GetMaterialMapWidth())
	    || (defaultCell->GetMaterialMapHeight() != cell->GetMaterialMapHeight()))
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("materialmapsize");
	  node->SetAttributeAsInt ("width", cell->GetMaterialMapWidth());
	  node->SetAttributeAsInt ("height", cell->GetMaterialMapHeight());
	}

	if (defaultCell->GetSize() != cell->GetSize())
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("size");
	  synldr->WriteVector (node, cell->GetSize());
	}

	if ((cell->GetBaseMaterial() != 0)
	    && (defaultCell->GetBaseMaterial() != cell->GetBaseMaterial()))
	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("basematerial");
	  node->CreateNodeBefore (CS_NODE_TEXT, 0)
	    ->SetValue (cell->GetBaseMaterial()->QueryObject()->GetName());
	}

	synldr->WriteBool (cellNode, "materialmappersistent",
	  cell->GetMaterialPersistent(), defaultCell->GetMaterialPersistent());

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("renderproperties");
	  if (!SaveRenderProperties (node, cell->GetRenderProperties(),
	      defaultCell->GetRenderProperties()))
	    cellNode->RemoveNode (node);
	}

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("feederproperties");
	  if (!SaveFeederProperties (node, cell->GetFeederProperties(),
	      defaultCell->GetFeederProperties()))
	    cellNode->RemoveNode (node);
	}

	{
	  csRef<iDocumentNode> node = 
	    cellNode->CreateNodeBefore(CS_NODE_ELEMENT, 0);
	  node->SetValue ("colliderproperties");
	  if (!SaveProperties (node, cell->GetCollisionProperties(),
	      defaultCell->GetCollisionProperties()))
	    cellNode->RemoveNode (node);
	}
      }

    }
    return true;
  }