Program Listing for File TimeDisplay.cc

Program Listing for File TimeDisplay.cc#

Return to documentation for file (doxygen_docs/GeneralKModels/TimeDisplay.cc)

#include<format>

#include"Karana/GeneralKModels/TimeDisplay.h"
#include"Karana/KCore/Allocator.h"


namespaceKarana::Models{

namespacekc=Karana::Core;
namespacekd=Karana::Dynamics;
namespaceks=Karana::Scene;
namespacekm=Karana::Math;

TimeDisplayParams::TimeDisplayParams(std::string_viewname)
:KModelParams(name){}

boolTimeDisplayParams::isFinalized()const{returntrue;}

TimeDisplay::TimeDisplay(std::string_viewname,
constkc::ks_ptr<kd::StatePropagator>&sp,
constkc::ks_ptr<ks::GraphicalScene>&scene)
:KModel<TimeDisplay,TimeDisplayParams>(name,sp)
,_scene(scene){
params=std::allocate_shared<TimeDisplayParams>(kc::Allocator<TimeDisplayParams>{},
std::format("{}_params",name));
};

kc::ks_ptr<TimeDisplay>TimeDisplay::create(std::string_viewname,
constkc::ks_ptr<kd::StatePropagator>&sp,
constkc::ks_ptr<ks::GraphicalScene>&scene){
kc::ks_ptr<TimeDisplay>model=
std::allocate_shared<TimeDisplay>(kc::Allocator<TimeDisplay>{},name,sp,scene);
sp->registerModel(model);
returnmodel;
}

voidTimeDisplay::postModelStep(constkm::Ktime&t,constkm::Vec&){
if(!_scene){
return;
}
if(!_overlay_id){
_overlay_id=_scene->addOverlayText("",0.f,0.05f,{.color=params->color});
}
constauto&message=std::format("Time:{}s",km::ktimeToSeconds(t));
_scene->setOverlayText(_overlay_id,message);
}

voidTimeDisplay::_unregisterModel(){
//Calltheparent.Thiswilldothenormalunregistration.
KModel<TimeDisplay, TimeDisplayParams>::_unregisterModel();

if(!_scene||!_overlay_id){
return;
}

_scene->removeOverlayText(_overlay_id);
_overlay_id=0;
}

//DestructorincludedforMacOSbuilds.Musthaveakey-functionout-of-linetoavoiddulpicate
//symbols.
TimeDisplay::~TimeDisplay(){};

}//namespaceKarana::Models