示例#1
0
 public DeviceMode(
     string deviceName,
     PointL position,
     DisplayOrientation orientation,
     DisplayFixedOutput fixedOutput,
     uint bpp,
     uint width,
     uint height,
     DisplayFlags displayFlags,
     uint displayFrequency) : this(
         deviceName,
         DeviceModeFields.Position |
         DeviceModeFields.DisplayOrientation |
         DeviceModeFields.DisplayFixedOutput |
         DeviceModeFields.BitsPerPixel |
         DeviceModeFields.PelsWidth |
         DeviceModeFields.PelsHeight |
         DeviceModeFields.DisplayFlags |
         DeviceModeFields.DisplayFrequency
         )
 {
     Position           = position;
     DisplayOrientation = orientation;
     DisplayFixedOutput = fixedOutput;
     BitsPerPixel       = bpp;
     PixelsWidth        = width;
     PixelsHeight       = height;
     DisplayFlags       = displayFlags;
     DisplayFrequency   = displayFrequency;
 }
示例#2
0
        /// <summary>
        /// Initializes a new Lcm1602a1 display object.
        /// This object will use the board's GPIO pins, or the McpController pins if one is provided.
        /// </summary>
        /// <param name="mcpController">McpController that is used to provide the pins for the display. Null if we should use board's GPIO pins instead.</param>
        /// <param name="registerSelect">The pin that controls the regsiter select.</param>
        /// <param name="readWrite">The pin that controls the read and write switch.</param>
        /// <param name="enable">The pin that controls the enable switch.</param>
        /// <param name="backlight">The pin that controls the backlight of the display.</param>
        /// <param name="data">Collection of pins holding the data that will be printed on the screen.</param>
        public Lcm1602a1(Mcp23008 mcpController, int registerSelect, int readWrite, int enable, int backlight, int[] data)
        {
            _rwPin     = readWrite;
            _rsPin     = registerSelect;
            _enablePin = enable;
            _dataPins  = data;
            _backlight = backlight;

            _rowOffsets = new byte[4];

            _displayFunction = DisplayFlags.LCD_1LINE | DisplayFlags.LCD_5x8DOTS;

            if (data.Length == 4)
            {
                _displayFunction |= DisplayFlags.LCD_4BITMODE;
            }
            else if (data.Length == 8)
            {
                _displayFunction |= DisplayFlags.LCD_8BITMODE;
            }
            else
            {
                throw new ArgumentException($"The length of the array given to parameter {nameof(data)} must be 4 or 8");
            }

            if (mcpController == null)
            {
                _controller = (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) ?
                              new GpioController(PinNumberingScheme.Logical, new UnixDriver()) :
                              new GpioController(PinNumberingScheme.Logical, new Windows10Driver());
                _usingMcp = false;
            }
            else
            {
                _mcpController = mcpController;
                _usingMcp      = true;
            }

            OpenPin(_rsPin, PinMode.Input);
            if (_rwPin != -1)
            {
                OpenPin(_rwPin, PinMode.Input);
            }
            if (_backlight != -1)
            {
                OpenPin(_backlight, PinMode.Input);
            }
            OpenPin(_enablePin, PinMode.Input);
            foreach (int i in _dataPins)
            {
                OpenPin(i, PinMode.Input);
            }
            // By default, initialize the display with one row and 16 characters.
            Begin(16, 1);
        }
示例#3
0
        public void Begin(byte cols, byte lines, DisplayFlags dotSize = DisplayFlags.LCD_5x8DOTS)
        {
            if (lines > 1)
            {
                _displayFunction |= DisplayFlags.LCD_2LINE;
            }

            _numLines = lines;

            SetRowOffsets(0x00, 0x40, 0x14, 0x54);

            // for some 1 line displays you can select a 10 pixel high font
            if ((dotSize != DisplayFlags.LCD_5x8DOTS) && (lines == 1))
            {
                _displayFunction |= DisplayFlags.LCD_5x10DOTS;
            }

            _displayControl = DisplayFlags.LCD_DISPLAYON | DisplayFlags.LCD_CURSOROFF | DisplayFlags.LCD_BLINKOFF;
            _displayMode    = DisplayFlags.LCD_ENTRYLEFT | DisplayFlags.LCD_ENTRYSHIFTDECREMENT;

            SetPinMode(_rsPin, PinMode.Output);
            // we can save 1 pin by not using RW. Indicate by passing null instead of a pin
            if (_rwPin != -1)
            {
                SetPinMode(_rwPin, PinMode.Output);
            }
            if (_backlight != -1)
            {
                SetPinMode(_backlight, PinMode.Output);
                Write(_backlight, PinValue.High);
            }
            SetPinMode(_enablePin, PinMode.Output);

            // Do this just once, instead of every time a character is drawn (for speed reasons).
            for (int i = 0; i < _dataPins.Length; ++i)
            {
                SetPinMode(_dataPins[i], PinMode.Output);
            }

            // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
            // according to datasheet, we need at least 40ms after power rises above 2.7V
            // before sending commands. Arduino can turn on way before 4.5V so we'll wait 50
            DelayMicroseconds(50000);

            // Initialize the display.
            Write((byte)0x33);
            Write((byte)0x32);

            Write((byte)((byte)Commands.LCD_DISPLAYCONTROL | (byte)_displayControl));
            Write((byte)((byte)Commands.LCD_FUNCTIONSET | (byte)_displayFunction));
            Write((byte)((byte)Commands.LCD_ENTRYMODESET | (byte)_displayMode));
            Clear();
        }
示例#4
0
        private bool SectionToggle(DisplayFlags flag, string title, Texture2D icon)
        {
            bool hasFlag = (displayFlags & flag) == flag;
            bool result  = SectionGroup(title, icon, hasFlag);

            if (result != hasFlag)
            {
                displayFlags = result ? displayFlags | flag : displayFlags & ~flag;
                serializedObject.FindProperty("z_display_flags").intValue = (int)displayFlags;
            }

            return(hasFlag);
        }
示例#5
0
 internal void Read(Class434 or, DxfVisualStyle.Class486 pr)
 {
     if (or.Version < DxfVersion.Dxf24)
     {
         this.displayFlags_0 = (DisplayFlags)pr.vmethod_3();
         this.double_0       = (double)pr.vmethod_3();
         this.shadowType_0   = (ShadowType)pr.vmethod_3();
     }
     else
     {
         this.displayFlags_0 = (DisplayFlags)pr.vmethod_3();
         this.double_0       = pr.vmethod_4();
         this.shadowType_0   = (ShadowType)pr.vmethod_3();
     }
 }
示例#6
0
        public override void OnInspectorGUI()
        {
            displayFlags = (DisplayFlags)serializedObject.FindProperty("z_display_flags").intValue;
            MainContainerBegin("Stat Effect", "Icons/statscog");

            if (SectionToggle(DisplayFlags.Behaviour, "Behaviour", BehaviourIcon))
            {
                SimpleProperty("isDetrimental", "Detrimental");
                SimpleProperty("isBenificial", "Benifecial");
                SimpleProperty("effectParticles", "Particles");
                SimpleProperty("canStack", "Stackable");
                SimpleProperty("hasLifeSpan");
                if (serializedObject.FindProperty("hasLifeSpan").boolValue)
                {
                    SimpleProperty("lifeInSeconds");
                    if (!serializedObject.FindProperty("canStack").boolValue)
                    {
                        SimpleProperty("resetLifeOnAdd");
                    }
                }
            }

            if (SectionToggle(DisplayFlags.UI, "UI", UIIcon))
            {
                SimpleProperty("category");
                SimpleProperty("sprite");
                SimpleProperty("displayName");
                SimpleProperty("description");
                SimpleProperty("startedText");
                SimpleProperty("endedText");
                SimpleProperty("removedText");
                SimpleProperty("displayInList");
            }

            if (SectionToggle(DisplayFlags.Modifiers, "Modifiers", ModifiersIcon))
            {
                modifiersList.DoLayoutList();

                SectionHeader("Cancels Events", "cancelEffects", typeof(StatEffect));
                SimpleList("cancelEffects");

                SectionHeader("Prevent Events", "preventEffects", typeof(StatEffect));
                SimpleList("preventEffects");
            }

            MainContainerEnd();
        }
示例#7
0
 public ConsoleLogger(TestRunnerOptions opts)
 {
     if (!opts.SuppressSummary)
     {
         _flags = DisplayFlags.ShowSummary;
     }
     if (opts.ShowTestNames)
     {
         _flags |= DisplayFlags.ShowCaseStart;
     }
     if (opts.ShowPassExplicitly)
     {
         _flags |= DisplayFlags.ShowExplicitPasses;
     }
     _parts         = new ConsoleOutputParts(opts);
     _renderContext = new RenderContext {
         Console = console,
         Parts   = _parts,
     };
 }
        private void CreateSpawn(GroundSpawn spawn,DisplayFlags flags)
        {
            Model3DGroup group = Model as Model3DGroup;
            Model3DCollection collection = new Model3DCollection();

            if (_mapping.ContainsKey(spawn))
            {
                foreach (Model3D model in _mapping[spawn])
                {
                    group.Children.Remove(model);
                }
            }

            Point3D p = new Point3D(
                (spawn.MaxX + spawn.MinX) / 2,
                (spawn.MaxY + spawn.MinY) / 2,
                spawn.MaxZ);

            if (!Clipping.DrawPoint(p)) return;

            var xlen = spawn.MaxX - spawn.MinX;
            var ylen = spawn.MaxY - spawn.MinY;

            xlen = xlen <= 0 ? 4 : xlen;
            ylen = ylen <= 0 ? 4 : ylen;

            MeshBuilder builder = new MeshBuilder();
            builder.AddBox(p, ylen, xlen, 2);

            GeometryModel3D box = new GeometryModel3D(builder.ToMesh(), Materials.Gold);

            collection.Add(box);

            if ( flags != DisplayFlags.None )
            {
                var scale = 1.25;
                builder = new MeshBuilder();

                if (flags.HasFlag(DisplayFlags.DarkGrayAura))
                {
                    builder.AddBox(p, ylen * scale, xlen * scale, 1);
                    box = new GeometryModel3D(builder.ToMesh(), Materials.DarkGray);
                    collection.Add(box);
                }
                else if (flags.HasFlag(DisplayFlags.GreenAura))
                {
                    builder.AddBox(p, ylen * scale, xlen * scale, 1);
                    box = new GeometryModel3D(builder.ToMesh(), Materials.Green);
                    collection.Add(box);
                }
            }

            _mapping[spawn] = collection;

            foreach (Model3D model in collection)
            {
                group.Children.Add(model);
            }
        }
示例#9
0
 // This will 'left justify' text from the cursor
 public void NoAutoscroll()
 {
     _displayMode &= ~DisplayFlags.LCD_ENTRYSHIFTINCREMENT;
     Command((byte)Commands.LCD_ENTRYMODESET | (byte)_displayMode);
 }
示例#10
0
 // This is for text that flows Right to Left
 public void RightToLeft()
 {
     _displayMode &= ~DisplayFlags.LCD_ENTRYLEFT;
     Command((byte)Commands.LCD_ENTRYMODESET | (byte)_displayMode);
 }
        private void CreatePoint(ZonePoint zp,DisplayFlags flags)
        {
            Model3DGroup group = Model as Model3DGroup;
            Model3DCollection collection = new Model3DCollection();

            if (_mapping.ContainsKey(zp))
            {
                foreach (Model3D model in _mapping[zp])
                {
                    group.Children.Remove(model);
                }
            }

            double px, py, pz;
            px = zp.X == 999999 ? 0 : zp.X;
            py = zp.Y == 999999 ? 0 : zp.Y;
            pz = zp.Z == 999999 ? 0 : zp.Z;

            Point3D p = new Point3D(px,py,pz);

            if (!Clipping.DrawPoint(p)) return;

            MeshBuilder builder = new MeshBuilder();
            builder.AddBox(p, 20, 20, 2);

            //connect box to destination
            px = zp.TargetX == 999999 ? px : zp.TargetX;
            py = zp.TargetY == 999999 ? py : zp.TargetY;
            pz = zp.TargetZ == 999999 ? pz : zp.TargetZ;

            GeometryModel3D box;
            box = new GeometryModel3D(builder.ToMesh(), Materials.Red);
            collection.Add(box);

            builder = new MeshBuilder();
            Point3D destP = new Point3D(px, py, pz);
            builder.AddArrow(p, destP, 0.5);
            builder.AddBox(destP, 20, 20, 2);

            if (zp.X == 999999 || zp.Y == 999999 || zp.Z == 999999 ||
                zp.TargetX == 999999 || zp.TargetY == 999999 || zp.TargetZ == 999999)
            {
                box = new GeometryModel3D(builder.ToMesh(), Materials.Gold);
            }
            else
            {
                box = new GeometryModel3D(builder.ToMesh(), Materials.White);
            }

            collection.Add(box);

            if (flags != DisplayFlags.None)
            {
                builder = new MeshBuilder();

                if (flags.HasFlag(DisplayFlags.DarkGrayAura))
                {
                    builder.AddBox(p, 25,25, 1);
                    builder.AddBox(destP, 25, 25, 1);
                    box = new GeometryModel3D(builder.ToMesh(), Materials.DarkGray);
                    collection.Add(box);
                }
                else if (flags.HasFlag(DisplayFlags.GreenAura))
                {
                    builder.AddBox(p, 25, 25, 1);
                    builder.AddBox(destP, 25, 25, 1);
                    box = new GeometryModel3D(builder.ToMesh(), Materials.Green);
                    collection.Add(box);
                }
            }

            _mapping[zp] = collection;

            foreach (Model3D model in collection)
            {
                group.Children.Add(model);
            }
        }
示例#12
0
 public void ShowSpawn(EQEmu.Spawns.Spawn2 spawn,DisplayFlags flags=DisplayFlags.None)
 {
     if (spawn == null || !_zoneSpawns.Spawns.Contains(spawn))
     {
         //UpdateAll();
         return;
     }
     else
     {
         //Model3DGroup group = Model as Model3DGroup;
         //group.Children.Clear();
         CreateSpawn(spawn,flags);
     }
 }
示例#13
0
 // Turn the display on/off (quickly)
 public void NoDisplay()
 {
     _displayControl &= ~DisplayFlags.LCD_DISPLAYON;
     Command((byte)Commands.LCD_DISPLAYCONTROL | (byte)_displayControl);
 }
示例#14
0
        public void Begin(byte cols, byte lines, DisplayFlags dotSize = DisplayFlags.LCD_5x8DOTS)
        {
            if (lines > 1)
            {
                _displayFunction |= DisplayFlags.LCD_2LINE;
            }

            _numLines = lines;

            SetRowOffsets(0x00, 0x40, (byte)(0x00 + cols), (byte)(0x40 + cols));

            // for some 1 line displays you can select a 10 pixel high font
            if ((dotSize != DisplayFlags.LCD_5x8DOTS) && (lines == 1))
            {
                _displayFunction |= DisplayFlags.LCD_5x10DOTS;
            }

            SetPinMode(_rsPin, PinMode.Output);
            // we can save 1 pin by not using RW. Indicate by passing null instead of a pin
            if (_rwPin != -1)
            {
                SetPinMode(_rwPin, PinMode.Output);
            }
            SetPinMode(_enablePin, PinMode.Output);

            // Do this just once, instead of every time a character is drawn (for speed reasons).
            for (int i = 0; i < _dataPins.Length; ++i)
            {
                SetPinMode(_dataPins[i], PinMode.Output);
            }

            // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
            // according to datasheet, we need at least 40ms after power rises above 2.7V
            // before sending commands. Arduino can turn on way before 4.5V so we'll wait 50
            DelayMicroseconds(50000);
            // Now we pull both RS and R/W low to begin commands
            Write(_rsPin, PinValue.Low);
            Write(_enablePin, PinValue.Low);

            if (_rwPin != -1)
            {
                Write(_rwPin, PinValue.Low);
            }

            //put the LCD into 4 bit or 8 bit mode
            if (_displayFunction.HasFlag(DisplayFlags.LCD_8BITMODE))
            {
                // this is according to the hitachi HD44780 datasheet
                // page 45 figure 23

                // Send function set command sequence
                Command((byte)Commands.LCD_FUNCTIONSET | (byte)_displayFunction);
                DelayMicroseconds(4500);  // wait more than 4.1ms

                // second try
                Command((byte)Commands.LCD_FUNCTIONSET | (byte)_displayFunction);
                DelayMicroseconds(150);

                // third go
                Command((byte)Commands.LCD_FUNCTIONSET | (byte)_displayFunction);
            }
            else
            {
                // this is according to the hitachi HD44780 datasheet
                // figure 24, pg 46

                // we start in 8bit mode, try to set 4 bit mode
                Write4bits(0x03);
                DelayMicroseconds(4500); // wait min 4.1ms

                // second try
                Write4bits(0x03);
                DelayMicroseconds(4500); // wait min 4.1ms

                // third go!
                Write4bits(0x03);
                DelayMicroseconds(150);

                // finally, set to 4-bit interface
                Write4bits(0x02);
            }

            // finally, set # lines, font size, etc.
            Command((byte)Commands.LCD_FUNCTIONSET | (byte)_displayFunction);

            // turn the display on with no cursor or blinking default
            _displayControl = DisplayFlags.LCD_DISPLAYON | DisplayFlags.LCD_CURSOROFF | DisplayFlags.LCD_BLINKOFF;
            Display();

            // clear it off
            Clear();

            // Initialize to default text direction (for romance languages)
            _displayMode = DisplayFlags.LCD_ENTRYLEFT | DisplayFlags.LCD_ENTRYSHIFTDECREMENT;
            // set the entry mode
            Command((byte)Commands.LCD_ENTRYMODESET | (byte)_displayMode);
        }
示例#15
0
 public void CopyFrom(DisplayStyle from, CloneContext cloneContext)
 {
     this.displayFlags_0 = from.displayFlags_0;
     this.double_0       = from.double_0;
     this.shadowType_0   = from.shadowType_0;
 }
 public void ShowSpawn(GroundSpawn spawn, DisplayFlags flags=DisplayFlags.None)
 {
     if (spawn == null) return;
     CreateSpawn(spawn,flags);
 }
示例#17
0
 public void Cursor()
 {
     _displayControl |= DisplayFlags.LCD_CURSORON;
     Command((byte)Commands.LCD_DISPLAYCONTROL | (byte)_displayControl);
 }
示例#18
0
 public void Blink()
 {
     _displayControl |= DisplayFlags.LCD_BLINKON;
     Command((byte)Commands.LCD_DISPLAYCONTROL | (byte)_displayControl);
 }
示例#19
0
        private void CreateSpawn(EQEmu.Spawns.Spawn2 spawn,DisplayFlags flags)
        {
            Model3DGroup group = Model as Model3DGroup;

            Model3DCollection collection = new Model3DCollection();

            if (_mapping.ContainsKey(spawn))
            {
                foreach (Model3D model in _mapping[spawn])
                {
                    group.Children.Remove(model);
                }
            }

            MeshBuilder builder = new MeshBuilder();
            Point3D p = new Point3D(spawn.X,spawn.Y,spawn.Z);

            if( !Clipping.DrawPoint(p) ) return;

            builder.AddBox(p,2,2,2);

            Transform3D headingRotate = new RotateTransform3D()
            {
                CenterX = p.X,
                CenterY = p.Y,
                CenterZ = p.Z,
                Rotation = new AxisAngleRotation3D(
                    new Vector3D(0,0,-1),spawn.HeadingDegrees)
            };

            GeometryModel3D box;
            Material mat = Materials.White;

            if (flags == DisplayFlags.None)
            {
                if (spawn.RoamAreaId > 0)
                {
                    mat = Materials.Red;
                }
                else if (spawn.GridId > 0)
                {
                    mat = Materials.Yellow;
                }
            }
            else if (flags == DisplayFlags.Green)
            {
                mat = Materials.Green;
            }
            else if (flags == DisplayFlags.DarkGray)
            {
                mat = Materials.DarkGray;
            }
            else if (flags == DisplayFlags.Rainbow)
            {
                mat = Materials.Rainbow;
            }
            else if (flags == DisplayFlags.Blue)
            {
                mat = Materials.Blue;
            }

            box = new GeometryModel3D(builder.ToMesh(), mat);
            box.Transform = headingRotate;
            collection.Add(box);

            builder = new MeshBuilder();
            float radius = 3.0f;
            double hx = spawn.X + Math.Cos((spawn.HeadingDegrees - 90) / 180 * Math.PI) * radius;
            double hy = spawn.Y + Math.Sin((spawn.HeadingDegrees + 90) / 180 * Math.PI) * radius;

            builder.AddArrow(new Point3D(spawn.X, spawn.Y, spawn.Z), new Point3D(hx, hy, spawn.Z), 0.5, 1);
            collection.Add(new GeometryModel3D(builder.ToMesh(), mat));

            _mapping[spawn] = collection;
            foreach (Model3D model in collection)
            {
                group.Children.Add(model);
            }
        }
示例#20
0
 // This is for text that flows Left to Right
 public void LeftToRight()
 {
     _displayMode |= DisplayFlags.LCD_ENTRYLEFT;
     Command((byte)Commands.LCD_ENTRYMODESET | (byte)_displayMode);
 }
 public void ShowPoint(ZonePoint pt, DisplayFlags flags=DisplayFlags.None)
 {
     if (pt == null) return;
     CreatePoint(pt,flags);
 }
示例#22
0
        public override void OnInspectorGUI()
        {
            displayFlags = (DisplayFlags)serializedObject.FindProperty("z_display_flags").intValue;
            MainContainerBeginSlim();

            GUILayout.BeginVertical();
            GUILayout.Space(6);
            GUILayout.EndVertical();

            if (GUILayout.Button("Stats & Effects Editor", GUILayout.MinHeight(32)))
            {
                StatsWindow.Open();
            }

            GUILayout.BeginVertical();
            GUILayout.Space(6);
            GUILayout.EndVertical();


            if (Application.isPlaying)
            {
                if (SectionToggle((int)displayFlags, (int)DisplayFlags.Debug, "Debug", DebugIcon))
                {
                    DrawDebug();
                }
            }

            if (SectionDropToggle((int)displayFlags, (int)DisplayFlags.Stats, "Stats", StatsIcon, "stats", typeof(StatValue)))
            {
                statSP = SimpleList("stats", statSP, 120, 1);
            }

            if (SectionToggle((int)displayFlags, (int)DisplayFlags.Effects, "Effects", EffectsIcon))
            {
                DrawEffects();
            }

            if (SectionToggle((int)displayFlags, (int)DisplayFlags.Combat, "Combat", CombatIcon))
            {
                DrawCombat();
            }

            if (SectionToggle((int)displayFlags, (int)DisplayFlags.DamageDealers, "Damage Dealers", DealersIcon))
            {
                DamageDealer[] dealers = myTarget.GetComponentsInChildren <DamageDealer>();
                foreach (DamageDealer dealer in dealers)
                {
                    EditorGUILayout.ObjectField(dealer, typeof(DamageDealer), true);
                }
                if (dealers.Length == 0)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(24);
                    GUILayout.Label("{None}", Skin.GetStyle("SubHeader"));
                    GUILayout.EndHorizontal();
                }

                Animator anim = myTarget.GetComponentInChildren <Animator>();
                if (anim != null && anim.isHuman)
                {
                    SubHeader("Dynamic Creation");
                    boneIndex1 = EditorGUILayout.Popup("Add to Bone", boneIndex1, bones, GUILayout.ExpandWidth(true));
                    if (GUILayout.Button("Add"))
                    {
                        Transform target = anim.GetBoneTransform((HumanBodyBones)boneIndex1);
                        if (target == null)
                        {
                            EditorUtility.DisplayDialog("Stats Cog", "The requested bone '" + bones[boneIndex1] + "' could not be found on the selected rig.", "OK");
                        }
                        else
                        {
                            GameObject newDD = new GameObject();
                            newDD.name = "DamageDealer_" + bones[boneIndex1];
                            newDD.AddComponent <SphereCollider>().isTrigger = true;
                            newDD.AddComponent <DamageDealer>();
                            newDD.transform.SetParent(target);
                            newDD.transform.localPosition = Vector3.zero;
                            Selection.activeGameObject    = newDD;
                        }
                    }
                }
            }

            if (SectionToggle((int)displayFlags, (int)DisplayFlags.DamageReceivers, "Damage Receivers", ReceiversIcon))
            {
                DamageReceiver[] receivers = myTarget.GetComponentsInChildren <DamageReceiver>();
                foreach (DamageReceiver Receiver in receivers)
                {
                    EditorGUILayout.ObjectField(Receiver, typeof(DamageReceiver), true);
                }
                if (receivers.Length == 0)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(24);
                    GUILayout.Label("{None}", Skin.GetStyle("SubHeader"));
                    GUILayout.EndHorizontal();
                }

                Animator anim = myTarget.GetComponentInChildren <Animator>();
                if (anim != null && anim.isHuman)
                {
                    SubHeader("Dynamic Creation");
                    boneIndex2 = EditorGUILayout.Popup("Add to Bone", boneIndex2, bones, GUILayout.ExpandWidth(true));
                    if (GUILayout.Button("Add"))
                    {
                        Transform target = anim.GetBoneTransform((HumanBodyBones)boneIndex2);
                        if (target == null)
                        {
                            EditorUtility.DisplayDialog("Stats Cog", "The requested bone '" + bones[boneIndex2] + "' could not be found on the selected rig.", "OK");
                        }
                        else
                        {
                            GameObject newDD = new GameObject();
                            newDD.name = "DamageReceiver_" + bones[boneIndex2];
                            newDD.AddComponent <CapsuleCollider>().isTrigger = true;
                            newDD.AddComponent <DamageReceiver>();
                            newDD.transform.SetParent(target);
                            newDD.transform.localPosition = Vector3.zero;
                            Selection.activeGameObject    = newDD;
                        }
                    }
                }
            }

            if (SectionToggle((int)displayFlags, (int)DisplayFlags.Events, "Events", EventsIcon))
            {
                DrawEvents();
            }

            MainContainerEnd();
        }