示例#1
0
 // Local
 public void InvokeLocalEvent(RayfireGun gun)
 {
     if (LocalEvent != null)
     {
         LocalEvent.Invoke(gun);
     }
 }
示例#2
0
 // Global
 public static void InvokeGlobalEvent(RayfireGun gun)
 {
     if (GlobalEvent != null)
     {
         GlobalEvent.Invoke(gun);
     }
 }
        static void DrawGizmosSelected(RayfireGun gun, GizmoType gizmoType)
        {
            // Ray
            if (gun.showRay == true)
            {
                Gizmos.DrawRay(gun.transform.position, gun.ShootVector * gun.maxDistance);
            }

            // Hit
            if (gun.showHit == true)
            {
                RaycastHit hit;
                bool       hitState = Physics.Raycast(gun.transform.position, gun.ShootVector, out hit, gun.maxDistance, gun.mask);
                if (hitState == true)
                {
                    // TODO COLOR BY IMPACT STR

                    Gizmos.color = Color.red;
                    Gizmos.DrawSphere(hit.point, gun.radius);
                }
            }
        }
        // Inspector editing
        public override void OnInspectorGUI()
        {
            // Get target
            RayfireGun gun = target as RayfireGun;

            // Space
            GUILayout.Space(8);

            // Begin
            GUILayout.BeginHorizontal();

            // Start Shooting
            if (GUILayout.Toggle(gun.shooting, "Start Shooting", "Button", GUILayout.Height(25)) == true)
            {
                gun.StartShooting();
            }
            else
            {
                gun.StopShooting();
            }

            // End
            EditorGUILayout.EndHorizontal();

            // Space
            GUILayout.Space(1);

            // Begin
            GUILayout.BeginHorizontal();

            // Shoot
            if (GUILayout.Button("Single Shot", GUILayout.Height(22)))
            {
                foreach (var targ in targets)
                {
                    (targ as RayfireGun).Shoot();
                }
            }

            // Shoot
            if (GUILayout.Button("    Burst   ", GUILayout.Height(22)))
            {
                foreach (var targ in targets)
                {
                    (targ as RayfireGun).Burst();
                }
            }

            // End
            EditorGUILayout.EndHorizontal();

            // Space
            GUILayout.Space(1);

            // Begin
            GUILayout.BeginHorizontal();

            // Show ray
            gun.showRay = GUILayout.Toggle(gun.showRay, "Show Ray", "Button");

            // Show hit
            gun.showHit = GUILayout.Toggle(gun.showHit, "Show Hit", "Button");

            // End
            EditorGUILayout.EndHorizontal();

            // Space
            GUILayout.Space(3);

            // Draw script UI
            DrawDefaultInspector();

            // Space
            GUILayout.Space(3);

            // Label
            GUILayout.Label("  Filters", EditorStyles.boldLabel);

            // Tag filter
            gun.tagFilter = EditorGUILayout.TagField("Tag", gun.tagFilter);

            // Layer mask
            List <string> layerNames = new List <string>();

            for (int i = 0; i <= 31; i++)
            {
                layerNames.Add(i + ". " + LayerMask.LayerToName(i));
            }
            gun.mask = EditorGUILayout.MaskField("Layer", gun.mask, layerNames.ToArray());
        }