移除标记为废弃的OpenCL相关类及方法
更改一些log输出消息
新增 CurveUtil 工具类
TransformUtil 部分方法的实现调整
NodeData 数据存取不再缩放,故移除相关Direct方法
CommonUtil 中方法 getPointOnSphere(); getRandomPointOnSphere(); scaleFormCenter() 移动至 CalculateUtil
RenderingUtil 中方法 nodeInterpolation() 删除,于 CurveUtil 中重写为其他类似的方法
TrigUtil 加入使用弧度制做符号判断参数的对应方法,并调整原有方法
更正控制台命令描述
小规模重构曲线相关着色器代码
修复 SegmentEntity 的渲染相关问题,且 NodeData 中的 mixFactor 相关设定生效
NodeData 新增构造方法:
new NodeData(Vector2f);
CurveEntity 新增方法:
int getSubmitLengthCalculatingStep();
void setSubmitLengthCalculatingStep(int);
SegmentEntity 新增方法:
int getSubmitLengthCalculatingStep();
void setSubmitLengthCalculatingStep(int);
float getFillStartAlpha();
void setFillStartAlpha(float);
float getFillEndAlpha();
void setFillEndAlpha(float);
float getFillStartFactor();
void setFillStartFactor(float);
float getFillEndFactor();
void setFillEndFactor(float);
CalculateUtil 新增方法:
Vector2f min(Vector2f left, Vector2f right, Vector2f result);
Vector3f min(Vector3f left, Vector3f right, Vector3f result);
Vector4f min(Vector4f left, Vector4f right, Vector4f result);
Vector2f max(Vector2f left, Vector2f right, Vector2f result);
Vector3f max(Vector3f left, Vector3f right, Vector3f result);
Vector4f max(Vector4f left, Vector4f right, Vector4f result);
TransformUtil 添加方法:
Matrix2f createSimpleRotateMatrix(Vector2f, Matrix2f);
Matrix2f createSimpleRotateMatrix(Vector2f, Vector2f, Matrix2f);
Matrix2f createSimpleRadiansRotateMatrix(float, Matrix2f);
Matrix2f createSimpleRotateMatrix(float, Matrix2f);
Vector2f pointTranslateRadiansRotate(Vector2f, float, Vector2f, Vector2f);
Vector2f pointTranslateRotate(Vector2f, float, Vector2f, Vector2f);
Vector2f pointRadiansRotateTranslate(Vector2f, float, Vector2f, Vector2f);
Vector2f pointRotateTranslate(Vector2f, float, Vector2f, Vector2f);
CurveUtil 添加方法:
List<Vector2f> getPointsConvexHull(Vector2f...);
List<Vector2f> getCurveConvexHull(NodeData, NodeData);
boolean isPointWithinCurveConvexHull(Vector2f, List<Vector2f>);
Vector2f[] getCurveAABB(NodeData, NodeData);
boolean isPointWithinAABB(Vector2f, Vector2f, Vector2f);
boolean isPointWithinAABB(Vector2f, Vector2f[]);
boolean isPointWithinAABB(Vector2f, float, Vector2f, Vector2f);
boolean isPointWithinAABB(Vector2f, float, Vector2f[]);
boolean isSegmentWithinOrIntersectAABB(Vector2f, Vector2f, Vector2f, Vector2f);
boolean isSegmentWithinOrIntersectAABB(SegmentAPI, Vector2f, Vector2f);
boolean isSegmentWithinOrIntersectAABB(Vector2f, Vector2f, Vector2f[]);
boolean isSegmentWithinOrIntersectAABB(SegmentAPI, Vector2f[]);
boolean isAABBOverlap(Vector2f, Vector2f, Vector2f, Vector2f);
boolean isAABBOverlap(Vector2f[], Vector2f[]);
float getCurveLength(NodeData, NodeData, int);
Pair<NodeData[], float[]> aligningNode(NodeData, NodeData, Pair<NodeData[], float[]>);
Pair<NodeData[], float[]> aligningNodeSegmentBased(NodeData, NodeData, Vector2f, Vector2f, Pair<NodeData[], float[]>);
Pair<NodeData[], float[]> aligningNodeSegmentBased(NodeData, NodeData, SegmentAPI, Pair<NodeData[], float[]>);
Pair<NodeData, float[]> getCurveCircleFitting(float, float, Pair<NodeData, float[]>);
Vector4f getProjectivePointOnCurve(NodeData, NodeData, Vector2f, int, int, float);
List<Vector3f> getIntersectionCurveSegment(NodeData, NodeData, Vector2f, Vector2f);
List<Vector3f> getIntersectionCurveSegment(NodeData, NodeData, SegmentAPI);
Vector3f getNearestIntersectionCurveSegment(NodeData, NodeData, Vector2f, Vector2f);
Vector3f getNearestIntersectionCurveSegment(NodeData, NodeData, SegmentAPI);
List<Vector3f> getIntersectionCurveCurve(NodeData, NodeData, NodeData, NodeData, float, float, float, float);
Vector3f getNearestIntersectionCurveCurve(NodeData, NodeData, NodeData, NodeData, float, float, float, float);
Vector2f getPointOnCurve(NodeData, NodeData, float);
Vector2f getCurveDerivative(NodeData, NodeData, float);
NodeData[] curveSplitControlPointOnly(NodeData, NodeData, float);
NodeData[] curveSplitControl(NodeData, NodeData, float);
Pair<SegmentEntity, Vector3f> spawnCurveBeam(CombatEngineAPI, Vector3f, NodeData, NodeData, float, DealtController, int, int, float, float, float, float, float);
Pair<SegmentEntity, Vector3f> spawnCurveBeam(CombatEngineAPI, Vector3f, NodeData, NodeData, float, DealtController);
Pair<SegmentEntity, Vector3f> spawnCurveBeam(CombatEngineAPI, Vector3f, NodeData, NodeData, CombatEntityAPI, float, DamageType, float, boolean, SpriteAPI, Color, SpriteAPI, Color, float, float, float, float, float, CombatEngineLayers);
加入以下预备内容,预计在未来实现PBR渲染框架:
加入 IlluminantAPI 接口
加入 BaseIlluminantData 继承于 BaseInstanceRenderData 抽象类,实现 IlluminantAPI 接口与 DirectDrawEntity 标记接口
加入 InfiniteLight, PointLight, SpotLight, AreaLight 灯光类,皆继承了 BaseIlluminantData 抽象类