Still no go unfortunately. Am I still supposed to have the 5f in the AddExit declaration? It does seem to do something, but definitely not a 5 second hold. I also don't have a PrepareElements function.
Here's where I'm at atm:
using UnityEngine;
using System.Collections;
public class Script{
public void Init(){
GameObject table = GameObject.Find("TABLE");
test_TableManager behaviour = table.AddComponent<test_TableManager>();
behaviour.PreInit(); // Call pre-initialization steps
behaviour.Init(); // Script initialization
behaviour.PostInit(); // Call poste-initialization steps
}
}
public class test_TableManager : BxTableManager{
bool m_autokick = true;
public override void Init (){
base.Init(); // Call BxVPMTableManager Start (Display version and default controller options
InitArrays(255,255,10,255); // 89 Lamps, 65 Solenoids/Flashers (10 by default for GIs) and 255 Switches...)
SetDMDObject("DMD","BxVPMDMD"); // Link the Vpm driven Dmd Update Component to the object "DMD"
InitSubwaySystem(); // Initialize Subway System
Global.Physics.g_GeneralForceMultiplier = 1;
Global.Physics.g_PlungerForceMultiplier = 15f;
Global.Physics.g_AutoPlungerForceMultiplier = 45f;
Global.Physics.g_FlipperForceMultiplier = 350f;
Global.Physics.g_FlipperSpeedTargetMultiplier = 10000f;
Global.Physics.g_VerticalKickerForceMultiplier = 300;
Global.Physics.g_OrientedKickerForceMultiplier = 400f;
Global.Physics.g_BumperKickForceMultiplier = 500f;
Global.Physics.g_SlingshotForceMultiplier = 180f;
Global.Physics.g_SlingshotThresholdForce = 20;
Global.Physics.g_NudgeForceMultiplierX = 0.6f;
Global.Physics.g_NudgeForceMultiplierY = 0.3F;
Global.Physics.g_DiverterForceMultiplier = 1500;
Global.Physics.g_DebugShotForceMultiplier = 200;
Global.Physics.g_CoilMagnetForceMultiplier = 5.5f;
Global.Physics.SetBallDiameter(26.987f); // Set the balls diameter
Global.Physics.g_AirBall = false;
BxBumperKick.s_AutoKickBumperMode = false; // Bumpers automatically kick
GameObject ball=GameObject.Find("Shop/ball");
ball.renderer.material.mainTexture=Resources.Load("BITMAP/amigaball") as Texture;////affect amigaball
ball.renderer.material.color=Color.white; //// so that amigaball can be seen
AddSwitchCallBack(70, KLKickout);
AddSwitchCallBack(71, TWKickout);
}
void KLKickout(int slot, bool b){
SetSolenoid(70, true);
}
void TWKickout(int slot, bool b){
SetSolenoid(71, true);
}
//! Initialize table driver
public override void InitDriver(){
m_driver = new BxDriver_wpc();
}
public override void LateUpdate (){
base.LateUpdate();
if(Input.GetKeyDown(KeyCode.K)){
SetSolenoid(4, true); // todo => switch off (will not work when not using changedSolenoidsCallback)
}
if(Input.GetKeyDown(KeyCode.L)){
//SetSolenoid(69, true);
launchBall(true);
}
}
//! Initialize Subway System (redefinition)
public override void InitSubwaySystem(){
base.InitSubwaySystem();
GameObject subway = GameObject.Find ("TABLE/SUBWAY");
if(subway==null){
Debug.LogError("Unable to find SUBWAY object");
return;
}
BxSwManager subManager = (BxSwManager)subway.GetComponent("BxSwManager");
if(subManager==null) subManager = (BxSwManager)subway.GetComponent("BxSwVisualManager");
if(subManager==null){
Debug.LogError("Unable to find the Subway manager component in SUBWAY object");
return;
}
float swL = Global.Physics.g_BallDiameter; // length of switches in mm
BxSwNode drain = subManager.AddEntrance("Drain",5); // Main drain node used as subway entrance
BxSwNode pkick = subManager.AddExit("PlungerKicker",4); // Exit GoT_ kicker Node
pkick.m_swicthSlot = 52; // Node switch number
BxSwEdge mainThrough = subManager.LinkNodes(drain,pkick,1.5f); // main Through edge link (1.5 seconds for a ball to cross it)
mainThrough.AddSwitch(50, mainThrough.m_length-swL*1.5f, swL*0.9f); // First switch on the edge
mainThrough.AddSwitch(51, mainThrough.m_length-swL*0.5f , swL*0.9f); // Second switch on the edge (making 3 in total with the pkick node switch)
BxSwNode KLSaucer = subManager.AddEntrance("KLSaucerKicker",70, false); // switch #70, kill ball = false
KLSaucer = subManager.AddExit("KLSaucerKicker",70, 5.0f); // solenoid #70
BxSwNode TWSaucer = subManager.AddEntrance("TWSaucerKicker",71, false); // switch #71, kill ball = false
TWSaucer = subManager.AddExit("TWSaucerKicker",71, 5.0f); // solenoid #71
subManager.Build();
for(int i=0;i<10;i++){
BxSwVirtualBall b = new BxSwVirtualBall();
drain.InsertBall(b);
subManager.ReportNewBall(b);
subManager.DoStep();
}
//BxSwNode thingSaucer = subManager.AddEntrance("Kicker1",87,false); // Intput kicker with switch 87 NOT destroying the ball (Saucer)
//thingSaucer = subManager.AddExit("Kicker1",26,0f); // Output kicker driven by solenoid 26 (SHOULD be the same as above because of the same name) => No animation for kicking (releaseTime=0)
}
//! Link lamp array to Unity objects (called by InitArrays)
public override void InitLampsObjects(){
base.InitLampsObjects(); // call ancestor's function
AddLamp("Light1",1);// Mode Start
AddLamp("bulbInLaneBottomLeft",2);
//SetLamp (2,true,20);
AddLamp("bulbInLaneTopLeft",3);
//SetLamp (3,true,20);
}
//! Link solenoid array to Unity objects (called by InitArrays)
public override void InitSolenoidsObjects(){
base.InitSolenoidsObjects(); // call ancestor's function
AddSolenoid("Bumper1" , 61 , "BxBumperKick");
AddSolenoid("Bumper1/cap" , 61 , "BxBasicLamp"); // Left Bumper
BxBasicLamp bl1=GameObject.Find("Bumper1/cap").GetComponentInChildren<BxBasicLamp>();
bl1.m_onTime=0f;
bl1.m_offTime=0.5f;
AddSolenoid("Bumper2" , 62 , "BxBumperKick");
AddSolenoid("Bumper2/cap" , 62 , "BxBasicLamp"); // Left Bumper
BxBasicLamp bl2=GameObject.Find("Bumper2/cap").GetComponentInChildren<BxBasicLamp>();
bl2.m_onTime=0f;
bl2.m_offTime=0.5f;
AddSolenoid("Bumper3" , 63 , "BxBumperKick");
AddSolenoid("Bumper3/cap" , 63 , "BxBasicLamp"); // Left Bumper
BxBasicLamp bl3=GameObject.Find("Bumper3/cap").GetComponentInChildren<BxBasicLamp>();
bl3.m_onTime=0f;
bl3.m_offTime=0.5f;
AddSolenoid("LeftSlingshotRubber" , 64 , "BxSlingshotKick");
AddSolenoid("RightSlingshotRubber" , 65 , "BxSlingshotKick");
AddSolenoid("Flippers/RightFlipper" , 66 , "BxBasicFlip"); // Right Flipper
AddSolenoid("Flippers/LeftFlipper" , 67 , "BxBasicFlip"); // Left Flipper
AddSolenoid("Flippers/UpperRightFlipper" , 68 , "BxBasicFlip"); // URight Flipper
AddSolenoid("rightAutoPlunger" , 69 , "BxAutoPlunger"); //
// #70 KLSaucerKicker set in InitSubwaySystem
// #71 TWSaucerKicker set in InitSubwaySystem
}
public override void InitSwitchesObjects(){
base.InitSwitchesObjects(); // call ancestor's function
AddSwitch("Bumper1" , 61);
AddSwitch("Bumper2" , 62);
AddSwitch("Bumper3" , 63);
AddSwitch("LeftSlingshotRubber" , 64 ,"BxSlingshotSwitch");
AddSwitch("RightSlingshotRubber" , 65 ,"BxSlingshotSwitch");
AddSwitch("rightLaunchTrigger" , 69 ,"BxTriggerSwitch");
// #70 KLSaucerKicker set in InitSubwaySystem
// #71 TWSaucerKicker set in InitSubwaySystem
}
public void launchBall(bool state){
//SetSolenoid(69, state);
SetSolenoid(69, state);
}
public override void SetSwitch (int slot, bool state){
base.SetSwitch (slot, state);
switch(slot){
case 61:
case 62:
case 63:
SetSolenoid(slot,state);
break;
case 64:
case 65:
if(state) {
SetSolenoid(slot,state);
}
break;
case 69:
SetLamp (1,state);
if (state) {
SetSolenoid(69, state);
}
break;
}
}
}