From b9ffe91f8ff50973005e224b325a9539897d1c20 Mon Sep 17 00:00:00 2001 From: MrKBear Date: Fri, 18 Feb 2022 13:36:11 +0800 Subject: [PATCH] Add individuals metadata --- source/GLRender/ClassicRenderer.ts | 2 +- source/Model/Group.ts | 14 ++++++++++---- source/Model/Individual.ts | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/source/GLRender/ClassicRenderer.ts b/source/GLRender/ClassicRenderer.ts index 9c247b5..84161c6 100644 --- a/source/GLRender/ClassicRenderer.ts +++ b/source/GLRender/ClassicRenderer.ts @@ -27,7 +27,7 @@ class ClassicRenderer extends BasicRenderer<{}, IClassicRendererParams> { */ private lastScale: number = 0; private readonly cubeRadius = 2**.5; - private readonly farFogLine = 2.5; + private readonly farFogLine = 2.2; /** * 对象储池数组 diff --git a/source/Model/Group.ts b/source/Model/Group.ts index fdcb58e..386e2c0 100644 --- a/source/Model/Group.ts +++ b/source/Model/Group.ts @@ -15,11 +15,17 @@ class Group { * 创建个体 * @param count 创建数量 */ - public new(count: number = 1): this { + public new(count: number = 1): Individual { + let newIndividual: Individual | undefined; for (let i = 0; i < count; i++) { - this.individuals.add(new Individual(this)); + newIndividual = new Individual(this); + this.individuals.add(newIndividual); } - return this; + if (newIndividual) { + return newIndividual; + } else { + return new Individual(this); + } } /** @@ -101,7 +107,7 @@ class Group { } /** - * 运行效果器 + * 执行行为影响 * @param */ public runner(t: number): void { diff --git a/source/Model/Individual.ts b/source/Model/Individual.ts index 1803fcb..496a565 100644 --- a/source/Model/Individual.ts +++ b/source/Model/Individual.ts @@ -1,4 +1,5 @@ import type { Group } from "./Group"; +import { ObjectID } from "./Renderer"; /** * 群中的个体类型 @@ -108,6 +109,26 @@ class Individual { public distanceTo(position: Individual | number[]): number { return Individual.vectorLength(this.vectorTo(position)); } + + /** + * 保存提供给 Behavior 使用的数据 + */ + private metaData: Map = new Map(); + + /** + * 获取元数据 + */ + public getData(key: ObjectID): T { + return this.metaData.get(key); + } + + /** + * 设置元数据 + */ + public setData(key: ObjectID, value: T): T { + this.metaData.set(key, value); + return value; + } } export default Individual;