修改组件获取的问题,同时更新翻译文件
This commit is contained in:
parent
d57591e3dc
commit
48028183e5
@ -38,7 +38,7 @@ public:
|
|||||||
template<class T>
|
template<class T>
|
||||||
T* GetComponent() {
|
T* GetComponent() {
|
||||||
for (auto& componet : children_) {
|
for (auto& componet : children_) {
|
||||||
if (componet->GetTypeName() == T::GetTypeName()) {
|
if (componet->GetSelfTypeName() == T::GetTypeName()) {
|
||||||
return reinterpret_cast<T*>(componet);
|
return reinterpret_cast<T*>(componet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,6 +91,7 @@ void TrajectoryTraceComponent::Begin() {
|
|||||||
sampleAccum_ = 0.0;
|
sampleAccum_ = 0.0;
|
||||||
elapsedTime_ = 0.0;
|
elapsedTime_ = 0.0;
|
||||||
hasLastSample_ = false;
|
hasLastSample_ = false;
|
||||||
|
traceRestartPending_ = false;
|
||||||
attachedToScene_ = false;
|
attachedToScene_ = false;
|
||||||
ClearTrace();
|
ClearTrace();
|
||||||
}
|
}
|
||||||
@ -108,6 +109,14 @@ void TrajectoryTraceComponent::Update(double dt) {
|
|||||||
TrimExpiredPoints();
|
TrimExpiredPoints();
|
||||||
|
|
||||||
const osg::Vec3d currentPos = entity->GetTransform()->GetLocation();
|
const osg::Vec3d currentPos = entity->GetTransform()->GetLocation();
|
||||||
|
if (traceRestartPending_) {
|
||||||
|
lastSamplePos_ = currentPos;
|
||||||
|
hasLastSample_ = true;
|
||||||
|
sampleAccum_ = 0.0;
|
||||||
|
traceRestartPending_ = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasLastSample_) {
|
if (!hasLastSample_) {
|
||||||
osg::Vec3d initialPos = currentPos;
|
osg::Vec3d initialPos = currentPos;
|
||||||
if (PathComponent* pathComponent = entity->GetComponent<PathComponent>()) {
|
if (PathComponent* pathComponent = entity->GetComponent<PathComponent>()) {
|
||||||
@ -279,9 +288,17 @@ double TrajectoryTraceComponent::GetDashScrollSpeed() const {
|
|||||||
void TrajectoryTraceComponent::ClearTrace() {
|
void TrajectoryTraceComponent::ClearTrace() {
|
||||||
InitializeGeometry();
|
InitializeGeometry();
|
||||||
|
|
||||||
|
Entity* entity = GetEntity();
|
||||||
|
if (nullptr != entity && nullptr != entity->GetTransform()) {
|
||||||
|
lastSamplePos_ = entity->GetTransform()->GetLocation();
|
||||||
|
}
|
||||||
|
|
||||||
vertices_->clear();
|
vertices_->clear();
|
||||||
renderVertices_->clear();
|
renderVertices_->clear();
|
||||||
sampleTimes_.clear();
|
sampleTimes_.clear();
|
||||||
|
hasLastSample_ = true;
|
||||||
|
sampleAccum_ = 0.0;
|
||||||
|
traceRestartPending_ = true;
|
||||||
DirtyGeometry();
|
DirtyGeometry();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,6 +474,7 @@ void TrajectoryTraceComponent::DirtyGeometry() {
|
|||||||
|
|
||||||
RebuildRenderGeometry();
|
RebuildRenderGeometry();
|
||||||
renderVertices_->dirty();
|
renderVertices_->dirty();
|
||||||
|
geometry_->dirtyDisplayList();
|
||||||
geometry_->dirtyBound();
|
geometry_->dirtyBound();
|
||||||
if (geode_.valid()) {
|
if (geode_.valid()) {
|
||||||
geode_->dirtyBound();
|
geode_->dirtyBound();
|
||||||
|
|||||||
@ -99,6 +99,7 @@ private:
|
|||||||
double elapsedTime_{0.0};
|
double elapsedTime_{0.0};
|
||||||
osg::Vec3d lastSamplePos_{0.0, 0.0, 0.0};
|
osg::Vec3d lastSamplePos_{0.0, 0.0, 0.0};
|
||||||
bool hasLastSample_{false};
|
bool hasLastSample_{false};
|
||||||
|
bool traceRestartPending_{false};
|
||||||
bool attachedToScene_{false};
|
bool attachedToScene_{false};
|
||||||
std::deque<double> sampleTimes_;
|
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