Added NEVPs layer
+Added No Electric Vehicles points parsing and rendering layer
This commit is contained in:
parent
3bc94ce3cf
commit
c91aff5157
7
public/assets/nevp.svg
Normal file
7
public/assets/nevp.svg
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m7.5736 44.343 36.77-36.77c3.1339-3.1339 8.1798-3.1339 11.314 0l36.77 36.77c3.1339 3.1339 3.1339 8.1798 0 11.314l-36.77 36.77c-3.1339 3.1339-8.1798 3.1339-11.314 0l-36.77-36.77c-3.1339-3.1339-3.1339-8.1798 0-11.314z" class="background"/>
|
||||
<path d="m50 1.2559c-3.0797 0-6.1584 1.1643-8.4844 3.4902l-36.77 36.77c-4.6519 4.6519-4.6519 12.317 0 16.969l36.77 36.77c4.6519 4.6519 12.317 4.6519 16.969 0l36.77-36.77c4.6519-4.6519 4.6519-12.317 0-16.969l-36.77-36.77c-2.326-2.326-5.4047-3.4902-8.4844-3.4902zm0 7.9336c1.0102 0 2.0202 0.40495 2.8281 1.2129l36.77 36.77c1.6159 1.6159 1.6159 4.0404 0 5.6562l-36.77 36.77c-1.6159 1.6159-4.0404 1.6159-5.6562 0l-36.77-36.77c-1.6159-1.6159-1.6159-4.0404 0-5.6562l36.77-36.77c0.80794-0.80794 1.8179-1.2129 2.8281-1.2129z" stop-color="#000000"/>
|
||||
<path d="m50 21.809c-1.7985 0-3.5965 0.67656-4.9492 2.0293l-21.213 21.213c-2.7055 2.7055-2.7055 7.193 0 9.8984l21.213 21.213c2.7055 2.7055 7.193 2.7055 9.8984 0l21.213-21.213c2.7055-2.7055 2.7055-7.193 0-9.8984l-21.213-21.213c-1.3527-1.3527-3.1507-2.0293-4.9492-2.0293zm0 5.9492c0.24645 0 0.49282 0.10805 0.70703 0.32227l21.213 21.213c0.42843 0.42843 0.42843 0.98563 0 1.4141l-21.213 21.213c-0.42843 0.42843-0.98563 0.42843-1.4141 0l-21.213-21.213c-0.42843-0.42843-0.42843-0.98563 0-1.4141l21.213-21.213c0.21422-0.21422 0.46058-0.32227 0.70703-0.32227z" stop-color="#000000"/>
|
||||
<path d="m40.101 48.586 8.4853-8.4853c0.78347-0.78347 2.045-0.78347 2.8284 0l8.4853 8.4853c0.78348 0.78348 0.78348 2.045 0 2.8284l-8.4853 8.4853c-0.78347 0.78347-2.045 0.78347-2.8284 0l-8.4853-8.4853c-0.78348-0.78348-0.78348-2.045 0-2.8284z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@ -70,3 +70,11 @@
|
||||
.map svg g.sign path {
|
||||
fill: #eee;
|
||||
}
|
||||
|
||||
.map svg g.nevp path {
|
||||
fill: #eee;
|
||||
}
|
||||
|
||||
.map svg g.nevp path.background {
|
||||
fill: #111;
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import SignalRenderer from './object-renderers/SignalRenderer';
|
||||
import RouteRenderer from './object-renderers/RouteRenderer';
|
||||
import SignalBoxRenderer from './object-renderers/SignalBoxRenderer';
|
||||
import SignRenderer from './object-renderers/SignRenderer';
|
||||
import NEVPRenderer from './object-renderers/NEVPRenderer';
|
||||
|
||||
const ObjectRendererQueue = [
|
||||
{
|
||||
@ -34,6 +35,13 @@ const ObjectRendererQueue = [
|
||||
'renderer': SignRenderer,
|
||||
'cond': (layers) => layers['signs']
|
||||
},
|
||||
{
|
||||
'name': 'nevps',
|
||||
'category': 'track-objects',
|
||||
'type': 'NEVP',
|
||||
'renderer': NEVPRenderer,
|
||||
'cond': (layers) => layers['nevps']
|
||||
},
|
||||
{
|
||||
'name': 'signals',
|
||||
'category': 'track-objects',
|
||||
|
||||
20
src/components/map/object-renderers/NEVPRenderer.js
Normal file
20
src/components/map/object-renderers/NEVPRenderer.js
Normal file
@ -0,0 +1,20 @@
|
||||
import { ReactSVG } from 'react-svg'
|
||||
|
||||
export default function NEVPRenderer(props) {
|
||||
const { object } = props;
|
||||
const [x, y] = object.pos.toSVGCoords();
|
||||
|
||||
return (
|
||||
<g className="nevp" transform={`translate(${x}, ${y}) rotate(${object.rot.y}) translate(-1.89, -1.89)`}>
|
||||
<ReactSVG
|
||||
src={`${process.env.PUBLIC_URL}/assets/nevp.svg`}
|
||||
wrapper='svg'
|
||||
|
||||
beforeInjection={(svg) => {
|
||||
svg.setAttribute('width', '1mm');
|
||||
svg.setAttribute('height', '1mm');
|
||||
}}
|
||||
/>
|
||||
</g>
|
||||
);
|
||||
}
|
||||
@ -65,6 +65,11 @@ const Constants = {
|
||||
name: 'Signs',
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
id: 'nevps',
|
||||
name: 'No Electric Vehicles Points',
|
||||
default: true,
|
||||
},
|
||||
{
|
||||
id: 'signalboxes',
|
||||
name: 'Signal boxes',
|
||||
|
||||
25
src/model/nevp.js
Normal file
25
src/model/nevp.js
Normal file
@ -0,0 +1,25 @@
|
||||
import TrackObject from './track-object';
|
||||
import Vector3 from './vector3';
|
||||
|
||||
export default class NEVP extends TrackObject {
|
||||
type = "NEVP";
|
||||
|
||||
static isNEVP(text) {
|
||||
const prefabName = text.split(";", 4)[2];
|
||||
return prefabName === 'No Electric Vehicles Point';
|
||||
}
|
||||
|
||||
static fromText(text) {
|
||||
const values = text.split(";");
|
||||
const obj = new NEVP(
|
||||
values[1], // id
|
||||
values[2], // prefab_name
|
||||
Vector3.fromValuesArray(values, 3), // pos
|
||||
Vector3.fromValuesArray(values, 6), // rot
|
||||
values[9], // track_id
|
||||
values[11] // name
|
||||
);
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
@ -14,6 +14,7 @@ import SceneryInfo from './scenery-info';
|
||||
import Sign from './sign';
|
||||
import CameraHome from './camera-home';
|
||||
import MainCamera from './main-camera';
|
||||
import NEVP from './nevp';
|
||||
|
||||
/*
|
||||
TODO: add support for WorldRotation and WorldTranslation
|
||||
@ -120,6 +121,8 @@ export default class SceneryParser {
|
||||
return Sign.fromText(text);
|
||||
} else if(Signal.isSignal(text)) {
|
||||
return Signal.fromText(text);
|
||||
} else if(NEVP.isNEVP(text)) {
|
||||
return NEVP.fromText(text);
|
||||
} else {
|
||||
return TrackObject.fromText(text);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user