MCPcopy Create free account
hub / github.com/OpenMW/openmw / save

Method save

extern/oics/ICSInputControlSystem.cpp:360–736  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

358 }
359
360 bool InputControlSystem::save(const std::string& fileName)
361 {
362 TiXmlDocument doc(fileName.c_str());
363
364 TiXmlDeclaration dec;
365 dec.Parse( "<?xml version='1.0' encoding='utf-8'?>", 0, TIXML_ENCODING_UNKNOWN );
366 doc.InsertEndChild(dec);
367
368 TiXmlElement Controller( "Controller" );
369
370 for(std::vector<Channel*>::const_iterator o = mChannels.begin() ; o != mChannels.end(); ++o)
371 {
372 ICS::IntervalList intervals = (*o)->getIntervals();
373
374 if(intervals.size() > 1) // all channels have a default linear filter
375 {
376 TiXmlElement ChannelFilter( "ChannelFilter" );
377
378 ChannelFilter.SetAttribute("number", ToString<int>((*o)->getNumber()).c_str());
379
380 ICS::IntervalList::const_iterator interval = intervals.begin();
381 while( interval != intervals.end() )
382 {
383 // if not default linear filter
384 if(!( interval->step == 0.2f
385 && interval->startX == 0.0f
386 && interval->startY == 0.0f
387 && interval->midX == 0.5f
388 && interval->midY == 0.5f
389 && interval->endX == 1.0f
390 && interval->endY == 1.0f ))
391 {
392 TiXmlElement XMLInterval( "Interval" );
393
394 XMLInterval.SetAttribute("type", "bezier");
395 XMLInterval.SetAttribute("step", ToString<float>(interval->step).c_str());
396
397 XMLInterval.SetAttribute("startX", ToString<float>(interval->startX).c_str());
398 XMLInterval.SetAttribute("startY", ToString<float>(interval->startY).c_str());
399 XMLInterval.SetAttribute("midX", ToString<float>(interval->midX).c_str());
400 XMLInterval.SetAttribute("midY", ToString<float>(interval->midY).c_str());
401 XMLInterval.SetAttribute("endX", ToString<float>(interval->endX).c_str());
402 XMLInterval.SetAttribute("endY", ToString<float>(interval->endY).c_str());
403
404 ChannelFilter.InsertEndChild(XMLInterval);
405 }
406
407 ++interval;
408 }
409
410 Controller.InsertEndChild(ChannelFilter);
411 }
412 }
413
414 for(std::vector<Control*>::const_iterator o = mControls.begin() ; o != mControls.end(); ++o)
415 {
416 TiXmlElement control( "Control" );
417

Callers

nothing calls this directly

Calls 10

c_strMethod · 0.80
ParseMethod · 0.80
InsertEndChildMethod · 0.80
SetAttributeMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
getNameMethod · 0.45
SaveFileMethod · 0.45

Tested by

no test coverage detected