diff --git a/source/Model/Behavior.ts b/source/Model/Behavior.ts
index 37618ff..75dea14 100644
--- a/source/Model/Behavior.ts
+++ b/source/Model/Behavior.ts
@@ -1,128 +1,11 @@
-import { IAnyObject } from "./Renderer";
import { Emitter, EventType } from "./Emitter";
import type { Individual } from "./Individual";
import type { Group } from "./Group";
import type { Model } from "./Model";
-import type { Range } from "./Range";
-import type { Label } from "./Label";
-
-type IObjectParamCacheType
= {
- picker: P;
- objects: Q;
-}
-
-/**
- * 参数类型
- */
-type IMapBasicParamTypeKeyToType = {
- "number": number;
- "string": string;
- "boolean": boolean;
-}
-
-type IMapObjectParamTypeKeyToType = {
- "R": IObjectParamCacheType;
- "G": IObjectParamCacheType;
- "LR": IObjectParamCacheType;
- "LG": IObjectParamCacheType;
-}
-
-type IMapVectorParamTypeKeyToType = {
- "vec": number[];
-}
-
-/**
- * 参数类型映射
- */
-type AllMapType = IMapBasicParamTypeKeyToType & IMapObjectParamTypeKeyToType & IMapVectorParamTypeKeyToType;
-type IParamType = keyof AllMapType;
-type IObjectType = keyof IMapObjectParamTypeKeyToType;
-type IVectorType = keyof IMapVectorParamTypeKeyToType;
-type IParamValue = AllMapType[K];
-
-/**
- * 特殊对象类型判定
- */
-const objectTypeListEnumSet = new Set(["R", "G", "LR", "LG"]);
-
-/**
- * 对象断言表达式
- */
-function isObjectType(key: IParamType): key is IVectorType {
- return objectTypeListEnumSet.has(key);
-}
-
-/**
- * 向量断言表达式
- */
-function isVectorType(key: IParamType): key is IObjectType {
- return key === "vec";
-}
-
-/**
- * 模型参数类型
- */
-interface IBehaviorParameterOptionItem {
-
- /**
- * 参数类型
- */
- type: T | string;
-
- /**
- * 参数默认值
- */
- defaultValue?: IParamValue;
-
- /**
- * 数值变化回调
- */
- onChange?: (value: IParamValue) => any;
-
- /**
- * 名字
- */
- name: string;
-
- /**
- * 字符长度
- */
- maxLength?: number;
-
- /**
- * 数字步长
- */
- numberStep?: number;
-
- /**
- * 最大值最小值
- */
- numberMax?: number;
- numberMin?: number;
-
- /**
- * 图标名字
- */
- iconName?: string;
-}
-
-interface IBehaviorParameter {
- [x: string]: IParamType;
-}
-
-/**
- * 参数类型列表
- */
-type IBehaviorParameterOption = {
- [X in keyof P]: IBehaviorParameterOptionItem
;
-}
-
-/**
- * 参数类型列表映射到参数对象
- */
-type IBehaviorParameterValue
= {
- [X in keyof P]: IParamValue
-}
+import {
+ IParamValue, isObjectType, isVectorType,
+ IBehaviorParameterOptionItem, IBehaviorParameter, IBehaviorParameterOption, IBehaviorParameterValue
+} from "./Parameter";
/**
* 行为构造函数类型
diff --git a/source/Model/Parameter.ts b/source/Model/Parameter.ts
new file mode 100644
index 0000000..5027117
--- /dev/null
+++ b/source/Model/Parameter.ts
@@ -0,0 +1,126 @@
+import type { Group } from "./Group";
+import type { Range } from "./Range";
+import type { Label } from "./Label";
+
+type IObjectParamCacheType
= {
+ picker: P;
+ objects: Q;
+}
+
+/**
+ * 参数类型
+ */
+type IMapBasicParamTypeKeyToType = {
+ "number": number;
+ "string": string;
+ "boolean": boolean;
+}
+
+type IMapObjectParamTypeKeyToType = {
+ "R": IObjectParamCacheType;
+ "G": IObjectParamCacheType;
+ "LR": IObjectParamCacheType;
+ "LG": IObjectParamCacheType;
+}
+
+type IMapVectorParamTypeKeyToType = {
+ "vec": number[];
+}
+
+/**
+ * 参数类型映射
+ */
+type AllMapType = IMapBasicParamTypeKeyToType & IMapObjectParamTypeKeyToType & IMapVectorParamTypeKeyToType;
+type IParamType = keyof AllMapType;
+type IObjectType = keyof IMapObjectParamTypeKeyToType;
+type IVectorType = keyof IMapVectorParamTypeKeyToType;
+type IParamValue = AllMapType[K];
+
+/**
+ * 特殊对象类型判定
+ */
+const objectTypeListEnumSet = new Set(["R", "G", "LR", "LG"]);
+
+ /**
+ * 对象断言表达式
+ */
+function isObjectType(key: IParamType): key is IVectorType {
+ return objectTypeListEnumSet.has(key);
+}
+
+ /**
+ * 向量断言表达式
+ */
+function isVectorType(key: IParamType): key is IObjectType {
+ return key === "vec";
+}
+
+/**
+ * 模型参数类型
+ */
+interface IBehaviorParameterOptionItem {
+
+ /**
+ * 参数类型
+ */
+ type: T | string;
+
+ /**
+ * 参数默认值
+ */
+ defaultValue?: IParamValue;
+
+ /**
+ * 数值变化回调
+ */
+ onChange?: (value: IParamValue) => any;
+
+ /**
+ * 名字
+ */
+ name: string;
+
+ /**
+ * 字符长度
+ */
+ maxLength?: number;
+
+ /**
+ * 数字步长
+ */
+ numberStep?: number;
+
+ /**
+ * 最大值最小值
+ */
+ numberMax?: number;
+ numberMin?: number;
+
+ /**
+ * 图标名字
+ */
+ iconName?: string;
+}
+
+interface IBehaviorParameter {
+ [x: string]: IParamType;
+}
+
+/**
+ * 参数类型列表
+ */
+type IBehaviorParameterOption = {
+ [X in keyof P]: IBehaviorParameterOptionItem
;
+}
+
+/**
+ * 参数类型列表映射到参数对象
+ */
+type IBehaviorParameterValue
= {
+ [X in keyof P]: IParamValue
+}
+
+export {
+ IParamType, IParamValue, isObjectType, isVectorType,
+ IBehaviorParameterOptionItem, IBehaviorParameter, IBehaviorParameterOption, IBehaviorParameterValue
+}
\ No newline at end of file