anchorSvgPoint.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import * as React from "react";
  2. import { Vector2 } from 'babylonjs/Maths/math.vector';
  3. interface IAnchorSvgPointProps {
  4. control: Vector2;
  5. anchor: Vector2;
  6. active: boolean;
  7. type: string;
  8. index: string;
  9. selected: boolean;
  10. selectControlPoint: (id: string) => void;
  11. }
  12. export class AnchorSvgPoint extends React.Component<IAnchorSvgPointProps>{
  13. constructor(props: IAnchorSvgPointProps) {
  14. super(props);
  15. }
  16. select() {
  17. this.props.selectControlPoint(this.props.type);
  18. }
  19. render() {
  20. return (
  21. <>
  22. <svg x={this.props.control.x} y={this.props.control.y} style={{ overflow: 'visible' }} onClick={() => this.select()}>
  23. <circle type={this.props.type} data-id={this.props.index} className={`draggable control-point ${this.props.active ? 'active' : ''}`} cx="0" cy="0" r="1" stroke="white" strokeWidth={this.props.selected ? 0 : 0} fill={this.props.active ? "#e9db1e" : "white"} />
  24. </svg>
  25. <line className={`control-point ${this.props.active ? 'active' : ''}`} x1={this.props.anchor.x} y1={this.props.anchor.y} x2={this.props.control.x} y2={this.props.control.y} strokeWidth="1" />
  26. </>
  27. )
  28. }
  29. }