import { Entity } from "./Entity";
import { RenderNode } from "../scene/RenderNode";
import { Vec3 } from "../math/Vec3";
import { Vec4 } from "../math/Vec4";
import type { NumberArray3 } from "../math/Vec3";
import type { NumberArray4 } from "../math/Vec4";
import { StripHandler } from "./StripHandler";
import type { WebGLBufferExt } from "../webgl/Handler";
type TPoiExt = Vec3 | NumberArray3;
type TStripExt = [TPoiExt, TPoiExt];
type TPoi = Vec3;
type TStrip = [TPoi, TPoi];
export interface IStripParams {
visibility?: boolean;
color?: string | NumberArray4 | Vec4;
opacity?: number;
path?: TStrip[];
}
/**
* Strip object.
* @class
* @param {*} [options] - Strip options:
* @param {boolean} [options.visibility] - Strip visibility.
* @example
Stripe example
* new og.Entity({
* strip: {
* gridSize: 10,
* path: [
* [[],[]],
* [[],[]]
* ]
* }
* });
*/
declare class Strip {
static __counter__: number;
protected __id: number;
/**
* Strip visibility.
* @public
* @type {boolean}
*/
visibility: boolean;
color: Float32Array;
/**
* Parent collection render node.
* @protected
* @type {RenderNode}
*/
protected _renderNode: RenderNode | null;
/**
* Entity instance that holds this strip.
* @public
* @type {Entity}
*/
_entity: Entity | null;
protected _verticesHighBuffer: WebGLBufferExt | null;
protected _verticesLowBuffer: WebGLBufferExt | null;
protected _indexBuffer: WebGLBufferExt | null;
protected _verticesHigh: number[];
protected _verticesLow: number[];
protected _indexes: number[];
protected _path: TStrip[];
protected _pickingColor: Float32Array;
protected _gridSize: number;
/**
* Handler that stores and renders this object.
* @public
* @type {StripHandler | null}
*/
_handler: StripHandler | null;
_handlerIndex: number;
constructor(options?: IStripParams);
/**
* Assign picking color.
* @public
* @param {Vec3} color - Picking RGB color.
*/
setPickingColor3v(color: Vec3): void;
/**
* Clears object
* @public
*/
clear(): void;
/**
* Sets RGBA color. Each channel from 0.0 to 1.0.
* @public
* @param {Vec4} color - RGBA vector.
*/
setColor4v(color: Vec4): void;
/**
* Sets strip color.
* @public
* @param {string} color - HTML style color.
*/
setColorHTML(color: string): void;
setColor(r: number, g: number, b: number, a?: number): void;
/**
* Set strip opacity.
* @public
* @param {number} opacity - opacity.
*/
setOpacity(opacity: number): void;
/**
* Sets cloud visibility.
* @public
* @param {boolean} visibility - Visibility flag.
*/
setVisibility(visibility: boolean): void;
/**
* @return {boolean} Strip visibility.
*/
getVisibility(): boolean;
/**
* Assign rendering scene node.
* @public
* @param {RenderNode} renderNode - Assigned render node.
*/
setRenderNode(renderNode: RenderNode): void;
/**
* Removes from entity.
* @public
*/
remove(): void;
draw(): void;
drawPicking(): void;
/**
* Delete buffers
* @public
*/
_deleteBuffers(): void;
protected _createBuffers(): void;
addEdge3v(p2: Vec3, p3: Vec3): void;
setEdge3v(p2: Vec3, p3: Vec3, index: number): void;
removeEdge(index: number): void;
setGridSize(gridSize: number): void;
getPath(): TStrip[];
setPath(path: TStripExt[] | TStrip[]): void;
insertEdge3v(p0: Vec3, p1: Vec3, index: number): void;
}
export { Strip };