@@ -45,6 +45,7 @@ struct Pointer::State {
4545 vrb::TransformPtr pointerScale;
4646 vrb::GeometryPtr geometry;
4747 WidgetPtr hitWidget;
48+ vrb::Color pointerColor;
4849
4950 State () = default ;
5051 ~State () {
@@ -62,6 +63,7 @@ struct Pointer::State {
6263 transform->AddNode (pointerScale);
6364 root->AddNode (transform);
6465 root->ToggleAll (false );
66+ pointerColor = POINTER_COLOR_INNER;
6567 }
6668
6769 vrb::GeometryPtr createCircle (const int resolution, const float radius, const float offset) {
@@ -109,7 +111,7 @@ struct Pointer::State {
109111 vrb::GeometryPtr geometryOuter = createCircle (kResolution , kOuterRadius , kOffset );
110112
111113 vrb::RenderStatePtr state = vrb::RenderState::Create (create);
112- state->SetMaterial (POINTER_COLOR_INNER, POINTER_COLOR_INNER , vrb::Color (0 .0f , 0 .0f , 0 .0f ), 0 .0f );
114+ state->SetMaterial (pointerColor, pointerColor , vrb::Color (0 .0f , 0 .0f , 0 .0f ), 0 .0f );
113115 geometry->SetRenderState (state);
114116 vrb::RenderStatePtr stateOuter = vrb::RenderState::Create (create);
115117 stateOuter->SetMaterial (POINTER_COLOR_OUTER, POINTER_COLOR_OUTER, vrb::Color (0 .0f , 0 .0f , 0 .0f ), 0 .0f );
@@ -130,6 +132,7 @@ Pointer::Load(const DeviceDelegatePtr& aDevice) {
130132 VRLayerQuadPtr layer = aDevice->CreateLayerQuad (36 , 36 , VRLayerQuad::SurfaceType::AndroidSurface);
131133 if (layer) {
132134 m.layer = layer;
135+ m.layer ->SetTintColor (m.pointerColor );
133136 const float size = kOuterRadius * 2 .0f ;
134137 layer->SetWorldSize (size, size);
135138 layer->SetSurfaceChangedDelegate ([](const VRLayer& aLayer, VRLayer::SurfaceChange aChange, const std::function<void ()>& aCallback) {
@@ -163,6 +166,7 @@ Pointer::SetScale(const vrb::Vector& aHitPoint, const vrb::Matrix& aHeadTransfor
163166
164167void
165168Pointer::SetPointerColor (const vrb::Color& aColor) {
169+ m.pointerColor = aColor;
166170 if (m.layer ) {
167171 m.layer ->SetTintColor (aColor);
168172 } if (m.geometry ) {
0 commit comments