修改组件获取的问题,同时更新翻译文件
This commit is contained in:
parent
d57591e3dc
commit
48028183e5
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user