public void PropertiesChanged(IMyTerminalBlock block)
        {
            if (block == null)
            {
                return;
            }

            //subpart = block.GetSubpart(subpartName);
            block.TryGetSubpart(subpartName, out subpart);

            if (OneEmissiveMaterial)
            {
                CheckAndSetEmissives();
            }
            else
            {
                if (StaticThrusterData.Any())
                {
                    foreach (var data in StaticThrusterData)
                    {
                        PrepData(data);
                        CheckAndSetEmissives();
                    }
                }

                if (DynamicThrusterData.Any())
                {
                    NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME;
                }
            }
        }
        public override void UpdateOnceBeforeFrame()
        {
            if (Block == null)
            {
                return;
            }


            var subtypeId = Block.BlockDefinition.SubtypeId;

            if (EmissiveDataInstance.EmissiveUserData.ContainsKey(subtypeId))
            {
                EmissiveDataSet = EmissiveDataInstance.EmissiveUserData[subtypeId];
            }
            else
            {
                return;
            }

            // Not really used but ready if needed.
            Dictionary <string, IMyModelDummy> modelDummy = new Dictionary <string, IMyModelDummy>();
            MyEntitySubpart foundSubpart;

            Block.Model.GetDummies(modelDummy);
            foreach (var subpart in modelDummy.Keys)
            {
                if (Block.TryGetSubpart(subpart, out foundSubpart))
                {
                    SubpartList.Add(foundSubpart);
                }
            }

            if (SubpartList.Count > 0)
            {
                HasSubpart = true;
            }

            // Hook to events.
            Block.PropertiesChanged += PropertiesChanged;
            Block.IsWorkingChanged  += IsWorkingChanged;

            NeedsUpdate = MyEntityUpdateEnum.EACH_100TH_FRAME;
        }