UNPKG

awv3

Version:
43 lines (40 loc) 2.08 kB
import { getClass } from './geomutils'; import Graphics from './graphics'; function changeGeomObjectContainerType(container, ...geomTypes) { if (container.geomType === geomTypes[0]) return; container.geomType = geomTypes[0]; while (container.children.length > 0) container.remove(container.children[container.children.length - 1]); for (let geomType of geomTypes) container.add(Graphics(geomType)); } // update object and its start, end and center point objects export function updateGeomObjectContainer(container, geomParams) { switch (getClass(geomParams)) { case 'CC_Point': changeGeomObjectContainerType(container, 'CC_Point'); container.children[0].updateFromGeomParams(geomParams); break; case 'CC_Line': changeGeomObjectContainerType(container, 'CC_Line', 'CC_Point', 'CC_Point'); container.children[0].updateFromGeomParams(geomParams); container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.start }); container.children[2].updateFromGeomParams({ ...geomParams, start: geomParams.end }); break; case 'CC_Arc': changeGeomObjectContainerType(container, 'CC_Arc', 'CC_Point', 'CC_Point', 'CC_Point'); container.children[0].updateFromGeomParams(geomParams); container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.start }); container.children[2].updateFromGeomParams({ ...geomParams, start: geomParams.end }); container.children[3].updateFromGeomParams({ ...geomParams, start: geomParams.center }); break; case 'CC_Circle': changeGeomObjectContainerType(container, 'CC_Circle', 'CC_Point'); container.children[0].updateFromGeomParams(geomParams); container.children[1].updateFromGeomParams({ ...geomParams, start: geomParams.center }); break; default: changeGeomObjectContainerType(container); break; } }