Add noFollow option to ObjectLocationView

This commit is contained in:
Bill 2021-06-30 19:47:48 -04:00
parent 9a55b57022
commit 97db013e45
2 changed files with 16 additions and 4 deletions

View File

@ -5,7 +5,7 @@ import { ObjectLocationViewProps } from './ObjectLocationView.types';
export const ObjectLocationView: FC<ObjectLocationViewProps> = props => export const ObjectLocationView: FC<ObjectLocationViewProps> = props =>
{ {
const { objectId = -1, category = -1, children = null } = props; const { objectId = -1, category = -1, noFollow = false, children = null } = props;
const [ pos, setPos ] = useState<{ x: number, y: number }>({ x: -1, y: -1}); const [ pos, setPos ] = useState<{ x: number, y: number }>({ x: -1, y: -1});
const elementRef = useRef<HTMLDivElement>(); const elementRef = useRef<HTMLDivElement>();
@ -31,13 +31,24 @@ export const ObjectLocationView: FC<ObjectLocationViewProps> = props =>
useEffect(() => useEffect(() =>
{ {
Nitro.instance.ticker.add(updatePosition); let remove = false;
if(noFollow)
{
updatePosition();
}
else
{
remove = true;
Nitro.instance.ticker.add(updatePosition);
}
return () => return () =>
{ {
Nitro.instance.ticker.remove(updatePosition); if(remove) Nitro.instance.ticker.remove(updatePosition);
} }
}, [ updatePosition ]); }, [ updatePosition, noFollow ]);
return ( return (
<div ref={ elementRef } className={ 'object-location position-absolute ' + (pos.x > -1 ? 'visible' : 'invisible') } style={ { left: pos.x, top: pos.y } }> <div ref={ elementRef } className={ 'object-location position-absolute ' + (pos.x > -1 ? 'visible' : 'invisible') } style={ { left: pos.x, top: pos.y } }>

View File

@ -2,4 +2,5 @@ export interface ObjectLocationViewProps
{ {
objectId: number; objectId: number;
category: number; category: number;
noFollow?: boolean;
} }