public async void return_two_lights() { var lightsManager = new LightsManager(_client); await lightsManager.RetrieveLights(); Check.That(lightsManager.Lights.ToList().Count).IsEqualTo(2); }
private void Start() { soundsManager = GameObject.Find("SoundsManager").GetComponent <SoundsManager>(); lightsManager = GameObject.Find("LightsManager").GetComponent <LightsManager>(); _ballManager = FindObjectOfType <BallManager>(); _missionManager = FindObjectOfType <MissionManager>(); }
/// <summary> /// Main application entry point. /// </summary> private static void Main() { LightsManager lightsManager = null; try { LightsDeviceController lightsDeviceController = new LightsDeviceController(Config.GetUsbProductId(), Config.GetUsbVendorId(), Config.GetUsbUsage(), Config.GetUsbUsagePage(), Config.GetWaitForDeviceRetryPeriod(), Config.GetUsbControlTransferType()); lightsManager = new LightsManager(lightsDeviceController, Config.GetLightsManagerPort(), Config.GetNotificationManagerHost(), Config.GetNotificationManagerPort(), Config.GetRegistrationRetryPeriod(), Config.GetUsbProtocolType()); Thread thread = new Thread(lightsManager.Start); thread.Start(); Console.WriteLine("Press any key to terminate..."); Console.ReadKey(true); lightsManager.Stop(); thread.Join(); Console.WriteLine("Press any key to close..."); Console.ReadKey(true); } catch (Exception e) { Console.Error.WriteLine(e); Console.ReadKey(true); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }
private static void CalculateIncorrectPropIDs(List <BaseGameLight> lights, LightsManager manager) { Dictionary <int, List <BaseGameLight> > pregrouped = new Dictionary <int, List <BaseGameLight> >(); foreach (BaseGameLight light in lights) { int z = Mathf.RoundToInt((light.WorldLocation.z * manager.GroupingMultiplier) + manager.GroupingOffset); if (pregrouped.TryGetValue(z, out List <BaseGameLight> list)) { list.Add(light); } else { list = new List <BaseGameLight>(); list.Add(light); pregrouped.Add(z, list); } } //We gotta squeeze the distance between Z positions into a nice 0-1-2-... array int i = 0; foreach (var group in pregrouped.Values) { if (group is null) { continue; } foreach (var light in group) { light.IncorrectPropID = i; } i++; } }
void OnPreRender() { LightsManager LM = GetComponent <LightsManager>(); deffered_material.SetVectorArray("_LightsPositions", LM.lightsPositions()); deffered_material.SetVectorArray("_LightsColors", LM.lightsColors()); }
// Use this for initialization void Start() { lightsManager = FindObjectOfType <LightsManager>(); particleSystem = GetComponent <ParticleSystem>(); meshRenderer = GetComponent <MeshRenderer>(); if (particleSystem == null && meshRenderer == null) { Debug.Log("no renderer is present on the object"); } if (particleSystem) { Material[] mats = particleSystem.GetComponent <Renderer>().materials; foreach (Material m in mats) { obstacleMat = m; //Debug.Log("material: " + obstacleMat.name); break; } } if (meshRenderer) { Material[] mats = meshRenderer.materials; foreach (Material m in mats) { obstacleMat = m; //Debug.Log("material: " + obstacleMat.name); break; } } }
public async Task Reset_Vuelve_Todos_Los_Valores_A_Cero() { // Arrange var lights = new List <Light> { new Light { Pin = 1, Value = 250 }, new Light { Pin = 3, Value = 120 } }; var lightsManager = new LightsManager(lights); // Act lightsManager.Reset(); // Assert Assert.Equals(lightsManager.GetLightByPin(1).Value, 0); Assert.Equals(lightsManager.GetLightByPin(3).Value, 0); }
// Use this for initialization void Start() { lightsManager = FindObjectOfType <LightsManager>(); spriteRenderer = GetComponent <SpriteRenderer>(); meshRenderer = GetComponent <MeshRenderer>(); if (spriteRenderer == null && meshRenderer == null) { Debug.Log("no renderer is present on the object"); } if (spriteRenderer) { Material[] mats = spriteRenderer.sharedMaterials; foreach (Material m in mats) { obstacleMat = m; //Debug.Log("material: " + obstacleMat.name); break; } } if (meshRenderer) { Material[] mats = meshRenderer.materials; foreach (Material m in mats) { obstacleMat = m; //Debug.Log("material: " + obstacleMat.name); break; } } }
public void Click_method_thorws_exception() { var lightsGrid = TestHelper.Get5x5LightsGrid(LightStateType.Off); var mng = new LightsManager(null, null); var result = mng.Click(lightsGrid, 5, 5); }
// Use this for initialization void Awake() { lr = gameObject.AddComponent <LineRenderer>(); alr = gameObject.AddComponent <AnimatedLineRenderer>(); lm = FindObjectOfType <LightsManager>(); StartCoroutine(setAlr()); }
public void Start() { _missionManager = GameObject.Find("MissionManager").GetComponent <MissionManager>(); lightsManager = GameObject.Find("LightsManager").GetComponent <LightsManager>(); soundsManager = GameObject.Find("SoundsManager").GetComponent <SoundsManager>(); rampLights1 = lightsManager.rampLights1; rampLights2 = lightsManager.rampLights2; }
public async void return_true_on_stop_all_light() { var lightsManager = new LightsManager(_client); await lightsManager.RetrieveLights(); var result = await lightsManager.StopAllLights(); Check.That(result).IsEqualTo(StateLight.Off); }
public async void return_true_on_start_one_light() { var lightsManager = new LightsManager(_client); await lightsManager.RetrieveLights(); var lights = lightsManager.Lights; var result = await lightsManager.StartLight(lights.First()); Check.That(result).IsEqualTo(StateLight.On); }
public async void return_true_on_set_color_one_light() { var lightsManager = new LightsManager(_client); await lightsManager.RetrieveLights(); var lights = lightsManager.Lights; var result = await lightsManager.SetColorOnLight(lights.First(), "#FF00AA"); Check.That(result).IsEqualTo(StateLight.On); }
public async void return_on_or_state_on_one_light() { var lightsManager = new LightsManager(_client); await lightsManager.RetrieveLights(); var lights = lightsManager.Lights; await lightsManager.StartLight(lights.First()); var state = await lightsManager.GetStateOfLight(lights.First()); Check.That(state).IsEqualTo(StateLight.On); }
void PlatformLoaded(PlatformDescriptor descriptor) { for (int i = 0; i < 16; i++) { int modified = BeatmapEventContainer.EventTypeToModifiedType(i); GameObject instantiate = Instantiate(LayerInstantiate, LayerInstantiate.transform.parent); instantiate.transform.localPosition = new Vector3(modified, 0, 0); try { switch (i) { case 8: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Ring Rotation"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; case 9: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Small Ring Zoom"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; case 12: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Left Laser Speed"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; case 13: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Right Laser Speed"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; case 14: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Rotation (Include Current Time)"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; case 15: instantiate.GetComponentInChildren <TextMeshProUGUI>().text = "Rotation (Exclude Current Time)"; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = UtilityAsset; break; default: LightsManager e = descriptor.LightingManagers[i]; instantiate.GetComponentInChildren <TextMeshProUGUI>().text = e?.gameObject.name; instantiate.GetComponentInChildren <TextMeshProUGUI>().font = AvailableAsset; break; } } catch { } } LayerInstantiate.SetActive(false); }
public LightsDialog(LightsManager lightsManager) { InitializeComponent(); this.lightsManager = lightsManager; this.initialLobbyColor = lightsManager.DefaultColor; this.initialImpostorColor = lightsManager.ImpostorColor; this.initialCrewmateColor = lightsManager.CrewmateColor; lobbyColorPanel.BackColor = lightsManager.DefaultColor; impostorColorPanel.BackColor = lightsManager.ImpostorColor; crewmateColorPanel.BackColor = lightsManager.CrewmateColor; }
void Awake() { if (!mInstance) { mInstance = this; } Events.ChangeGameState += ChangeGameState; parkManager = GetComponent <ParkManager>(); runSignalsManager = GetComponent <RunSignalsManager>(); lightsManager = GetComponent <LightsManager>(); avatarRunningMoment = GetComponent <AvatarRunningMoment>(); }
// Use this for initialization void Start() { lightsInScene = new List <GameObject>(); lightsInContact = new List <GameObject>(); levelManager = FindObjectOfType <LightsManager>(); for (int i = 0; i < particleSystems.Length; i++) { particleSystems[i].gameObject.SetActive(false); } //ColorAchievedEvent += TestDetector; }
private IEnumerator GradientRoutine(MapEvent gradientEvent, LightsManager group) { MapEvent.ChromaGradient gradient = gradientEvent._lightGradient; Func <float, float> easingFunc = Easing.byName[gradient.EasingType]; float progress = 0; while (progress < 1) { progress = (atsc.CurrentBeat - gradientEvent._time) / gradientEvent._lightGradient.Duration; ChromaCustomColors[group] = Color.Lerp(gradient.StartColor, gradient.EndColor, easingFunc(progress)); group.ChangeColor(ChromaCustomColors[group], 0, group.ControllingLights); yield return(new WaitForEndOfFrame()); } ChromaCustomColors[group] = gradient.EndColor; }
public void Test_Click_method() { var lightsGrid = TestHelper.Get5x5LightsGrid(LightStateType.Off); var x = 4; var y = 4; var lightsHelper = new Mock <ILightsHelper>(); var lightsGridAfterClick = It.IsAny <LightsGrid>(); lightsHelper.Setup(h => h.Click(lightsGrid, x, y)).Returns(lightsGridAfterClick); var mng = new LightsManager(null, lightsHelper.Object); var result = mng.Click(lightsGrid, x, y); Assert.AreSame(result, lightsGridAfterClick); }
public async Task <bool> Run(string sentinelName, string packageName, string homeControllerUrl, int homeControllerPort, bool useSsl, object parameter) { base.Run(sentinelName, packageName); SetParameters(parameter, out var hueKey, out var hueServerIp, out _hoursOff, out _restartHourOff); _lightsManager = new LightsManager(new LocalClient(hueServerIp, hueKey)); _statesValuesHost = new StatesValuesHost(this, HomeConnectionServer.CreateConnection(homeControllerUrl, homeControllerPort, useSsl)); SetTimeToSendValue(parameter); if (_hoursOff.Any()) { SetTimeToHoursOff(); } await FirstRetrieveData(); return(true); }
private IEnumerator GradientRoutine(MapEvent gradientEvent, LightsManager group) { MapEvent.ChromaGradient gradient = gradientEvent._lightGradient; Func <float, float> easingFunc = Easing.byName[gradient.EasingType]; float progress = 0; while ((progress = (atsc.CurrentBeat - gradientEvent._time) / gradient.Duration) < 1) { Color lerped = Color.LerpUnclamped(gradient.StartColor, gradient.EndColor, easingFunc(progress)); if (!SoloAnEventType || gradientEvent._type == SoloEventType) { ChromaCustomColors[group] = lerped; group.ChangeColor(lerped.WithAlpha(1), 0, group.ControllingLights); group.ChangeMultiplierAlpha(lerped.a, group.ControllingLights); } yield return(new WaitForEndOfFrame()); } ChromaCustomColors[group] = gradient.EndColor; group.ChangeColor(ChromaCustomColors[group].WithAlpha(1), 0, group.ControllingLights); group.ChangeMultiplierAlpha(ChromaCustomColors[group].a, group.ControllingLights); }
private void SetRendererMaterials(Renderer renderer, LightsManager lightsManager = null, float width = 1f) { Material[] materials = renderer.sharedMaterials; if (materials.Length >= 1 && materials[0] != null) { if (materials[0] != null && (width >= 0.5f)) { Array.Resize <Material>(ref materials, materials.Length + 1); } Material lastMaterial = lightMaterial; for (var i = 0; i < materials.Length; i++) { Material tempMaterial = materials[i]; if ((tempMaterial?.shader?.name?.Equals("Unlit/Color") ?? false) && !(tempMaterial.color.r == 1 && tempMaterial.color.g == 1 && tempMaterial.color.b == 1)) { tempMaterial = useThisBlack; } materials[i] = lastMaterial; lastMaterial = tempMaterial; } } else { materials = new Material[1]; materials[0] = lightMaterial; } renderer.sharedMaterials = materials; if (lightsManager != null) { LightingEvent le = renderer.gameObject.AddComponent <LightingEvent>(); le.LightMaterial = lightMaterial; lightsManager.ControllingLights.Add(le); } }
public void Test_InitLightsGridInSolvableState_method() { var dimension = 5; var populator = new Mock <ILightsPopulator>(); var lightsGrid1 = It.IsAny <LightsGrid>(); populator.Setup(p => p.InitLightsGrid(dimension)).Returns(lightsGrid1); var lightsGrid2 = It.IsAny <LightsGrid>(); populator.Setup(p => p.ResetAllLights(lightsGrid1)).Returns(lightsGrid2); var lightsGrid3 = It.IsAny <LightsGrid>(); populator.Setup(p => p.PopulateSolvableState(lightsGrid2)).Returns(lightsGrid3); var mng = new LightsManager(populator.Object, null); var result = mng.InitLightsGridInSolvableState(dimension); populator.Verify(p => p.InitLightsGrid(dimension), Times.Once); populator.Verify(p => p.ResetAllLights(lightsGrid1), Times.Once); populator.Verify(p => p.PopulateSolvableState(lightsGrid2), Times.Once); Assert.AreSame(result, lightsGrid3); }
/** * If the component requires other custom components then do it here. * Read the comment on Components.MantaSeializationFixer if you wish to understand why this horrible system exists. */ public static void SetUpManta(GameObject submarine) { MantaSubmarine mantaSubmarine = submarine.GetComponent <MantaSubmarine>(); Transform applyForceLocation = submarine.FindChild("PointsOfInterest").FindChild("ForceAppliedLocation").transform; MovementController movementController = submarine.GetOrAddComponent <MovementController>(); movementController.ApplyForceLocation = applyForceLocation; GameObject doorLeft = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceLeftFlap"); doorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorLeft = doorLeft.GetOrAddComponent <HingeJointDoor>(); hingeDoorLeft.OverwriteTargetVelocity = true; hingeDoorLeft.TargetVelocity = 150f; hingeDoorLeft.TriggerToEverything = false; hingeDoorLeft.TriggerToPlayer = true; hingeDoorLeft.TriggerToVehicles = false; hingeDoorLeft.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorLeft.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject doorRight = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceRightFlap"); doorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorRight = doorRight.GetOrAddComponent <HingeJointDoor>(); hingeDoorRight.OverwriteTargetVelocity = true; hingeDoorRight.TargetVelocity = 150f; hingeDoorRight.TriggerToEverything = false; hingeDoorRight.TriggerToPlayer = true; hingeDoorRight.TriggerToVehicles = false; hingeDoorRight.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorRight.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject vehicleDoorLeft = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceLeftFlap"); vehicleDoorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorLeft = vehicleDoorLeft.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorLeft.OverwriteTargetVelocity = true; hingeVehicleDoorLeft.TargetVelocity = 150f; hingeVehicleDoorLeft.TriggerToEverything = false; hingeVehicleDoorLeft.TriggerToPlayer = false; hingeVehicleDoorLeft.TriggerToVehicles = true; hingeVehicleDoorLeft.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorLeft.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject vehicleDoorRight = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceRightFlap"); vehicleDoorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorRight = vehicleDoorRight.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorRight.OverwriteTargetVelocity = true; hingeVehicleDoorRight.TargetVelocity = 150f; hingeVehicleDoorRight.TriggerToEverything = false; hingeVehicleDoorRight.TriggerToPlayer = false; hingeVehicleDoorRight.TriggerToVehicles = true; hingeVehicleDoorRight.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorRight.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject entrancePosition = submarine.FindChild("PointsOfInterest").FindChild("EntranceTeleportSpot"); GameObject entranceHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Base"); EntranceHatch entranceHatchTeleport = entranceHatch.GetOrAddComponent <EntranceHatch>(); entranceHatchTeleport.HoverText = "Board Manta"; entranceHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; entranceHatchTeleport.TeleportTarget = entrancePosition; entranceHatchTeleport.Submarine = mantaSubmarine; entranceHatchTeleport.EnteringSubmarine = true; GameObject leavePosition = submarine.FindChild("PointsOfInterest").FindChild("LeaveTeleportSpot"); GameObject leaveHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Top"); EntranceHatch leaveHatchTeleport = leaveHatch.GetOrAddComponent <EntranceHatch>(); leaveHatchTeleport.HoverText = "Disembark Manta"; leaveHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; leaveHatchTeleport.TeleportTarget = leavePosition; leaveHatchTeleport.Submarine = mantaSubmarine; leaveHatchTeleport.EnteringSubmarine = false; GameObject steeringConsolePOI = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole"); GameObject steeringConsoleLeftHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("LeftIKTarget"); GameObject steeringConsoleRightHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("RightIKTarget"); GameObject playerParentWhilePiloting = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("PlayerLockedWhileSteeringPosition"); SteeringConsole steeringConsole = steeringConsolePOI.GetOrAddComponent <SteeringConsole>(); steeringConsole.MovementController = submarine.GetComponent <MovementController>(); steeringConsole.ParentWhilePilotingGO = playerParentWhilePiloting; steeringConsole.LeftHandIKTarget = steeringConsoleLeftHandTarget; steeringConsole.RightHandIKTarget = steeringConsoleRightHandTarget; steeringConsole.Submarine = mantaSubmarine; CyclopsCollisionSounds collisionSounds = submarine.GetOrAddComponent <CyclopsCollisionSounds>(); MovementData normalSpeedMovementData = new MovementData { ForwardAccelerationSpeed = 5f, BackwardsAccelerationSpeed = 3f, AscendDescendSpeed = 3f, RotationSpeed = 0.3f, StrafeSpeed = 2f }; EngineManager engineManager = submarine.GetOrAddComponent <EngineManager>(); engineManager.SetMovementDataForEngineState(EngineState.SLOW, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.NORMAL, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.FAST, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.SPECIAL, normalSpeedMovementData); CyclopsStartupPowerDownSequence cyclopsStartupPowerDownSequence = submarine.GetOrAddComponent <CyclopsStartupPowerDownSequence>(); CyclopsEngineStateChangedCallouts cyclopsEngineStateChangedCallouts = submarine.GetOrAddComponent <CyclopsEngineStateChangedCallouts>(); movementController.EngineManager = engineManager; CyclopsWelcomeCallout cyclopsWelcomeCallout = submarine.GetOrAddComponent <CyclopsWelcomeCallout>(); CyclopsEngineSound cyclopsEngineSound = submarine.GetOrAddComponent <CyclopsEngineSound>(); cyclopsEngineSound.RampUpSpeed = 0.2f; cyclopsEngineSound.RampDownSpeed = 0.2f; movementController.EngineSound = cyclopsEngineSound; OxygenReplenishment oxygenReplenishment = submarine.GetOrAddComponent <OxygenReplenishment>(); oxygenReplenishment.OxygenPerSecond = 15f; oxygenReplenishment.OxygenEnergyCost = 0.1f; LiveMixin liveMixin = submarine.GetOrAddComponent <LiveMixin>(); liveMixin.data = CyclopsLiveMixinData.Get(); // TO:DO Create a proper health system for the manta. liveMixin.data.knifeable = true; // TO:DO remove just here for testing purposes. liveMixin.data.maxHealth = 500; GameObject externalLights = submarine.FindChild("Lights").FindChild("Exterior"); GameObject internalLights = submarine.FindChild("Lights").FindChild("Interior"); LightsManager lightsManager = submarine.GetOrAddComponent <LightsManager>(); List <Light> internalLightsList = new List <Light>(); List <Light> externalLightsList = new List <Light>(); foreach (Light light in externalLights.GetComponentsInChildren <Light>()) { externalLightsList.Add(light); } foreach (Light light in internalLights.GetComponentsInChildren <Light>()) { internalLightsList.Add(light); } lightsManager.ExternalLights = externalLightsList; lightsManager.InternalLights = internalLightsList; lightsManager.ExternalLightsOnIntensity = 1.5f; lightsManager.ExternalLightsOffIntensity = 0f; lightsManager.InternalLightsOnIntensity = 1.5f; lightsManager.InternalLightsOffIntensity = 0f; lightsManager.EnableInternalLightsOnStart = true; lightsManager.EnableExternalLightsOnStart = true; CyclopsUnderAttackEmergencyLighting emergencyLighting = submarine.GetOrAddComponent <CyclopsUnderAttackEmergencyLighting>(); emergencyLighting.LightsAffected = internalLightsList; submarine.GetOrAddComponent <CyclopsUnderAttackCallout>(); ExternalDamageManager externalDamageManager = submarine.GetOrAddComponent <ExternalDamageManager>(); externalDamageManager.DamagePoints = submarine.FindChild("PointsOfInterest").FindChild("DamagePoints").transform; externalDamageManager.SubmarineLiveMixin = liveMixin; externalDamageManager.LiveMixinDataForExternalDamagePoints = CyclopsExternalDamagePointLiveMixinData.Get(); externalDamageManager.DamagePointParticleEffects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT_PARTICLES, }; externalDamageManager.DamagePointGameObjects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT, }; InternalFireManager internalFireManager = submarine.GetOrAddComponent <InternalFireManager>(); internalFireManager.SubmarineLiveMixin = liveMixin; internalFireManager.FirePoints = submarine.FindChild("PointsOfInterest").FindChild("FirePoints").transform; internalFireManager.FirePrefabs = new List <GameObject>() { CyclopsDefaultAssets.CYCLOPS_FIRE, }; internalFireManager.DamageDonePerFirePerSecond = 5f; internalFireManager.Submarine = mantaSubmarine; internalFireManager.ChancePerDamageTakenToSpawnFire = 5; AutoRegenConditional autoRegen = submarine.GetOrAddComponent <AutoRegenConditional>(); autoRegen.InternalFireManager = internalFireManager; autoRegen.ExternalDamageManager = externalDamageManager; autoRegen.LiveMixin = liveMixin; autoRegen.RegenPerSecond = 2f; InternalLeakManager internalLeakManage = submarine.GetOrAddComponent <InternalLeakManager>(); internalLeakManage.LeakPrefabs = new List <GameObject>() { CyclopsDefaultAssets.WATER_LEAK }; DeathManager deathManager = submarine.GetOrAddComponent <DeathManager>(); deathManager.DeathPreparationTime = 22f; BasicDeath basicDeath = submarine.GetOrAddComponent <BasicDeath>(); basicDeath.TimeTillDeletionOfSub = 60f; basicDeath.FallSpeed = 2f; CyclopsDeathExplosion cyclopsDeathExplosion = submarine.GetOrAddComponent <CyclopsDeathExplosion>(); cyclopsDeathExplosion.TimeToExplosionAfterDeath = 18f; cyclopsDeathExplosion.FMODAsset = CyclopsDefaultAssets.CYCLOPS_EXPLOSION_FMOD; CyclopsAbandonShip cyclopsAbandonShip = submarine.GetOrAddComponent <CyclopsAbandonShip>(); cyclopsAbandonShip.TimeToCalloutAfterDeath = 0f; cyclopsAbandonShip.FMODAsset = CyclopsDefaultAssets.AI_ABANDON; DestabiliseOnSubDeath destabiliseOnSubDeath = submarine.GetOrAddComponent <DestabiliseOnSubDeath>(); KillPlayerInsideOnSubDeath killPlayerInsideOnSubDeath = submarine.GetOrAddComponent <KillPlayerInsideOnSubDeath>(); // Temp screens GameObject helmMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("UpgradesAndBatteries").FindChild("HelmScreen").FindChild("Canvas"); GameObject rearMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("UpgradesAndBatteries").FindChild("UpgradeScreen").FindChild("Canvas"); GameObject steeringConsoleMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("Canvas"); Object.Instantiate(MantaAssetLoader.MANTA_OS_MAIN_LAYOUT_PAGE).transform.SetParent(helmMantaOSScreen.transform, false); Object.Instantiate(MantaAssetLoader.MANTAOS_OFFLINE_PAGE).transform.SetParent(rearMantaOSScreen.transform, false); Object.Instantiate(MantaAssetLoader.MANTAOS_OFFLINE_PAGE).transform.SetParent(steeringConsoleMantaOSScreen.transform, false); SMLHelper.V2.Handlers.TechTypeHandler.TryGetModdedTechType(UNIQUE_ID, out TechType mantaTechType); PingType mantaPingType = CustomBeaconManager.RegisterNewPingType(mantaTechType, NAME, MantaAssetLoader.MANTA_PING_ICON); PingInstance pingInstance = CustomBeaconManager.AddNewBeacon(submarine, mantaPingType, "HMS Unknown Manta"); }
public void TestBlink1ThrowsExceptionForUnsupportedUsbProtocolType() { // Mocks Mock<LightsDeviceController> lightsDeviceController = this.mockFactory.CreateMock<LightsDeviceController>(); // Expectations lightsDeviceController.Expects.AtLeastOne.Method(x => x.GetFeatureReportByteLength()).WillReturn(10); lightsDeviceController.Expects.AtLeastOne.Method(x => x.SendCommand(new byte[10])).WithAnyArguments().WillReturn(LightsDeviceResult.Ack); // Run and test LightsManager lightsManager = new LightsManager(lightsDeviceController.MockObject, UsbProtocolType.None); Assert.Throws<UnsupportedUsbProtocolTypeException>(() => lightsManager.NotifyLightsDevice(new BuildActiveRequest(true))); }
public void TestStopAndStopAgain() { LightsManager lightsManager = null; try { LightsDeviceController lightsDeviceController = new LightsDeviceController(0, 0, 0, 0); lightsManager = new LightsManager(lightsDeviceController); lightsManager.Start(); Assert.That(lightsManager.Running, NUnit.Framework.Is.True); lightsManager.Stop(); Assert.That(lightsManager.Running, NUnit.Framework.Is.False); lightsManager.Stop(); Assert.That(lightsManager.Running, NUnit.Framework.Is.False); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }
public static void registerLightsManager(LightsManager lm) { lightsManager = lm; }
void Awake() { Instance = this; }
/** * If the component requires other custom components then do it here. * Read the comment on Components.MantaSeializationFixer if you wish to understand why this horrible system exists. */ public static void SetUpManta(GameObject submarine) { MantaSubmarine mantaSubmarine = submarine.GetComponent <MantaSubmarine>(); Transform applyForceLocation = submarine.FindChild("PointsOfInterest").FindChild("ForceAppliedLocation").transform; MovementController movementController = submarine.GetOrAddComponent <MovementController>(); movementController.ApplyForceLocation = applyForceLocation; GameObject doorLeft = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceLeftFlap"); doorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorLeft = doorLeft.GetOrAddComponent <HingeJointDoor>(); hingeDoorLeft.OverwriteTargetVelocity = true; hingeDoorLeft.TargetVelocity = 150f; hingeDoorLeft.TriggerToEverything = false; hingeDoorLeft.TriggerToPlayer = true; hingeDoorLeft.TriggerToVehicles = false; hingeDoorLeft.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorLeft.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject doorRight = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceRightFlap"); doorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorRight = doorRight.GetOrAddComponent <HingeJointDoor>(); hingeDoorRight.OverwriteTargetVelocity = true; hingeDoorRight.TargetVelocity = 150f; hingeDoorRight.TriggerToEverything = false; hingeDoorRight.TriggerToPlayer = true; hingeDoorRight.TriggerToVehicles = false; hingeDoorRight.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorRight.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject vehicleDoorLeft = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceLeftFlap"); vehicleDoorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorLeft = vehicleDoorLeft.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorLeft.OverwriteTargetVelocity = true; hingeVehicleDoorLeft.TargetVelocity = 150f; hingeVehicleDoorLeft.TriggerToEverything = false; hingeVehicleDoorLeft.TriggerToPlayer = false; hingeVehicleDoorLeft.TriggerToVehicles = true; hingeVehicleDoorLeft.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorLeft.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject vehicleDoorRight = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceRightFlap"); vehicleDoorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorRight = vehicleDoorRight.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorRight.OverwriteTargetVelocity = true; hingeVehicleDoorRight.TargetVelocity = 150f; hingeVehicleDoorRight.TriggerToEverything = false; hingeVehicleDoorRight.TriggerToPlayer = false; hingeVehicleDoorRight.TriggerToVehicles = true; hingeVehicleDoorRight.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorRight.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject entrancePosition = submarine.FindChild("PointsOfInterest").FindChild("EntranceTeleportSpot"); GameObject entranceHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Base"); EntranceHatch entranceHatchTeleport = entranceHatch.GetOrAddComponent <EntranceHatch>(); entranceHatchTeleport.HoverText = "Board Manta"; entranceHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; entranceHatchTeleport.TeleportTarget = entrancePosition; entranceHatchTeleport.Submarine = mantaSubmarine; entranceHatchTeleport.EnteringSubmarine = true; GameObject leavePosition = submarine.FindChild("PointsOfInterest").FindChild("LeaveTeleportSpot"); GameObject leaveHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Top"); EntranceHatch leaveHatchTeleport = leaveHatch.GetOrAddComponent <EntranceHatch>(); leaveHatchTeleport.HoverText = "Disembark Manta"; leaveHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; leaveHatchTeleport.TeleportTarget = leavePosition; leaveHatchTeleport.Submarine = mantaSubmarine; leaveHatchTeleport.EnteringSubmarine = false; GameObject steeringConsolePOI = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole"); GameObject steeringConsoleLeftHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("LeftIKTarget"); GameObject steeringConsoleRightHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("RightIKTarget"); GameObject playerParentWhilePiloting = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("PlayerLockedWhileSteeringPosition"); SteeringConsole steeringConsole = steeringConsolePOI.GetOrAddComponent <SteeringConsole>(); steeringConsole.MovementController = submarine.GetComponent <MovementController>(); steeringConsole.ParentWhilePilotingGO = playerParentWhilePiloting; steeringConsole.LeftHandIKTarget = steeringConsoleLeftHandTarget; steeringConsole.RightHandIKTarget = steeringConsoleRightHandTarget; steeringConsole.Submarine = mantaSubmarine; CyclopsCollisionSounds collisionSounds = submarine.GetOrAddComponent <CyclopsCollisionSounds>(); MovementData normalSpeedMovementData = new MovementData { ForwardAccelerationSpeed = 5f, BackwardsAccelerationSpeed = 3f, AscendDescendSpeed = 3f, RotationSpeed = 0.3f, StrafeSpeed = 2f }; EngineManager engineManager = submarine.GetOrAddComponent <EngineManager>(); engineManager.SetMovementDataForEngineState(EngineState.SLOW, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.NORMAL, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.FAST, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.SPECIAL, normalSpeedMovementData); CyclopsStartupPowerDownSequence cyclopsStartupPowerDownSequence = submarine.GetOrAddComponent <CyclopsStartupPowerDownSequence>(); CyclopsEngineStateChangedCallouts cyclopsEngineStateChangedCallouts = submarine.GetOrAddComponent <CyclopsEngineStateChangedCallouts>(); movementController.EngineManager = engineManager; CyclopsWelcomeCallout cyclopsWelcomeCallout = submarine.GetOrAddComponent <CyclopsWelcomeCallout>(); CyclopsEngineSound cyclopsEngineSound = submarine.GetOrAddComponent <CyclopsEngineSound>(); cyclopsEngineSound.RampUpSpeed = 0.2f; cyclopsEngineSound.RampDownSpeed = 0.2f; movementController.EngineSound = cyclopsEngineSound; OxygenReplenishment oxygenReplenishment = submarine.GetOrAddComponent <OxygenReplenishment>(); oxygenReplenishment.OxygenPerSecond = 15f; oxygenReplenishment.OxygenEnergyCost = 0.1f; LiveMixin liveMixin = submarine.GetOrAddComponent <LiveMixin>(); liveMixin.data = CyclopsLiveMixinData.Get(); // TO:DO Create a proper health system for the manta. liveMixin.data.knifeable = true; // TO:DO remove just here for testing purposes. liveMixin.data.maxHealth = 500; GameObject externalLights = submarine.FindChild("Lights").FindChild("Exterior"); GameObject internalLights = submarine.FindChild("Lights").FindChild("Interior"); LightsManager lightsManager = submarine.GetOrAddComponent <LightsManager>(); List <Light> internalLightsList = new List <Light>(); List <Light> externalLightsList = new List <Light>(); foreach (Light light in externalLights.GetComponentsInChildren <Light>()) { externalLightsList.Add(light); } foreach (Light light in internalLights.GetComponentsInChildren <Light>()) { internalLightsList.Add(light); } lightsManager.ExternalLights = externalLightsList; lightsManager.InternalLights = internalLightsList; lightsManager.ExternalLightsOnIntensity = 1.5f; lightsManager.ExternalLightsOffIntensity = 0f; lightsManager.InternalLightsOnIntensity = 1.5f; lightsManager.InternalLightsOffIntensity = 0f; lightsManager.EnableInternalLightsOnStart = true; lightsManager.EnableExternalLightsOnStart = true; CyclopsUnderAttackEmergencyLighting emergencyLighting = submarine.GetOrAddComponent <CyclopsUnderAttackEmergencyLighting>(); emergencyLighting.LightsAffected = internalLightsList; submarine.GetOrAddComponent <CyclopsUnderAttackCallout>(); ExternalDamageManager externalDamageManager = submarine.GetOrAddComponent <ExternalDamageManager>(); externalDamageManager.DamagePoints = submarine.FindChild("PointsOfInterest").FindChild("DamagePoints").transform; externalDamageManager.SubmarineLiveMixin = liveMixin; externalDamageManager.LiveMixinDataForExternalDamagePoints = CyclopsExternalDamagePointLiveMixinData.Get(); externalDamageManager.DamagePointParticleEffects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT_PARTICLES, }; externalDamageManager.DamagePointGameObjects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT, }; InternalFireManager internalFireManager = submarine.GetOrAddComponent <InternalFireManager>(); internalFireManager.SubmarineLiveMixin = liveMixin; internalFireManager.FirePoints = submarine.FindChild("PointsOfInterest").FindChild("FirePoints").transform; internalFireManager.FirePrefabs = new List <GameObject>() { CyclopsDefaultAssets.CYCLOPS_FIRE, }; internalFireManager.DamageDonePerFirePerSecond = 5f; internalFireManager.Submarine = mantaSubmarine; internalFireManager.ChancePerDamageTakenToSpawnFire = 5; AutoRegenConditional autoRegen = submarine.GetOrAddComponent <AutoRegenConditional>(); autoRegen.InternalFireManager = internalFireManager; autoRegen.ExternalDamageManager = externalDamageManager; autoRegen.LiveMixin = liveMixin; autoRegen.RegenPerSecond = 2f; }
public void TestHandleCommandForServerDownRequest() { // Mocks Mock<ILightsDeviceController> mockLightsDeviceController = this.mockFactory.CreateMock<ILightsDeviceController>(); mockLightsDeviceController.Expects.One.Method(x => x.Start()); mockLightsDeviceController.Expects.One.Method(x => x.Stop()); mockLightsDeviceController.IgnoreUnexpectedInvocations = true; // One for HandleCommand; one for Stop mockLightsDeviceController.Expects.Exactly(2).Method(x => x.SendCommand(null)).WithAnyArguments().WillReturn(LightsDeviceResult.Ack); // Run StatusRequest request = new StatusRequest(false); LightsManager lightsManager = null; try { lightsManager = new LightsManager(mockLightsDeviceController.MockObject, UsbProtocolType.DasBlinkenlichten); lightsManager.Start(); Assert.That(lightsManager.Running, NUnit.Framework.Is.True); lightsManager.HandleCommand(request, EventArgs.Empty); lightsManager.Stop(); Assert.That(lightsManager.Running, NUnit.Framework.Is.False); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } this.mockFactory.VerifyAllExpectationsHaveBeenMet(); }
public void TestNotifyUsbDeviceIsNullRespondsNotConnected() { // Run LightsDeviceController lightsDeviceController = new LightsDeviceController(0, 0, 0, 0, 1000, UsbControlTransferType.Raw) { Device = null }; LightsManager lightsManager = null; try { lightsManager = new LightsManager(lightsDeviceController, UsbProtocolType.DasBlinkenlichten); BuildActiveRequest buildActiveRequest = new BuildActiveRequest(true); // Test Assert.That(lightsManager.NotifyLightsDevice(buildActiveRequest), NUnit.Framework.Is.EqualTo(LightsDeviceResult.NotConnected)); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }
public void TestNotifyUsbDeviceRespondsNak() { LightsManager lightsManager = null; try { // Mocks Mock<IHidDevice> mockDevice = this.mockFactory.CreateMock<IHidDevice>(); byte[] mockDataBytes = Encoding.ASCII.GetBytes(UsbResponse.Nak); HidDeviceData mockData = new HidDeviceData(mockDataBytes, HidDeviceData.ReadStatus.Success); HidReport mockReport = new HidReport(1, mockData); // Expectations mockDevice.Expects.AtLeastOne.GetProperty(x => x.IsConnected).WillReturn(true); using (this.mockFactory.Ordered) { mockDevice.Expects.One.GetProperty(x => x.IsOpen).WillReturn(false); mockDevice.Expects.AtLeastOne.GetProperty(x => x.IsOpen).WillReturn(true); } mockDevice.Expects.AtLeastOne.Method(x => x.OpenDevice()); mockDevice.Expects.AtLeastOne.Method(x => x.CreateReport()).WillReturn(mockReport); mockDevice.Expects.AtLeastOne.Method(x => x.WriteReport(null)).WithAnyArguments().WillReturn(true); mockDevice.Expects.AtLeastOne.Method(x => x.Read()).WillReturn(mockData); // Run LightsDeviceController lightsDeviceController = new LightsDeviceController(0, 0, 0, 0, 1000, UsbControlTransferType.Raw) { Device = mockDevice.MockObject }; lightsManager = new LightsManager(lightsDeviceController, UsbProtocolType.DasBlinkenlichten); BuildActiveRequest buildActiveRequest = new BuildActiveRequest(true); // Test Assert.That(lightsManager.NotifyLightsDevice(buildActiveRequest), NUnit.Framework.Is.EqualTo(LightsDeviceResult.Nak)); this.mockFactory.VerifyAllExpectationsHaveBeenMet(); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }
public void TestNotifyUsbDeviceRespondsToBuildAttentionRequest() { LightsManager lightsManager = null; try { // Mocks Mock<IHidDevice> mockDevice = this.mockFactory.CreateMock<IHidDevice>(); // Expectations mockDevice.Expects.AtLeastOne.GetProperty(x => x.IsConnected).WillReturn(false); // Run LightsDeviceController lightsDeviceController = new LightsDeviceController(0, 0, 0, 0, 1000, UsbControlTransferType.Raw) { Device = mockDevice.MockObject }; lightsManager = new LightsManager(lightsDeviceController, UsbProtocolType.DasBlinkenlichten); AttentionRequest request = new AttentionRequest(true); // Test Assert.That(lightsManager.NotifyLightsDevice(request), NUnit.Framework.Is.EqualTo(LightsDeviceResult.NotConnected)); this.mockFactory.VerifyAllExpectationsHaveBeenMet(); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }
private void SetLightingEventsForTubeLights(GameObject gameObject) { TubeLight[] tubeLights = gameObject.GetComponentsInChildren <TubeLight>(); foreach (TubeLight tubeLight in tubeLights) { if (tubeLight.gameObject.GetComponent <LightingEvent>() != null) { continue; } int eventId = -MapEvent.EVENT_TYPE_BACK_LASERS; switch (tubeLight.lightsID) { case LightsID.Static: eventId = MapEvent.EVENT_TYPE_BACK_LASERS; break; case LightsID.BackLights: eventId = MapEvent.EVENT_TYPE_BACK_LASERS; break; case LightsID.BigRingLights: eventId = MapEvent.EVENT_TYPE_RING_LIGHTS; break; case LightsID.LeftLasers: eventId = MapEvent.EVENT_TYPE_LEFT_LASERS; break; case LightsID.RightLasers: eventId = MapEvent.EVENT_TYPE_RIGHT_LASERS; break; case LightsID.TrackAndBottom: eventId = MapEvent.EVENT_TYPE_ROAD_LIGHTS; break; case LightsID.RingsRotationEffect: break; case LightsID.RingsStepEffect: break; case LightsID.RingSpeedLeft: break; case LightsID.RingSpeedRight: break; case LightsID.Unused5: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_1; break; case LightsID.Unused6: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_2; break; case LightsID.Unused7: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_3; break; case LightsID.Unused10: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_4; break; case LightsID.Unused11: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_5; break; default: //Unused 5 6 7 10 11 14 15 Debug.Log("Custom LightsID " + tubeLight.lightsID); break; } LightsManager tubeLightsManager = platformDescriptor.LightingManagers[eventId]; if (tubeLightsManager == null) { tubeLightsManager = tubeLight.transform.parent.gameObject.AddComponent <LightsManager>(); tubeLightsManager.disableCustomInitialization = true; platformDescriptor.LightingManagers[eventId] = tubeLightsManager; } MeshRenderer[] meshRenderers = tubeLight.gameObject.GetComponentsInChildren <MeshRenderer>(); foreach (MeshRenderer renderer in meshRenderers) { SetRendererMaterials(renderer, tubeLightsManager, tubeLight.width); } if (tubeLight.gameObject.GetComponent <MeshFilter>() != null) { MeshFilter mFilter = tubeLight.gameObject.GetComponent <MeshFilter>(); if (mFilter.sharedMesh == null) { Vector3 cubeCenter = Vector3.up * (0.5f - tubeLight.center) * tubeLight.length; Vector3 cubeSize = new Vector3(2 * tubeLight.width, tubeLight.length, 2 * tubeLight.width); Mesh mesh = new Mesh(); mesh.name = "ScriptGenerated"; Vector3[] vertices = { new Vector3(0, 0, 0), new Vector3(tubeLight.width, 0, 0), new Vector3(tubeLight.width, tubeLight.length, 0), new Vector3(0, tubeLight.length, 0), new Vector3(0, tubeLight.length, tubeLight.width), new Vector3(tubeLight.width, tubeLight.length, tubeLight.width), new Vector3(tubeLight.width, 0, tubeLight.width), new Vector3(0, 0, tubeLight.width), }; int[] triangles = { 0, 2, 1, //face front 0, 3, 2, 2, 3, 4, //face top 2, 4, 5, 1, 2, 5, //face right 1, 5, 6, 0, 7, 4, //face left 0, 4, 3, 5, 4, 7, //face back 5, 7, 6, 0, 6, 7, //face bottom 0, 1, 6 }; mesh.vertices = vertices; mesh.triangles = triangles; Color[] colors = new Color[vertices.Length]; for (int i = 0; i < vertices.Length; i++) { colors[i] = tubeLight.color; } mesh.colors = colors; Vector3 offset = tubeLight.transform.position - tubeLight.transform.TransformPoint(mesh.bounds.center); tubeLight.transform.position = tubeLight.transform.position + offset; tubeLight.gameObject.GetComponent <MeshFilter>().sharedMesh = mesh; } } } }
public void TestHandleCommandForAllLightsDeviceResults([Values(LightsDeviceResult.Ack, LightsDeviceResult.Nak, LightsDeviceResult.NoResponse, LightsDeviceResult.NotConnected, LightsDeviceResult.NotOpen)] LightsDeviceResult result) { this.mockFactory.ClearExpectations(); // Mocks Mock<ILightsDeviceController> mockLightsDeviceController = this.mockFactory.CreateMock<ILightsDeviceController>(); mockLightsDeviceController.Expects.One.Method(x => x.SendCommand(null)).WithAnyArguments().WillReturn(result); // Any request that steps into the send command logic is sufficient AttentionRequest request = new AttentionRequest(true); // Run LightsManager lightsManager = null; try { lightsManager = new LightsManager(mockLightsDeviceController.MockObject, UsbProtocolType.DasBlinkenlichten); lightsManager.HandleCommand(request, EventArgs.Empty); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } // Ensure a clean end to the test this.mockFactory.VerifyAllExpectationsHaveBeenMet(); }
private void SetRings(GameObject gameObject, TrackRings trackRings, int ringCount) { TrackLaneRingsManager ringManager; //BigRing if (gameObject.name.ToLower().Contains("big") || gameObject.name.ToLower().Contains("outer") || gameObject.name.ToLower().Equals("rings")) { if (platformDescriptor.BigRingManager != null) { Destroy(platformDescriptor.BigRingManager.rotationEffect); Destroy(platformDescriptor.BigRingManager); } platformDescriptor.BigRingManager = gameObject.AddComponent <TrackLaneRingsManager>(); if (platformDescriptor.RotationController == null) { platformDescriptor.RotationController = gameObject.AddComponent <GridRotationController>(); } ringManager = platformDescriptor.BigRingManager; } else { if (platformDescriptor.SmallRingManager != null) { Destroy(platformDescriptor.SmallRingManager.rotationEffect); Destroy(platformDescriptor.SmallRingManager); } platformDescriptor.SmallRingManager = gameObject.AddComponent <TrackLaneRingsManager>(); if (platformDescriptor.RotationController == null) { platformDescriptor.RotationController = gameObject.AddComponent <GridRotationController>(); } ringManager = platformDescriptor.SmallRingManager; } if (ringManager == null) { return; } //Also overwrite LightsManager if applicable TubeLight[] tubeRingLights = trackRings.trackLaneRingPrefab.GetComponentsInChildren <TubeLight>(); foreach (TubeLight tubeLight in tubeRingLights) { int eventId = -1; switch (tubeLight.lightsID) { case LightsID.Static: eventId = MapEvent.EVENT_TYPE_BACK_LASERS; break; case LightsID.BackLights: eventId = MapEvent.EVENT_TYPE_BACK_LASERS; break; case LightsID.BigRingLights: eventId = MapEvent.EVENT_TYPE_RING_LIGHTS; break; case LightsID.LeftLasers: eventId = MapEvent.EVENT_TYPE_LEFT_LASERS; break; case LightsID.RightLasers: eventId = MapEvent.EVENT_TYPE_RIGHT_LASERS; break; case LightsID.TrackAndBottom: eventId = MapEvent.EVENT_TYPE_ROAD_LIGHTS; break; case LightsID.Unused5: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_1; break; case LightsID.Unused6: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_2; break; case LightsID.Unused7: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_3; break; case LightsID.Unused10: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_4; break; case LightsID.Unused11: eventId = MapEvent.EVENT_TYPE_CUSTOM_LIGHT_5; break; default: break; } if (eventId > 0) { LightsManager currentLightsManager = platformDescriptor.LightingManagers[eventId]; LightsManager newLightsManager = gameObject.AddComponent <LightsManager>(); newLightsManager.ControllingLights = currentLightsManager.ControllingLights; newLightsManager.RotatingLights = currentLightsManager.RotatingLights; Destroy(currentLightsManager); platformDescriptor.LightingManagers[eventId] = newLightsManager; break; } } if (tubeRingLights.Length == 0) { LightsManager tubeLightsManager = platformDescriptor.LightingManagers[MapEvent.EVENT_TYPE_RING_LIGHTS]; MeshRenderer[] meshRenderers = trackRings.trackLaneRingPrefab.GetComponentsInChildren <MeshRenderer>(); foreach (MeshRenderer renderer in meshRenderers) { SetRendererMaterials(renderer, tubeLightsManager); } LightsManager newLightsManager = gameObject.AddComponent <LightsManager>(); newLightsManager.ControllingLights = tubeLightsManager.ControllingLights; newLightsManager.RotatingLights = tubeLightsManager.RotatingLights; Destroy(tubeLightsManager); platformDescriptor.LightingManagers[MapEvent.EVENT_TYPE_RING_LIGHTS] = newLightsManager; } //LightsManager lm = pd.LightingManagers[MapEvent.EVENT_TYPE_RING_LIGHTS]; ReplaceBetterBlack(trackRings.trackLaneRingPrefab); SetLightingEventsForTubeLights(trackRings.trackLaneRingPrefab); TrackLaneRing tlr = trackRings.trackLaneRingPrefab.gameObject.AddComponent <TrackLaneRing>(); ringManager.prefab = tlr; ringManager.ringCount = trackRings.ringCount; if (trackRings.useStepEffect) { ringManager.minPositionStep = trackRings.minPositionStep; ringManager.maxPositionStep = trackRings.maxPositionStep; } else { ringManager.minPositionStep = ringManager.maxPositionStep = trackRings.ringPositionStep; } ringManager.moveSpeed = trackRings.moveSpeed; ringManager.rotationStep = trackRings.rotationStep; ringManager.propagationSpeed = trackRings.rotationPropagationSpeed; ringManager.flexySpeed = trackRings.rotationFlexySpeed; if (trackRings.useRotationEffect) { TrackLaneRingsRotationEffect rotationEffect = gameObject.AddComponent <TrackLaneRingsRotationEffect>(); ringManager.rotationEffect = rotationEffect; rotationEffect.manager = ringManager; rotationEffect.startupRotationAngle = trackRings.startupRotationAngle; rotationEffect.startupRotationStep = trackRings.startupRotationStep; rotationEffect.startupRotationPropagationSpeed = trackRings.startupRotationPropagationSpeed; rotationEffect.startupRotationFlexySpeed = trackRings.startupRotationFlexySpeed; } }
public void TestBlink1NotifyUsbDeviceTestAllRequests() { LightsManager lightsManager = null; try { // Mocks Mock<LightsDeviceController> lightsDeviceController = this.mockFactory.CreateMock<LightsDeviceController>(); // Expectations lightsDeviceController.Expects.AtLeastOne.Method(x => x.GetFeatureReportByteLength()).WillReturn(10); lightsDeviceController.Expects.AtLeastOne.Method(x => x.SendCommand(new byte[10])).WithAnyArguments().WillReturn(LightsDeviceResult.Ack); // Run and test lightsManager = new LightsManager(lightsDeviceController.MockObject, UsbProtocolType.Blink1); // Build activity LightsDeviceResult buildActiveRequestResult = lightsManager.NotifyLightsDevice(new BuildActiveRequest(true)); Assert.That(buildActiveRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); buildActiveRequestResult = lightsManager.NotifyLightsDevice(new BuildActiveRequest(false)); Assert.That(buildActiveRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); // Attention LightsDeviceResult attentionRequestResult = lightsManager.NotifyLightsDevice(new AttentionRequest(true)); Assert.That(attentionRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); attentionRequestResult = lightsManager.NotifyLightsDevice(new AttentionRequest(false)); Assert.That(attentionRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); attentionRequestResult = lightsManager.NotifyLightsDevice(new AttentionRequest(true, true)); Assert.That(attentionRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); // System status LightsDeviceResult statusRequestRequestResult = lightsManager.NotifyLightsDevice(new StatusRequest(true)); Assert.That(statusRequestRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); statusRequestRequestResult = lightsManager.NotifyLightsDevice(new StatusRequest(false)); Assert.That(statusRequestRequestResult, NUnit.Framework.Is.EqualTo(LightsDeviceResult.Ack)); } finally { if (lightsManager != null) { lightsManager.Dispose(); } } }