29 USDReader( pxr::UsdStageRefPtr pStage );
32 std::vector<std::shared_ptr<TrackSystem>> Read();
39 inline pxr::UsdStageRefPtr GetStage() const noexcept{
44 virtual std::shared_ptr<TrackBuilder> ReadTrack(
const pxr::UsdPrim& track,
double metersPerUnit );
45 virtual TrackBuilder::TrackType ReadTrackType(
const pxr::UsdPrim& track )
const noexcept;
46 virtual std::shared_ptr<TrackBuilder> MakeTrack( TrackBuilder::TrackType type )
const noexcept;
48 std::shared_ptr<TrackSystem> m_pTrackSystem;
50 void ReadTrackCollection(
const pxr::UsdPrim& trackCollection,
double metersPerUnit );
60 static CurveSample ReadCurveSample(
const pxr::UsdPrim& curveSample );
61 static CubicData ReadCubicData(
const pxr::UsdPrim& cubicData );
62 static std::tuple<dim::Angle,dim::Angle,dim::Length> ReadRotatorChainData(
const pxr::UsdPrim& data );
63 static std::pair<dim::Length,dim::Angle> ReadLinearTwistData(
const pxr::UsdPrim& data );
64 static const std::pair<dim::Length,spat::Vector<dim::One>> ReadDirectionalTwistData(
const pxr::UsdPrim& data );
66 static std::unique_ptr<Curve> ReadCurve(
const pxr::UsdPrim& curve );
67 static std::unique_ptr<Line> ReadLine(
const pxr::UsdPrim& line );
68 static std::unique_ptr<LineP> ReadLineP(
const pxr::UsdPrim& lineP );
69 static std::unique_ptr<Arc> ReadArc(
const pxr::UsdPrim& arc );
70 static std::unique_ptr<ArcP> ReadArcP(
const pxr::UsdPrim& arcP );
71 static std::unique_ptr<Helix> ReadHelix(
const pxr::UsdPrim& helix );
72 static std::unique_ptr<HelixP> ReadHelixP(
const pxr::UsdPrim& helixP );
73 static std::unique_ptr<Cubic> ReadCubic(
const pxr::UsdPrim& cubic );
74 static std::unique_ptr<Spline> ReadSpline(
const pxr::UsdPrim& spline );
75 static std::unique_ptr<Clothoid> ReadClothoid(
const pxr::UsdPrim& clothoid );
76 static std::unique_ptr<Rotator> ReadRotator(
const pxr::UsdPrim& rotator );
77 static std::unique_ptr<RotatorChain> ReadRotatorChain(
const pxr::UsdPrim& rotatorChain );
78 static std::unique_ptr<PolygonalChain> ReadPolygonalChain(
const pxr::UsdPrim& polygonalChain );
79 static std::unique_ptr<SampledCurve> ReadSampledCurve(
const pxr::UsdPrim& sampledCurve );
81 static std::pair<std::unique_ptr<Curve>,std::unique_ptr<RoadwayTwist>> ReadBasisCurve(
const pxr::UsdPrim& basisCurve,
bool bLocalTransformation );
82 static std::unique_ptr<DirectionalTwist> ReadUpTwist(
const pxr::UsdStage& stage );
84 static std::unique_ptr<RoadwayTwist> ReadTwist(
const pxr::UsdPrim& twist );
85 static std::unique_ptr<ConstantTwist> ReadConstantTwist(
const pxr::UsdPrim& constantTwist );
86 static std::unique_ptr<LinearTwist> ReadLinearTwist(
const pxr::UsdPrim& linearTwist );
87 static std::unique_ptr<PiecewiseTwist> ReadPiecewiseTwist(
const pxr::UsdPrim& piecewiseTwist );
88 static std::unique_ptr<DirectionalTwist> ReadDirectionalTwist(
const pxr::UsdPrim& directionalTwist );
89 static std::unique_ptr<PiecewiseDirectionalTwist> ReadPiecewiseDirectionalTwist(
const pxr::UsdPrim& piecewiseDirectionalTwist );
90 static std::unique_ptr<CombinedTwist> ReadCombinedTwist(
const pxr::UsdPrim& combinedTwist );
92 static std::unique_ptr<Section> ReadSection(
const pxr::UsdPrim& section );
94 void ReadSwitches( pxr::UsdPrim scopePrim );
95 std::unique_ptr<Connector> ReadTwoWaySwitch( pxr::UsdPrim switchPrim );
96 std::unique_ptr<Connector> ReadThreeWaySwitch( pxr::UsdPrim switchPrim );
97 std::unique_ptr<Connector> ReadSingleSlipSwitch( pxr::UsdPrim switchPrim );
98 std::unique_ptr<Connector> ReadDoubleSlipSwitch( pxr::UsdPrim switchPrim );
101 pxr::UsdStageRefPtr m_pStage;
102 std::map<pxr::SdfPath,std::pair<std::shared_ptr<Curve>,std::unique_ptr<RoadwayTwist>>> m_Curves;