public override void Update() { if (m_on) { if (!m_running) { if (m_currentIndex >= m_raysStartPositions.Count) { m_currentIndex = 0; } Matrix world = WorldMatrix; Vector3 rayPosition = m_raysStartPositions[m_currentIndex]; Vector3 rayStart = Vector3.Transform(rayPosition, world); Vector3 rayEnd = rayStart + world.Right * Size.X; MyLine rayLine = new MyLine(rayStart, rayEnd, true); m_work.Init(rayLine); m_task = Parallel.Start(m_work); m_running = true; m_currentIndex++; } if (m_running && m_task.IsComplete) { MyEntity scannedEntity = m_work.GetScannedEntity(); if (scannedEntity != null && MyPrefabScanner.CanBeScannedCriterium(scannedEntity, this)) { m_scanner.NotifyEntityScanned(scannedEntity); } m_running = false; } } }
private void ScannerOnOnEntityScanned(MyPrefabScanner sender, MyEntity scannedEntity) { if (scannedEntity == MySession.PlayerShip && m_scanners.Contains(sender)) { scannedEntity.DoDamage(0, 1000000, 0, MyDamageType.Unknown, MyAmmoType.Unknown, null); ((MyPrefabContainer) sender.Parent).AlarmOn = true; } }
public MyPrefabScanningPartPlane(MyPrefabScanner scanner) : base(scanner) { m_scannerCriterias.Add(new MyEntityDetectorCriterium <MyEntity>(1, MyPrefabScanner.CanBeScannedCriterium, true, this)); m_entityDetector = new MyEntityDetector(); m_entityDetector.OnEntityEnter += OnEntityEnter; m_scanner.OnPositionChanged += OnScannerPositionChanged; }
public MyGuiScreenEditorScanner(MyPrefabScanner scanner) : base(scanner, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditScanner) { m_originalSize = Scanner.Size; m_originalColor = Scanner.Color; m_originalOn = Scanner.Enabled; m_originalScanningSpeed = Scanner.ScanningSpeed; Init(); Scanner.Enabled = false; }
public MyPrefabScanningPartRays(MyPrefabScanner scanner) : base(scanner) { m_work = new BackgroundScan(scanner); m_raysStartPositions = new List <Vector3>(); }
public BackgroundScan(MyPrefabScanner owner) { m_owner = owner; }
public MyPrefabScanningPartBase(MyPrefabScanner scanner) { m_scanner = scanner; }
/// <summary> /// CreatePrefab /// </summary> /// <param name="hudLabelText"></param> /// <param name="objBuilder"></param> /// <returns></returns> public MyPrefabBase CreatePrefab(string hudLabelText, MyPrefabContainer prefabContainer, MyMwcObjectBuilder_PrefabBase prefabBuilder) { Render.MyRender.GetRenderProfiler().StartProfilingBlock("MyPrefabFactory.CreatePrefab"); MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(prefabBuilder.GetObjectBuilderType(), prefabBuilder.GetObjectBuilderId().Value); Vector3 relativePosition = MyPrefabContainer.GetRelativePositionInAbsoluteCoords(prefabBuilder.PositionInContainer); Matrix prefabLocalOrientation = Matrix.CreateFromYawPitchRoll(prefabBuilder.AnglesInContainer.X, prefabBuilder.AnglesInContainer.Y, prefabBuilder.AnglesInContainer.Z); MyPrefabBase prefab = null; if (config is MyPrefabConfigurationKinematic) { prefab = new MyPrefabKinematic(prefabContainer); } else if (config is MyPrefabConfigurationLight) { prefab = new MyPrefabLight(prefabContainer); } else if (config is MyPrefabConfigurationLargeWeapon) { prefab = new MyPrefabLargeWeapon(prefabContainer); } else if (config is MyPrefabConfigurationSound) { prefab = new MyPrefabSound(prefabContainer); } else if (config is MyPrefabConfigurationParticles) { prefab = new MyPrefabParticles(prefabContainer); } else if (config is MyPrefabConfigurationLargeShip) { prefab = new MyPrefabLargeShip(prefabContainer); } else if (config is MyPrefabConfigurationHangar) { prefab = new MyPrefabHangar(prefabContainer); } else if(config is MyPrefabConfigurationFoundationFactory) { prefab = new MyPrefabFoundationFactory(prefabContainer); } else if (config is MyPrefabConfigurationSecurityControlHUB) { prefab = new MyPrefabSecurityControlHUB(prefabContainer); } else if (config is MyPrefabConfigurationBankNode) { prefab = new MyPrefabBankNode(prefabContainer); } else if (config is MyPrefabConfigurationGenerator) { prefab = new MyPrefabGenerator(prefabContainer); } else if (config is MyPrefabConfigurationScanner) { prefab = new MyPrefabScanner(prefabContainer); } else if (config is MyPrefabConfigurationCamera) { prefab = new MyPrefabCamera(prefabContainer); } else if (config is MyPrefabConfigurationAlarm) { prefab = new MyPrefabAlarm(prefabContainer); } else { prefab = new MyPrefab(prefabContainer); //prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config); } prefab.Init(hudLabelText, relativePosition, prefabLocalOrientation, prefabBuilder, config); Render.MyRender.GetRenderProfiler().EndProfilingBlock(); return prefab; }
public MyPrefabScanningPartRays(MyPrefabScanner scanner) : base(scanner) { m_work = new BackgroundScan(scanner); m_raysStartPositions = new List<Vector3>(); }
public MyPrefabScanningPartPlane(MyPrefabScanner scanner) : base(scanner) { m_scannerCriterias.Add(new MyEntityDetectorCriterium<MyEntity>(1, MyPrefabScanner.CanBeScannedCriterium, true, this)); m_entityDetector = new MyEntityDetector(); m_entityDetector.OnEntityEnter += OnEntityEnter; m_scanner.OnPositionChanged += OnScannerPositionChanged; }