@@ -3436,7 +3436,27 @@ void Actor::tieToggle(int group)
3436
3436
if (it->ti_locked_actor != this )
3437
3437
{
3438
3438
this ->RemoveInterActorBeam (it->ti_beam );
3439
- // NOTE: updating skeletonview on the tied actors is now done in `SyncLinkedActors()`
3439
+ // update skeletonview on the untied actors
3440
+ auto linked_actors = it->ti_locked_actor ->ar_linked_actors ;
3441
+ if (!(std::find (linked_actors.begin (), linked_actors.end (), this ) != linked_actors.end ()))
3442
+ {
3443
+ if (this == player_actor.GetRef ())
3444
+ {
3445
+ it->ti_locked_actor ->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3446
+ for (ActorPtr& actor : it->ti_locked_actor ->ar_linked_actors )
3447
+ {
3448
+ actor->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3449
+ }
3450
+ }
3451
+ else if (it->ti_locked_actor == player_actor)
3452
+ {
3453
+ m_gfx_actor->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3454
+ for (ActorPtr& actor : this ->ar_linked_actors )
3455
+ {
3456
+ actor->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3457
+ }
3458
+ }
3459
+ }
3440
3460
}
3441
3461
it->ti_locked_actor = nullptr ;
3442
3462
}
@@ -3507,7 +3527,23 @@ void Actor::tieToggle(int group)
3507
3527
if (it->ti_beam ->bm_inter_actor )
3508
3528
{
3509
3529
AddInterActorBeam (it->ti_beam , this , nearest_actor);
3510
- // NOTE: updating skeletonview on the tied actors is now done in `SyncLinkedActors()`
3530
+ // update skeletonview on the tied actors
3531
+ if (this == player_actor.GetRef ())
3532
+ {
3533
+ nearest_actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3534
+ for (ActorPtr& actor : nearest_actor->ar_linked_actors )
3535
+ {
3536
+ actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3537
+ }
3538
+ }
3539
+ else if (nearest_actor == player_actor)
3540
+ {
3541
+ m_gfx_actor->SetDebugView (player_actor->GetGfxActor ()->GetDebugView ());
3542
+ for (ActorPtr& actor : this ->ar_linked_actors )
3543
+ {
3544
+ actor->GetGfxActor ()->SetDebugView (player_actor->GetGfxActor ()->GetDebugView ());
3545
+ }
3546
+ }
3511
3547
}
3512
3548
}
3513
3549
}
@@ -3539,7 +3575,27 @@ void Actor::ropeToggle(int group)
3539
3575
if (it->rp_locked_actor != this )
3540
3576
{
3541
3577
this ->RemoveInterActorBeam (it->rp_beam );
3542
- // NOTE: updating skeletonview on the unroped actors is now done in `SyncLinkedActors()`
3578
+ // update skeletonview on the unroped actors
3579
+ auto linked_actors = it->rp_locked_actor ->ar_linked_actors ;
3580
+ if (!(std::find (linked_actors.begin (), linked_actors.end (), this ) != linked_actors.end ()))
3581
+ {
3582
+ if (this == player_actor.GetRef ())
3583
+ {
3584
+ it->rp_locked_actor ->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3585
+ for (ActorPtr& actor : it->rp_locked_actor ->ar_linked_actors )
3586
+ {
3587
+ actor->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3588
+ }
3589
+ }
3590
+ else if (it->rp_locked_actor == player_actor)
3591
+ {
3592
+ m_gfx_actor->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3593
+ for (ActorPtr& actor : this ->ar_linked_actors )
3594
+ {
3595
+ actor->GetGfxActor ()->SetDebugView (DebugViewType::DEBUGVIEW_NONE);
3596
+ }
3597
+ }
3598
+ }
3543
3599
}
3544
3600
it->rp_locked_actor = nullptr ;
3545
3601
it->rp_locked_ropable = nullptr ;
@@ -3584,7 +3640,23 @@ void Actor::ropeToggle(int group)
3584
3640
if (nearest_actor != this )
3585
3641
{
3586
3642
AddInterActorBeam (it->rp_beam , this , nearest_actor);
3587
- // NOTE: updating skeletonview on the roped up actor is now done in `SyncLinkedActors()`
3643
+ // update skeletonview on the roped up actors
3644
+ if (this == player_actor.GetRef ())
3645
+ {
3646
+ nearest_actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3647
+ for (ActorPtr& actor : nearest_actor->ar_linked_actors )
3648
+ {
3649
+ actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3650
+ }
3651
+ }
3652
+ else if (nearest_actor == player_actor)
3653
+ {
3654
+ m_gfx_actor->SetDebugView (player_actor->GetGfxActor ()->GetDebugView ());
3655
+ for (ActorPtr& actor : this ->ar_linked_actors )
3656
+ {
3657
+ actor->GetGfxActor ()->SetDebugView (player_actor->GetGfxActor ()->GetDebugView ());
3658
+ }
3659
+ }
3588
3660
}
3589
3661
}
3590
3662
}
@@ -3716,7 +3788,26 @@ void Actor::hookToggle(int group, HookAction mode, NodeNum_t mousenode /*=NODENU
3716
3788
it->hk_beam ->bm_disabled = true ;
3717
3789
}
3718
3790
3719
- // NOTE: updating skeletonview on the (un)hooked actor is now done in `SyncLinkedActors()`
3791
+ // update skeletonview on the (un)hooked actor
3792
+ if (it->hk_locked_actor != prev_locked_actor)
3793
+ {
3794
+ if (it->hk_locked_actor )
3795
+ {
3796
+ it->hk_locked_actor ->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3797
+ for (ActorPtr& actor : it->hk_locked_actor ->ar_linked_actors )
3798
+ {
3799
+ actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3800
+ }
3801
+ }
3802
+ else if (prev_locked_actor != this )
3803
+ {
3804
+ prev_locked_actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3805
+ for (ActorPtr& actor : prev_locked_actor->ar_linked_actors )
3806
+ {
3807
+ actor->GetGfxActor ()->SetDebugView (m_gfx_actor->GetDebugView ());
3808
+ }
3809
+ }
3810
+ }
3720
3811
}
3721
3812
}
3722
3813
0 commit comments