Esempio n. 1
0
    public void Die()
    {
        DifficultyManager.instance.SetAvgLifeTime(Time.time - spawnTime);

        ParticleManager.instance.SpawnEnemyExplodeParticle(transform.position);
        AudioManager.instance.PlaySoundWithRandomPitch(deathSounds[Random.Range(0, deathSounds.Length)], 0.75f, 1.25f);

        DropExperience();
        DropHealth();

        SplineTracer tracer = GetComponent <SplineTracer>();

        if (tracer != null)           //is this enemy using a spline?
        {
            tracer.RemoveFromTrack(); //remove this enemy from the list in the splinetracer
        }

        if (poolBehaviour != null)                           //is this enemy pooled?
        {
            poolBehaviour.DisableInPool();                   //disable this enemy
            if (!ignoreEnemyCount)                           //does this enemy count toward the wave's enemy count?
            {
                SpawnManager.instance.DecreaseEnemyCount(1); //decrease enemy count
                StatManager.instance.IncreaseKillCount();    //increase kill count
            }
        }

        StatManager.instance.IncreaseScore((int)scoreValue);
    }
Esempio n. 2
0
 public void RemoveTracer(SplineTracer tracer)
 {
     tracers.Remove(tracer);
     if (tracers.Count == 0 && destroy)
     {
         Destroy(this.gameObject);
     }
 }
Esempio n. 3
0
 void Start()
 {
     tracer = GetComponent <SplineTracer>();
     //Subscribe to the onNode event to receive junction information automatically when a Node is passed
     tracer.onNode += OnJunction;
     //Subscribe to the onMotionApplied event so that we can immediately update the wagons' positions once the engine's position is set
     tracer.onMotionApplied += OnMotionApplied;
 }
Esempio n. 4
0
 public void Init(SplineTracer tracer, DistanceReceiver receiver, float totalLength)
 {
     rcv          = receiver;
     length       = totalLength;
     target       = tracer;
     titleContent = new GUIContent("Set Distance");
     minSize      = maxSize = new Vector2(240, 90);
 }
Esempio n. 5
0
 private void Awake()
 {
     tracer = GetComponent <SplineTracer>();
     //Wagon compoenent that is attached to the train engine and is marked as "isEngine" will
     //run a recursive setup for the rest of the wagons
     if (isEngine)
     {
         SetupRecursively(null, new SplineSegment(tracer.spline, -1, tracer.direction));
     }
 }
Esempio n. 6
0
        protected override void OnEnable()
        {
            base.OnEnable();
            SplineTracer tracer = (SplineTracer)target;

            motionEditor = new TransformModuleEditor(tracer, this, tracer.motion);
            tracers      = new SplineTracer[targets.Length];
            for (int i = 0; i < tracers.Length; i++)
            {
                tracers[i] = (SplineTracer)targets[i];
            }
        }
Esempio n. 7
0
        protected void DrawResult(SplineSample result)
        {
            SplineTracer tracer = (SplineTracer)target;

            Handles.color = Color.white;
            Handles.DrawLine(tracer.transform.position, result.position);
            SplineEditorHandles.DrawSolidSphere(result.position, HandleUtility.GetHandleSize(result.position) * 0.2f);
            Handles.color = Color.blue;
            Handles.DrawLine(result.position, result.position + result.forward * HandleUtility.GetHandleSize(result.position) * 0.5f);
            Handles.color = Color.green;
            Handles.DrawLine(result.position, result.position + result.up * HandleUtility.GetHandleSize(result.position) * 0.5f);
            Handles.color = Color.red;
            Handles.DrawLine(result.position, result.position + result.right * HandleUtility.GetHandleSize(result.position) * 0.5f);
            Handles.color = Color.white;
        }
Esempio n. 8
0
 public void AddTracer(SplineTracer tracer)
 {
     tracers.Add(tracer);
 }
Esempio n. 9
0
 public void AddTracer(SplineTracer tracer)
 {
     tracers.Add(tracer);
 }
Esempio n. 10
0
 public void RemoveTracer(SplineTracer tracer)
 {
     tracers.Remove(tracer);
     if (tracers.Count == 0 && destroy)
     {
         Destroy(this.gameObject);
     }
 }
Esempio n. 11
0
        protected override void BodyGUI()
        {
            base.BodyGUI();
            EditorGUILayout.LabelField("Tracing", EditorStyles.boldLabel);
            SplineTracer tracer = (SplineTracer)target;

            serializedObject.Update();
            SerializedProperty useTriggers  = serializedObject.FindProperty("useTriggers");
            SerializedProperty triggerGroup = serializedObject.FindProperty("triggerGroup");
            SerializedProperty direction    = serializedObject.FindProperty("_direction");
            SerializedProperty physicsMode  = serializedObject.FindProperty("_physicsMode");

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(useTriggers);
            if (useTriggers.boolValue)
            {
                EditorGUILayout.PropertyField(triggerGroup);
            }
            EditorGUILayout.PropertyField(direction, new GUIContent("Direction"));
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(physicsMode, new GUIContent("Physics Mode"));
            if (EditorGUI.EndChangeCheck())
            {
                for (int i = 0; i < tracers.Length; i++)
                {
                    tracers[i].EditorAwake();
                }
            }

            if (tracer.physicsMode == SplineTracer.PhysicsMode.Rigidbody)
            {
                Rigidbody rb = tracer.GetComponent <Rigidbody>();
                if (rb == null)
                {
                    EditorGUILayout.HelpBox("Assign a Rigidbody component.", MessageType.Error);
                }
                else if (rb.interpolation == RigidbodyInterpolation.None && tracer.updateMethod != SplineUser.UpdateMethod.FixedUpdate)
                {
                    EditorGUILayout.HelpBox("Switch to FixedUpdate mode to ensure smooth update for non-interpolated rigidbodies", MessageType.Warning);
                }
            }
            else if (tracer.physicsMode == SplineTracer.PhysicsMode.Rigidbody2D)
            {
                Rigidbody2D rb = tracer.GetComponent <Rigidbody2D>();
                if (rb == null)
                {
                    EditorGUILayout.HelpBox("Assign a Rigidbody2D component.", MessageType.Error);
                }
                else if (rb.interpolation == RigidbodyInterpolation2D.None && tracer.updateMethod != SplineUser.UpdateMethod.FixedUpdate)
                {
                    EditorGUILayout.HelpBox("Switch to FixedUpdate mode to ensure smooth update for non-interpolated rigidbodies", MessageType.Warning);
                }
            }
            if (tracers.Length == 1)
            {
                motionEditor.DrawInspector();
                cameraFoldout = EditorGUILayout.Foldout(cameraFoldout, "Camera preview");
                if (cameraFoldout)
                {
                    if (cam == null)
                    {
                        cam = tracer.GetComponentInChildren <Camera>();
                    }
                    if (cam != null)
                    {
                        if (rt == null || rt.width != GetRTWidth() || rt.height != GetRTHeight())
                        {
                            CreateRT();
                        }
                        GUILayout.Box("", GUILayout.Width(rt.width), GUILayout.Height(rt.height));
                        RenderTexture    prevTarget = cam.targetTexture;
                        RenderTexture    prevActive = RenderTexture.active;
                        CameraClearFlags lastFlags  = cam.clearFlags;
                        Color            lastColor  = cam.backgroundColor;
                        cam.targetTexture   = rt;
                        cam.clearFlags      = CameraClearFlags.Color;
                        cam.backgroundColor = Color.black;
                        cam.Render();
                        RenderTexture.active = rt;
                        renderCanvas.SetPixels(new Color[renderCanvas.width * renderCanvas.height]);
                        renderCanvas.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
                        renderCanvas.Apply();
                        RenderTexture.active = prevActive;
                        cam.targetTexture    = prevTarget;
                        cam.clearFlags       = lastFlags;
                        cam.backgroundColor  = lastColor;
                        GUI.DrawTexture(GUILayoutUtility.GetLastRect(), renderCanvas, ScaleMode.StretchToFill);
                    }
                    else
                    {
                        EditorGUILayout.HelpBox("There is no camera attached to the selected object or its children.", MessageType.Info);
                    }
                }
            }
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
                for (int i = 0; i < tracers.Length; i++)
                {
                    tracers[i].Rebuild();
                }
            }
        }
Esempio n. 12
0
 protected override void OnSceneGUI()
 {
     base.OnSceneGUI();
     SplineTracer tracer = (SplineTracer)target;
 }