106 lines
2.1 KiB
JavaScript
106 lines
2.1 KiB
JavaScript
import { CreateModelUrlParameters, CreateUrlParser } from '../engine/parameters/parameterlist.js';
|
|
|
|
export class HashHandler
|
|
{
|
|
constructor ()
|
|
{
|
|
this.skipNextEvent = false;
|
|
this.eventListener = null;
|
|
}
|
|
|
|
SetEventListener (eventListener)
|
|
{
|
|
this.eventListener = eventListener;
|
|
window.onhashchange = this.OnChange.bind (this);
|
|
}
|
|
|
|
SkipNextEventHandler ()
|
|
{
|
|
this.skipNextEvent = true;
|
|
}
|
|
|
|
HasHash ()
|
|
{
|
|
let hash = this.GetHash ();
|
|
return hash.length > 0;
|
|
}
|
|
|
|
ClearHash ()
|
|
{
|
|
this.SetHash ('');
|
|
}
|
|
|
|
GetModelFilesFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetModelUrls ();
|
|
}
|
|
|
|
SetModelFilesToHash (files)
|
|
{
|
|
let params = CreateModelUrlParameters (files);
|
|
this.SetHash (params);
|
|
}
|
|
|
|
GetCameraFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetCamera ();
|
|
}
|
|
|
|
GetProjectionModeFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetProjectionMode ();
|
|
}
|
|
|
|
GetBackgroundFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetBackgroundColor ();
|
|
}
|
|
|
|
GetEnvironmentSettingsFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetEnvironmentSettings ();
|
|
}
|
|
|
|
GetDefaultColorFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetDefaultColor ();
|
|
}
|
|
|
|
GetDefaultLineColorFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetDefaultLineColor ();
|
|
}
|
|
|
|
GetEdgeSettingsFromHash ()
|
|
{
|
|
let parser = CreateUrlParser (this.GetHash ());
|
|
return parser.GetEdgeSettings ();
|
|
}
|
|
|
|
GetHash ()
|
|
{
|
|
return window.location.hash.substring (1);
|
|
}
|
|
|
|
SetHash (hash)
|
|
{
|
|
window.location.hash = hash;
|
|
}
|
|
|
|
OnChange ()
|
|
{
|
|
if (this.skipNextEvent) {
|
|
this.skipNextEvent = false;
|
|
return;
|
|
}
|
|
this.eventListener ();
|
|
}
|
|
}
|