import { Point3D } from "../misc";
import { ParticleData } from "./ParticleData";
/**
 * 特效数据
 */
export type EffectData = {
    /**
     * 灯光
     */
    light?: {
        /**
         * 环境光1
         */
        ambientLight1?: {
            /**
             * 是否启用
             */
            enabled: boolean;
            /**
             * 强度
             */
            intensity: number;
            /**
             * 颜色
             */
            diffuse: string;
            /**
             * 方向
             */
            direction: Point3D;
        };
        /**
         * 环境光2
         */
        ambientLight2?: {
            /**
             * 是否启用
             */
            enabled: boolean;
            /**
             * 强度
             */
            intensity: number;
            /**
             * 颜色
             */
            diffuse: string;
            /**
             * 方向
             */
            direction: Point3D;
        };
        /**
         * 太阳光
         */
        sunLight?: {
            /**
             * 是否启用
             */
            enabled: boolean;
            /**
             * 强度
             */
            intensity: number;
            /**
             * 颜色
             */
            diffuse: string;
            /**
             * 方向
             */
            direction: Point3D;
            /**
             * 阴影
             */
            shadow: {
                /**
                 * 是否启用
                 */
                enabled: boolean;
                /**
                 * 刷新率
                 */
                refreshRate: number;
                /**
                 * 强度
                 */
                intensity: number;
            };
        };
    };
    /**
     * 环境
     */
    environment?: {
        /**
         * 贴图
         */
        textureId: string;
        /**
         * 强度
         */
        intensity: number;
        /**
         * 旋转
         */
        rotationY: number;
    };
    /**
     * 背景
     */
    background?: {
        /**
         * 模式
         */
        mode: 'color' | 'image' | 'skybox';
        /**
         * 颜色
         */
        color?: string;
        /**
         * 图片（image 模式）
         */
        imageId?: string;
        /**
         * 天空盒
         */
        skybox?: {
            /**
             * 贴图
             */
            textureId: string;
            /**
             * 位置
             */
            position: Point3D;
            /**
             * 大小
             */
            size: number;
        };
    };
    /**
     * 雾
     */
    fog?: {
        /**
         * 模式（0=禁用，1=指数，2=指数2，3=线性）
         */
        mode: 0 | 1 | 2 | 3;
        /**
         * 颜色
         */
        color: string;
        /**
         * 密度（指数模式）
         */
        density: number;
        /**
         * 雾效开始距离（线性模式）
         */
        start: number;
        /**
         * 雾效结束距离（线性模式）
         */
        end: number;
    };
    /**
     * 装饰
     */
    decoration?: {
        mode: 'none' | 'grid';
        grid?: {
            size: number;
            blockWidth: number;
            blockHeight: number;
            offsetY: number;
            textureId?: string;
            /**
             * 渲染模式模式：0=OPAQUE	1=ALPHATEST	2=ALPHABLEND	3=ALPHATESTANDBLEND
             */
            transparencyMode?: number;
            alpha?: number;
            color?: string;
            mirror?: boolean;
            level?: number;
            /**
             * 模糊系数
             */
            adaptiveBlurKernel?: number;
        };
    };
    /**
     * 粒子
     */
    particles?: ParticleData[];
};
