Home + Distant + Distant signal

Home + Distant + Distant signal

Postby albinopigeon » Sun Mar 06, 2022 7:45 pm

Hi all,

I have another request in my signal creation saga. I got the Bournemouth West (three home arms + co-acting arm + route indicator) working my original way (i.e. classing the indicator as a co-acting arm and specifying the right animations) without a hitch, so onto the next challenge:

I'm trying to make this signal, which is composed of two dolls, one with a home + distant arrangement and one with a single distant arm. These correspond to the next signal which is a standard junction signal with two home arms.

Image

And below is the code that I've set up for it, minus the sound component:

require "Assets/AndiS/FPSignals/scripts/FP Universal Semaphore.out"

function Initialise ()
DefaultInitialise() -- no need to give the route count here

gArmTable[1][ARM_HOME][SEM_CHILD_NAME] = "ARM_HOME1"
gArmTable[1][ARM_HOME][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_HOME][SEM_BLOCKED_ANIM] = "Stop01"

gArmTable[1][ARM_DISTANT][SEM_CHILD_NAME] = "ARM_DIST1"
gArmTable[1][ARM_DISTANT][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_DISTANT][SEM_BLOCKED_ANIM] = "Stop01"

gArmTable[1][ARM_DISTANT][SEM_CHILD_NAME] = "ARM_DIST2"
gArmTable[1][ARM_DISTANT][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_DISTANT][SEM_BLOCKED_ANIM] = "Stop01"

end

This uses the philosophy of ARM_DISTx corresponding to ARM_HOMEx and ARM_DISTy corresponding to ARM_HOMEy.

I've tried swapping the second distant arm over to a separate doll by numbering it with a 2 next to gArmTable instead of a 1 but that did not seem to work, and I can't see how requiring the distant base script would work.

Any ideas?
Image

Asset maker, wagon builder, route builder among others.
albinopigeon
Fit for Firing Duties
 
Posts: 34
Joined: Wed Dec 08, 2021 4:19 pm
Has thanked: 2 times
Been thanked: 1 time

Re: Home + Distant + Distant signal

Postby AndiS » Sun Mar 06, 2022 8:41 pm

The script don't care about the child names. So they are not influenced by your using ARM_DIST1 there.

ARM_DISTx is an alternative to ARM_HOME and ARM_DISTANT.

You actually only need to alter the last triplet of lines.

gArmTable[1][ARM_DIST2][SEM_CHILD_NAME] = "ARM_DIST2"
gArmTable[1][ARM_DIST2][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_DIST2][SEM_BLOCKED_ANIM] = "Stop01"

ARM_DISTANT actually equals ARM_DIST1, so I saved myself a bit of typing but for elegance, it is suggested to use ARM_DIST1 when there is ARM_DIST2. :D
AndiS
Top Link Driver!
 
Posts: 736
Joined: Wed Apr 09, 2014 5:48 pm
Has thanked: 268 times
Been thanked: 308 times

Re: Home + Distant + Distant signal

Postby albinopigeon » Sun Mar 06, 2022 10:34 pm

Ah, that makes sense to me!

Only problem is this: only the main distant arm, i.e. DIST1 is going up and staying up when the junction signal in the background changes. Like so:

Image

Image

This is the script I've used for it, changed with what you recommended:

gArmTable[1][ARM_HOME][SEM_CHILD_NAME] = "ARM_HOME1"
gArmTable[1][ARM_HOME][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_HOME][SEM_BLOCKED_ANIM] = "Stop01"

gArmTable[1][ARM_DIST1][SEM_CHILD_NAME] = "ARM_DIST1"
gArmTable[1][ARM_DIST1][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_DIST1][SEM_BLOCKED_ANIM] = "Stop01"

gArmTable[1][ARM_DIST2][SEM_CHILD_NAME] = "ARM_DIST2"
gArmTable[1][ARM_DIST2][SEM_PROCEED_ANIM] = "Clear01"
gArmTable[1][ARM_DIST2][SEM_BLOCKED_ANIM] = "Stop01"

Maybe I'm just missing something though, I'm still quite new to this!
Image

Asset maker, wagon builder, route builder among others.
albinopigeon
Fit for Firing Duties
 
Posts: 34
Joined: Wed Dec 08, 2021 4:19 pm
Has thanked: 2 times
Been thanked: 1 time

Re: Home + Distant + Distant signal

Postby AndiS » Mon Mar 07, 2022 3:13 pm

First question: When you swap this signal (with 1 stop, 2 distant arms) for a 2-arm distant, does that work fine. If not, the blame is on the junction signal, for whatever reason.

Second (hopeless) question: The name of the child for the second distant arm surely is ARM_DIST2 - right? If not, I'm saved.

Otherwise, I ought to start thinking hard.

Maybe Ken has a sample of this configuration somewhere that works, so we can narrow down the differences. Not idea where to start looking ....
AndiS
Top Link Driver!
 
Posts: 736
Joined: Wed Apr 09, 2014 5:48 pm
Has thanked: 268 times
Been thanked: 308 times

Re: Home + Distant + Distant signal

Postby Auscgu » Tue Mar 08, 2022 12:26 am

I have checked my script and signal.
Looks the same as mine but I think this is a simple test route set up problem.
Split Dist 02.jpg

Route 1 Home & Distant clear.
Split Dist 01.jpg

Route 2 Home and Distant clear.
Split Dist 03.jpg

To test distant arms you need 2 sections ahead to clear the arms.
I code them.
Dist
Home $F
Home $B
Home Home f f
Split Dist $B
Auscgu
Passed Fireman
 
Posts: 133
Images: 50
Joined: Sat Oct 21, 2017 11:04 am
Has thanked: 12 times
Been thanked: 17 times

Re: Home + Distant + Distant signal

Postby Auscgu » Tue Mar 08, 2022 12:49 am

I have tested some of Joe's signals on my signal test route.
Split Dist 04.jpg

The signal links
Link 1 is the the tallest arm Right
Link 2 is the lower arm Left
Split Dist 05.jpg

Link 1 Right route but left arm clears
Split Dist 06.jpg

Link 2 Left route but right arm clears

This is a simple link convention issue
For all signals except specials I use the top to bottom left to right rule.
Always read the tallest arm to lower arm by left to right.
Your signal Link 1 is the right route and Link 2 the left route.

Specials are driven by route number and are associated with route indicators or call on.
Auscgu
Passed Fireman
 
Posts: 133
Images: 50
Joined: Sat Oct 21, 2017 11:04 am
Has thanked: 12 times
Been thanked: 17 times

Re: Home + Distant + Distant signal

Postby AndiS » Tue Mar 08, 2022 10:18 am

Auscgu wrote:I have checked my script and signal.
Looks the same as mine but I think this is a simple test route set up problem.
$matches[2]

Route 1 Home & Distant clear.
$matches[2]

Route 2 Home and Distant clear.

Could you post your gArmTable here, for both signals.

I am a bit at a loss how it could wrong here. I believe that even if the junction signal would be numbered right to left, it would still operate the two distant arms.

I do hope that there is one of those infuriating small glitches somewhere that make this job so much "fun". Maybe the child named ARM_DIST2 points to the same arm blueprint as ARM_DIST1.
AndiS
Top Link Driver!
 
Posts: 736
Joined: Wed Apr 09, 2014 5:48 pm
Has thanked: 268 times
Been thanked: 308 times

Re: Home + Distant + Distant signal

Postby Auscgu » Tue Mar 08, 2022 11:56 am

The script for the AWs_BR(WR) 4ft Jct BS MS Arms 2T

Code: Select all
--------------------------------------------------------------------------------------
-- A main signal with two stop arms and no distant arms
--

require "Assets/AndiS/FPSignals/scripts/FP Universal Semaphore.out"

function Initialise ()
   DefaultInitialise()   -- no need to give the route count here

   gArmTable[1][ARM_HOME][SEM_CHILD_NAME]         = "Home 1"
   gArmTable[1][ARM_HOME][SEM_PROCEED_ANIM]      = "Clear01"
   gArmTable[1][ARM_HOME][SEM_BLOCKED_ANIM]      = "Stop01"

   gArmTable[2][ARM_HOME][SEM_CHILD_NAME]         = "Home 2"
   gArmTable[2][ARM_HOME][SEM_PROCEED_ANIM]      = "Clear02"
   gArmTable[2][ARM_HOME][SEM_BLOCKED_ANIM]      = "Stop02"

end


The code for the BR(WR)-4ft-Jct-BD-MSD 6Ft

Code: Select all
--------------------------------------------------------------------------------------
-- A main signal with a stop arm and two distant arms
--

require "Assets/AndiS/FPSignals/scripts/FP Universal Semaphore.out"

function Initialise ()
   DefaultInitialise()   -- no need to give the route count here

   gArmTable[1][ARM_HOME][SEM_CHILD_NAME]         = "Home 1"
   gArmTable[1][ARM_HOME][SEM_PROCEED_ANIM]      = "Clear01"
   gArmTable[1][ARM_HOME][SEM_BLOCKED_ANIM]      = "Stop01"

   gArmTable[1][ARM_DIST1][SEM_CHILD_NAME]         = "Dist 1"
   gArmTable[1][ARM_DIST1][SEM_PROCEED_ANIM]      = "Clear01"
   gArmTable[1][ARM_DIST1][SEM_BLOCKED_ANIM]      = "Stop01"

   gArmTable[1][ARM_DIST2][SEM_CHILD_NAME]         = "Dist 2"
   gArmTable[1][ARM_DIST2][SEM_PROCEED_ANIM]      = "Clear02"
   gArmTable[1][ARM_DIST2][SEM_BLOCKED_ANIM]      = "Stop02"

end
Auscgu
Passed Fireman
 
Posts: 133
Images: 50
Joined: Sat Oct 21, 2017 11:04 am
Has thanked: 12 times
Been thanked: 17 times

Re: Home + Distant + Distant signal

Postby Auscgu » Tue Mar 08, 2022 12:11 pm

There is a difference
I found I had to use a different arm .ban file for the signals.
In reality it the same .ban file but with a separate path file or separate path.

I tried it with the both the Home and Distant arms using Clear01 and Stop01.
It does not work in my build.
Code: Select all
   gArmTable[2][ARM_HOME][SEM_CHILD_NAME]         = "Home 2"
   gArmTable[2][ARM_HOME][SEM_PROCEED_ANIM]      = "Clear01"
   gArmTable[2][ARM_HOME][SEM_BLOCKED_ANIM]      = "Stop01"


This has been a constant problem and the solution for me is the alternate path for the arms to clear.

This was already provided in the JYelland signals and I expanded it.
M Brinton/A Brailsford also provide this but with a combined file.

JYelland
Arm file BR(WR)-4ft-stop-arm-02
Code: Select all
               <AnimSet>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="63871296">
                     <AnimationID d:type="cDeltaString">Clear02</AnimationID>
                     <AnimationName d:type="cDeltaString">Yelland\Addon\RailNetwork\Signals\UK Semaphore\BR(WR)_Arms\BR(WR)-4ft-stop-arm-clear</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="63870400">
                     <AnimationID d:type="cDeltaString">Stop02</AnimationID>
                     <AnimationName d:type="cDeltaString">Yelland\Addon\RailNetwork\Signals\UK Semaphore\BR(WR)_Arms\BR(WR)-4ft-stop-arm-stop</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
               </AnimSet>



M Brinton/A Brailsford
Arm ARM_4f0_Hm1
Code: Select all
               <AnimSet>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95077528">
                     <AnimationID d:type="cDeltaString">Stop01</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95080728">
                     <AnimationID d:type="cDeltaString">Clear01</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95080248">
                     <AnimationID d:type="cDeltaString">Stop02</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95081528">
                     <AnimationID d:type="cDeltaString">Clear02</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95080568">
                     <AnimationID d:type="cDeltaString">Stop03</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95087288">
                     <AnimationID d:type="cDeltaString">Clear03</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95086648">
                     <AnimationID d:type="cDeltaString">Stop04</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95085208">
                     <AnimationID d:type="cDeltaString">Clear04</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eTrue</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95086168">
                     <AnimationID d:type="cDeltaString">Stop05</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95086328">
                     <AnimationID d:type="cDeltaString">Clear05</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95087128">
                     <AnimationID d:type="cDeltaString">Stop06</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="95087608">
                     <AnimationID d:type="cDeltaString">Clear06</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="71650560">
                     <AnimationID d:type="cDeltaString">Stop07</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="71647360">
                     <AnimationID d:type="cDeltaString">Clear07</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="71648960">
                     <AnimationID d:type="cDeltaString">Stop08</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_On</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
                  <iAnimObjectRenderBlueprint-cAnimation d:id="40133280">
                     <AnimationID d:type="cDeltaString">Clear08</AnimationID>
                     <AnimationName d:type="cDeltaString">ALGB\LNW_Signals\ARM_4f0_Hm1_To_Off</AnimationName>
                     <AnimateInEditor d:type="cDeltaString">eFalse</AnimateInEditor>
                  </iAnimObjectRenderBlueprint-cAnimation>
               </AnimSet>
Auscgu
Passed Fireman
 
Posts: 133
Images: 50
Joined: Sat Oct 21, 2017 11:04 am
Has thanked: 12 times
Been thanked: 17 times

Re: Home + Distant + Distant signal

Postby AndiS » Tue Mar 08, 2022 2:17 pm

Now this get funny. I feel retraumatisation coming my way. :)

Arrogant me always maintained that if it just the same arm then for the sake of modularity you should have one child blueprint for all uses. And I did test. My FP K Wood HH R in the Kuju assets refers to the same UqArm_home01.xml for both dolls.

But my FP K Wood HDD 1T in the same kit refers to UqArm_dist01.xml and UqArm_dist02.xml for some reason. I am not sure there is a reason, other than copying the original Kuju file.

So while I see no reason from an modelling perspective, I cannot completely rule out that the game gets confused by such arm reuse. I just don't want to believe it could, frankly speaking.
AndiS
Top Link Driver!
 
Posts: 736
Joined: Wed Apr 09, 2014 5:48 pm
Has thanked: 268 times
Been thanked: 308 times


Return to Route Creation

Who is online

Users browsing this forum: No registered users and 2 guests