Merge branch 'master' into leveldesign
This commit is contained in:
		
						commit
						84854d4290
					
				
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Allgemein.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Allgemein.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/Grotto_Essen.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/Grotto_Essen.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/Grotto_Kueche.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/Grotto_Kueche.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Master.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Master.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Master.strings.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Master.strings.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Picknick.Baeckerei.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Viagg-io/Assets/Audio/FMOD/Picknick.Baeckerei.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/SBB.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								Viagg-io/Assets/Audio/FMOD/SBB.bank
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							@ -12,9 +12,9 @@
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Composite(Sequence) {
 | 
			
		||||
                RunTree("32_Grotto_Story_B_Grotto_Intro")
 | 
			
		||||
                //RunTree("32_Grotto_Story_B_Grotto_Intro")
 | 
			
		||||
 | 
			
		||||
                //RunTree("32_Grotto_Kueche_Intro")
 | 
			
		||||
                RunTree("32_Grotto_Kueche_Intro")
 | 
			
		||||
                //RunTree("32_Grotto_Kueche_Zwiebeln_schneiden")
 | 
			
		||||
                //RunTree("32_Grotto_Kueche_alles_gefunden")
 | 
			
		||||
                //RunTree("32_Grotto_Kueche_Interesse_Kochen")
 | 
			
		||||
@ -431,8 +431,6 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Kueche") {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // fuer Vorzeigeversion 
 | 
			
		||||
        RunTree("32_Grotto_Hide")
 | 
			
		||||
        RunTree("32_Grotto_Kueche_Intro")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -502,9 +500,6 @@ Tree("32_Grotto_Story_B_Grotto_Antwort_Nonna_Grotto") {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // fuer Vorzeigeversion 
 | 
			
		||||
        RunTree("32_Grotto_Hide")
 | 
			
		||||
 | 
			
		||||
        BTC.SynthesizeText("Mentre aspetti, se vuoi puoi dare un'occhiata alle foto che ho scattato di recente in Bregaglia. Puoi usare il visore che trovi sul tavolo.")
 | 
			
		||||
        BTC.SpeechOutputEnded()
 | 
			
		||||
 | 
			
		||||
@ -658,13 +653,7 @@ Tree("32_Grotto_Kueche_Zwiebeln_schneiden") {
 | 
			
		||||
        BTC.Run("AudioSource.AUDIO.Kueche1Zwiebelnsch")
 | 
			
		||||
 | 
			
		||||
        // Zwiebeln schneiden
 | 
			
		||||
        BTC.Set("Collider.INTERACTABLES.ZwiebelTrigger", "otherTag", "Messer")
 | 
			
		||||
        BTC.Run("Collider.INTERACTABLES.ZwiebelTrigger")
 | 
			
		||||
        Composite(Marathon) {
 | 
			
		||||
            BTC.Run("StudioEventEmitter.INTERACTABLES.ZwiebelSchneiden")
 | 
			
		||||
            BTC.Hide("GO.INTERACTABLES.Zwiebel01")
 | 
			
		||||
            BTC.Show("GO.INTERACTABLES.GeschnitteneZwiebe")
 | 
			
		||||
        }
 | 
			
		||||
        BTC.FindObjectsByTag("SlicedZwiebel", 6)
 | 
			
		||||
 | 
			
		||||
        BTC.Run("AudioSource.AUDIO.Kueche2Zwiebelnsch")
 | 
			
		||||
 | 
			
		||||
@ -880,9 +869,9 @@ Tree("32_Grotto_Kueche_alles_gefunden") {
 | 
			
		||||
        BTC.SynthesizeText("Bene, hai trovato tutto. Ora versa un po' di olio d'oliva nella pentola.")
 | 
			
		||||
        BTC.SpeechOutputEnded()
 | 
			
		||||
 | 
			
		||||
        // Oel in Topf geben - ToDo: Particle Trigger
 | 
			
		||||
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Olivenoel")
 | 
			
		||||
        BTC.Run("Collider.INTERACTABLES.Topf")
 | 
			
		||||
        // Oel in Topf geben
 | 
			
		||||
        BTC.Run("Particle.INTERACTABLES.Olivenoel")
 | 
			
		||||
 | 
			
		||||
        BTC.Run("AudioSource.AUDIO.Kueche2allesgefund")
 | 
			
		||||
 | 
			
		||||
        // Herd anstellen - ToDo: Handling in Story?
 | 
			
		||||
@ -890,7 +879,7 @@ Tree("32_Grotto_Kueche_alles_gefunden") {
 | 
			
		||||
        //BTC.Run("StudioEventEmitter.STATIC.HerdplatteAnstelle")
 | 
			
		||||
 | 
			
		||||
        // Zwiebeln in Topf geben
 | 
			
		||||
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "Zwiebeln")
 | 
			
		||||
        BTC.Set("Collider.INTERACTABLES.Topf", "otherTag", "SlicedZwiebel")
 | 
			
		||||
        BTC.Run("Collider.INTERACTABLES.Topf")
 | 
			
		||||
        BTC.Run("StudioEventEmitter.INTERACTABLES.ZwiebelnInTopf")
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
@ -525,6 +525,24 @@ public class BTC : MonoBehaviour {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Task]
 | 
			
		||||
    public void FindObjectsByTag(string tag, int minNumObjs)
 | 
			
		||||
    {
 | 
			
		||||
        if ((Task.getState == NodeState.FirstRun) || (Task.getState == NodeState.Running))
 | 
			
		||||
        {
 | 
			
		||||
            GameObject[] objsWithTag;
 | 
			
		||||
 | 
			
		||||
            objsWithTag = GameObject.FindGameObjectsWithTag(tag);
 | 
			
		||||
 | 
			
		||||
            if (objsWithTag.Length >= minNumObjs)
 | 
			
		||||
            {
 | 
			
		||||
                Debug.Log($"FindObjectsByTag found {objsWithTag.Length} objects with tag {tag}");
 | 
			
		||||
                Task.SetSucceeded();
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    #endregion
 | 
			
		||||
 | 
			
		||||
    #region camera or player tracking
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										87
									
								
								Viagg-io/Assets/Packages/MyBT/BTC/Handlers/NamedParticle.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								Viagg-io/Assets/Packages/MyBT/BTC/Handlers/NamedParticle.cs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
//============= Copyright (c) Ludic GmbH, All rights reserved. ==============
 | 
			
		||||
//
 | 
			
		||||
// Purpose: Part of the My Behaviour Tree Controller Code
 | 
			
		||||
//
 | 
			
		||||
//=============================================================================
 | 
			
		||||
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using UnityEngine.UI;
 | 
			
		||||
using MyBT;
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
using UnityEditor;
 | 
			
		||||
[CustomEditor(typeof(NamedParticle))]
 | 
			
		||||
public class NamedParticleInspector : ComponentHandlerInspector
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
[System.Serializable]
 | 
			
		||||
public class NamedParticle : ComponentHandler
 | 
			
		||||
{
 | 
			
		||||
    public override string TypeLabel()
 | 
			
		||||
    {
 | 
			
		||||
        return "Particle";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override string ContentLabel()
 | 
			
		||||
    {
 | 
			
		||||
        UpdateComponent();
 | 
			
		||||
        return objName;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void UpdateComponent()
 | 
			
		||||
    {
 | 
			
		||||
        base.UpdateComponent();
 | 
			
		||||
        _particleSys = GetComponent<ParticleSystem>();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public string objName = "ParticleXY";
 | 
			
		||||
    private ParticleSystem _particleSys;
 | 
			
		||||
    private List<ParticleSystem.Particle> _enteredParticles = new List<ParticleSystem.Particle>();
 | 
			
		||||
    private bool _enteredTrigger = false;
 | 
			
		||||
 | 
			
		||||
    public override string[][] helpText
 | 
			
		||||
    {
 | 
			
		||||
        get
 | 
			
		||||
        {
 | 
			
		||||
            return new string[][] {
 | 
			
		||||
                new string[] {"Run", "Return Success on Trigger Event", $"BTC.Run(\"{roomId}\", \"{gameObject.name}\")"},
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void Run(NodeState nodeState)
 | 
			
		||||
    {
 | 
			
		||||
        switch (nodeState)
 | 
			
		||||
        {
 | 
			
		||||
            case NodeState.FirstRun:
 | 
			
		||||
                _enteredTrigger = false;
 | 
			
		||||
                break;
 | 
			
		||||
            case NodeState.Running:
 | 
			
		||||
                if (_enteredTrigger)
 | 
			
		||||
                {
 | 
			
		||||
                    Task.SetSucceeded();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                break;
 | 
			
		||||
            case NodeState.Aborting:
 | 
			
		||||
                _enteredTrigger = false;
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnParticleTrigger()
 | 
			
		||||
    {
 | 
			
		||||
        // Get particles that entered the trigger
 | 
			
		||||
        int numEnter = _particleSys.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, _enteredParticles);
 | 
			
		||||
 | 
			
		||||
        if (numEnter > 0)
 | 
			
		||||
        {
 | 
			
		||||
            _enteredTrigger = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 0c5c1ad29018b43708e475001ee673b1
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -11,7 +11,7 @@ public class OnCollideSound : MonoBehaviour
 | 
			
		||||
{
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    EventReference soundRef;
 | 
			
		||||
    public EventReference soundRef;
 | 
			
		||||
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    float minVelocity = 0.1f;
 | 
			
		||||
@ -25,7 +25,7 @@ public class OnCollideSound : MonoBehaviour
 | 
			
		||||
    private bool _specialCase = false;
 | 
			
		||||
    private Rigidbody _rigidbody;
 | 
			
		||||
 | 
			
		||||
    private void Start()
 | 
			
		||||
    private void Awake()
 | 
			
		||||
    {
 | 
			
		||||
        _rigidbody = GetComponent<Rigidbody>();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ public class OnGrabSound : MonoBehaviour
 | 
			
		||||
{
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    EventReference soundRef;
 | 
			
		||||
    public EventReference soundRef;
 | 
			
		||||
 | 
			
		||||
    // Start is called before the first frame update
 | 
			
		||||
    void Start()
 | 
			
		||||
 | 
			
		||||
@ -4,6 +4,11 @@ using UnityEngine;
 | 
			
		||||
using EzySlice;
 | 
			
		||||
using UnityEngine.InputSystem;
 | 
			
		||||
using UnityEngine.XR.Interaction.Toolkit;
 | 
			
		||||
using System;
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
using FMOD;
 | 
			
		||||
using FMODUnity;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
public class SliceObjectsVR : MonoBehaviour
 | 
			
		||||
{
 | 
			
		||||
@ -17,6 +22,17 @@ public class SliceObjectsVR : MonoBehaviour
 | 
			
		||||
    private Vector3 lastSlicerPosition; // Letzte Position von SLICER
 | 
			
		||||
    private Vector3 slicerVelocity; // Berechnete Geschwindigkeit von SLICER
 | 
			
		||||
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    EventReference onGrabSoundRef;
 | 
			
		||||
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    EventReference onCollideSoundRef;
 | 
			
		||||
 | 
			
		||||
    [SerializeField]
 | 
			
		||||
    EventReference sliceSoundRef;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    void Start()
 | 
			
		||||
    {
 | 
			
		||||
        lastSlicerPosition = transform.position; // Startposition speichern
 | 
			
		||||
@ -28,10 +44,7 @@ public class SliceObjectsVR : MonoBehaviour
 | 
			
		||||
        slicerVelocity = (transform.position - lastSlicerPosition) / Time.fixedDeltaTime;
 | 
			
		||||
        lastSlicerPosition = transform.position;
 | 
			
		||||
 | 
			
		||||
        // Debugging: Prüfen, ob die Velocity sinnvoll ist
 | 
			
		||||
        //Debug.Log($"SLICER Velocity: {slicerVelocity}, Magnitude: {slicerVelocity.magnitude}");
 | 
			
		||||
 | 
			
		||||
        // Prüfen, ob ein schneidbares Objekt getroffen wird
 | 
			
		||||
        // Pruefen, ob ein schneidbares Objekt getroffen wird
 | 
			
		||||
        bool hasHit = Physics.Linecast(startSlicePoint.position, endSlicePoint.position, out RaycastHit hit, sliceableLayer);
 | 
			
		||||
        if (hasHit)
 | 
			
		||||
        {
 | 
			
		||||
@ -42,22 +55,21 @@ public class SliceObjectsVR : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
    public void Slice(GameObject target)
 | 
			
		||||
    {
 | 
			
		||||
        //Debug.Log("Slice Function active: " + target.name);
 | 
			
		||||
 | 
			
		||||
        // Normalenvektor für die Schnittebene berechnen
 | 
			
		||||
        // Normalenvektor fuer die Schnittebene berechnen
 | 
			
		||||
        Vector3 planeNormal = Vector3.Cross(endSlicePoint.position - startSlicePoint.position, slicerVelocity);
 | 
			
		||||
        planeNormal.Normalize();
 | 
			
		||||
 | 
			
		||||
        //Debug.Log($"Direction: {planeNormal}, Magnitude: {planeNormal.magnitude}");
 | 
			
		||||
        //Debug.Log($"Velocity: {slicerVelocity}, Magnitude: {slicerVelocity.magnitude}");
 | 
			
		||||
 | 
			
		||||
        // Prüfen, ob das Objekt geschnitten werden kann
 | 
			
		||||
        // Pruefen, ob das Objekt geschnitten werden kann
 | 
			
		||||
        SlicedHull hull = target.Slice(endSlicePoint.position, planeNormal);
 | 
			
		||||
 | 
			
		||||
        if (hull != null)
 | 
			
		||||
        {
 | 
			
		||||
            //Debug.Log("Hull isn't empty");
 | 
			
		||||
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
            RuntimeManager.PlayOneShot(sliceSoundRef, transform.position);
 | 
			
		||||
#endif
 | 
			
		||||
            GameObject upperHull = hull.CreateUpperHull(target, crossSectionMaterial);
 | 
			
		||||
            SetupSlicedComponent(upperHull);
 | 
			
		||||
 | 
			
		||||
@ -70,15 +82,29 @@ public class SliceObjectsVR : MonoBehaviour
 | 
			
		||||
 | 
			
		||||
    public void SetupSlicedComponent(GameObject slicedObject)
 | 
			
		||||
    {
 | 
			
		||||
        //Debug.Log("New object created");
 | 
			
		||||
        Rigidbody rb = slicedObject.AddComponent<Rigidbody>(); //add Rigidbody
 | 
			
		||||
        rb.interpolation = RigidbodyInterpolation.Interpolate;
 | 
			
		||||
 | 
			
		||||
        MeshCollider collider = slicedObject.AddComponent<MeshCollider>();  //add Meshcolider
 | 
			
		||||
        collider.convex = true;  //make Collider convex
 | 
			
		||||
 | 
			
		||||
        rb.AddExplosionForce(cutForce, slicedObject.transform.position, explosionRadius); //add force for realistic behaviour
 | 
			
		||||
 | 
			
		||||
        slicedObject.layer = 6; // 6 = "sliceableLayer"
 | 
			
		||||
        slicedObject.AddComponent<XRGrabInteractable>(); //add grabbable Script
 | 
			
		||||
        slicedObject.AddComponent<ComponentController>(); //add BT-Controller
 | 
			
		||||
        slicedObject.AddComponent<OnGrabSound>(); //add grab sound
 | 
			
		||||
        slicedObject.AddComponent<OnCollideSound>(); //add collision sound
 | 
			
		||||
 | 
			
		||||
        XRGrabInteractable grabInteractable = slicedObject.AddComponent<XRGrabInteractable>(); //add grabbable Script
 | 
			
		||||
        grabInteractable.movementType = XRBaseInteractable.MovementType.VelocityTracking;
 | 
			
		||||
        grabInteractable.useDynamicAttach = true;
 | 
			
		||||
 | 
			
		||||
#if FMOD_AVAILABLE
 | 
			
		||||
        OnGrabSound onGrabSoundScript = slicedObject.AddComponent<OnGrabSound>(); //add grab sound
 | 
			
		||||
        onGrabSoundScript.soundRef = onGrabSoundRef;
 | 
			
		||||
        OnCollideSound onCollideSoundScript = slicedObject.AddComponent<OnCollideSound>(); //add collision sound
 | 
			
		||||
        onCollideSoundScript.soundRef = onCollideSoundRef;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        slicedObject.gameObject.tag = "SlicedZwiebel";
 | 
			
		||||
        string timeStamp = DateTime.Now.ToString("mmssffff");
 | 
			
		||||
        slicedObject.gameObject.name = $"SlicedZwiebel_{timeStamp}";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -18,6 +18,7 @@ TagManager:
 | 
			
		||||
  - Parmigiano
 | 
			
		||||
  - Topf
 | 
			
		||||
  - Messer
 | 
			
		||||
  - SlicedZwiebel
 | 
			
		||||
  layers:
 | 
			
		||||
  - Default
 | 
			
		||||
  - TransparentFX
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user