Ejemplo n.º 1
0
        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;
     }
 }
Ejemplo n.º 3
0
 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;
 }        
Ejemplo n.º 5
0
 public MyPrefabScanningPartRays(MyPrefabScanner scanner)
     : base(scanner)
 {
     m_work = new BackgroundScan(scanner);
     m_raysStartPositions = new List <Vector3>();
 }
Ejemplo n.º 6
0
 public BackgroundScan(MyPrefabScanner owner)
 {
     m_owner = owner;
 }
Ejemplo n.º 7
0
 public MyPrefabScanningPartBase(MyPrefabScanner scanner)
 {
     m_scanner = scanner;
 }
Ejemplo n.º 8
0
        /// <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;
        }
Ejemplo n.º 9
0
 public MyPrefabScanningPartRays(MyPrefabScanner scanner)
     : base(scanner)
 {
     m_work = new BackgroundScan(scanner);
     m_raysStartPositions = new List<Vector3>();
 }
Ejemplo n.º 10
0
 public BackgroundScan(MyPrefabScanner owner)
 {
     m_owner = owner;
 }
Ejemplo n.º 11
0
 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;
 }
Ejemplo n.º 12
0
 public MyPrefabScanningPartBase(MyPrefabScanner scanner)
 {
     m_scanner = scanner;
 }