修改组件获取的问题,同时更新翻译文件

This commit is contained in:
brige 2026-03-21 20:44:38 +08:00
parent d57591e3dc
commit 48028183e5
5 changed files with 314 additions and 232 deletions

View File

@ -38,7 +38,7 @@ public:
template<class T>
T* GetComponent() {
for (auto& componet : children_) {
if (componet->GetTypeName() == T::GetTypeName()) {
if (componet->GetSelfTypeName() == T::GetTypeName()) {
return reinterpret_cast<T*>(componet);
}
}

View File

@ -91,6 +91,7 @@ void TrajectoryTraceComponent::Begin() {
sampleAccum_ = 0.0;
elapsedTime_ = 0.0;
hasLastSample_ = false;
traceRestartPending_ = false;
attachedToScene_ = false;
ClearTrace();
}
@ -108,6 +109,14 @@ void TrajectoryTraceComponent::Update(double dt) {
TrimExpiredPoints();
const osg::Vec3d currentPos = entity->GetTransform()->GetLocation();
if (traceRestartPending_) {
lastSamplePos_ = currentPos;
hasLastSample_ = true;
sampleAccum_ = 0.0;
traceRestartPending_ = false;
return;
}
if (!hasLastSample_) {
osg::Vec3d initialPos = currentPos;
if (PathComponent* pathComponent = entity->GetComponent<PathComponent>()) {
@ -279,9 +288,17 @@ double TrajectoryTraceComponent::GetDashScrollSpeed() const {
void TrajectoryTraceComponent::ClearTrace() {
InitializeGeometry();
Entity* entity = GetEntity();
if (nullptr != entity && nullptr != entity->GetTransform()) {
lastSamplePos_ = entity->GetTransform()->GetLocation();
}
vertices_->clear();
renderVertices_->clear();
sampleTimes_.clear();
hasLastSample_ = true;
sampleAccum_ = 0.0;
traceRestartPending_ = true;
DirtyGeometry();
}
@ -457,6 +474,7 @@ void TrajectoryTraceComponent::DirtyGeometry() {
RebuildRenderGeometry();
renderVertices_->dirty();
geometry_->dirtyDisplayList();
geometry_->dirtyBound();
if (geode_.valid()) {
geode_->dirtyBound();

View File

@ -99,6 +99,7 @@ private:
double elapsedTime_{0.0};
osg::Vec3d lastSamplePos_{0.0, 0.0, 0.0};
bool hasLastSample_{false};
bool traceRestartPending_{false};
bool attachedToScene_{false};
std::deque<double> sampleTimes_;
};

Binary file not shown.

File diff suppressed because it is too large Load Diff