public void InitializeHandler() { dissolveOnContactLayerMask = LayerMask.GetMask(new string[] { "FactoryObject", "Floor", "Wall" }); originalLayerByChildObject = new Dictionary <Transform, int>(); RecursiveStoreInitialChildLayer(transform); dissolveShader = Shader.Find(dissolveShaderPath); if (dissolveShader == null) { Debug.Log($"WARNING - Unable to find shader: '{dissolveShaderPath}'"); } generalSoundEffectPlayer = FindObjectOfType <GeneralSoundEffectPlayer>(); partHandler = GetComponent <ConveyorPartHandler>(); allRBs = GetComponentsInChildren <Rigidbody>(true); allRBInitialMasses = new float[allRBs.Length]; for (int i = 0; i < allRBs.Length; i++) { allRBInitialMasses[i] = allRBs[i].mass; } allObjectRenderers = GetComponentsInChildren <Renderer>(true); allDefaultMaterialsPerRenderer = new List <Material[]>(); foreach (Renderer objectRenderer in allObjectRenderers) { // Create copies of all original materials in the renderer Material[] rendererMaterials = new Material[objectRenderer.materials.Length]; for (int i = 0; i < objectRenderer.materials.Length; i++) { // Make a copy then add it to stored array Material newMaterial = new Material(objectRenderer.materials[i]); rendererMaterials[i] = newMaterial; } allDefaultMaterialsPerRenderer.Add(rendererMaterials); } allDissolveMaterials = new List <Material>(); allDissolveMaterialsPerRenderer = new List <Material[]>(); foreach (Renderer objectRenderer in allObjectRenderers) { // Create copies of all original materials in the renderer Material[] rendererMaterials = new Material[objectRenderer.materials.Length]; for (int i = 0; i < objectRenderer.materials.Length; i++) { // Make a copy then change the shader, then add it to stored array Material newMaterial = new Material(objectRenderer.materials[i]); newMaterial.shader = dissolveShader; newMaterial.SetFloat("_DissolveRatio", 0.0f); rendererMaterials[i] = newMaterial; allDissolveMaterials.Add(newMaterial); } allDissolveMaterialsPerRenderer.Add(rendererMaterials); } }
void Start() { soundEffectPlayer = FindObjectOfType <GeneralSoundEffectPlayer>(); activeJobPartTypes = new List <string>(); activeTVBoxHandlers = new List <TVBoxHandler>(); availableTVBoxHandlers = new List <TVBoxHandler>(); foreach (TVBoxHandler tvBoxHandler in tvBoxHandlers) { availableTVBoxHandlers.Add(tvBoxHandler); } currentConveyorSpeed = conveyorBeltHandlers[0].GetSpeed(); foreach (ConveyorBeltHandler beltHandler in conveyorBeltHandlers) { beltHandler.SetSpeed(0); } currentSpawnTimeMultiplier = spawnManager.GetSpawnTimeMultiplier(); currentTimeMultiplier = tvBoxHandlers[0].GetTimeMultiplier(); mainTVComponentObjects[0].SetActive(true); mainTVComponentObjects[1].SetActive(false); mainTVComponentObjects[2].SetActive(false); rightControllerDevice = InputDevices.GetDeviceAtXRNode(rightController); leftControllerDevice = InputDevices.GetDeviceAtXRNode(leftController); StartCoroutine(BackgroundMusicPlayerCo()); }
public void InitializeHandler() { startingPartType = partType; allAttatchedBasePartTypes.Add(startingPartType); justLeftHandPartLayerMask = LayerMask.GetMask(new string[] { "LeftHandPart" }); justRightHandPartLayerMask = LayerMask.GetMask(new string[] { "RightHandPart" }); physicsObjectHandler = GetComponent <GeneralPhysicsObjectHandler>(); grabInteractableScript = GetComponent <XRGrabInteractable>(); mainRenderer = GetComponent <Renderer>(); mainPartColl = GetComponent <Collider>(); rb = GetComponent <Rigidbody>(); generalSoundEffectPlayer = FindObjectOfType <GeneralSoundEffectPlayer>(); // If it has sub parts to manage... if (subPartInfoByObject.Count > 0) { handGrabbingController = FindObjectOfType <HandGrabbingController>(); if (handGrabbingController == null) { Debug.LogError($"ERROR - ({gameObject.name}) - Could not find object of type HandGrabbingController"); return; } foreach (GameObject subPart in subPartInfoByObject.Keys) { Collider subPartBaseColl = subPart.GetComponent <Collider>(); if (subPartBaseColl != null) { subPartBaseColl.enabled = false; } // Disable the extra colls and renderers subPart.transform.GetChild(0).gameObject.SetActive(false); Renderer subPartRenderer = subPart.GetComponent <Renderer>(); if (subPartRenderer != null) { subPartRenderer.enabled = false; } subPart.transform.GetChild(1).GetChild(1).gameObject.SetActive(false); DropZoneHandler dropZoneHandler = subPart.transform.GetChild(1).GetChild(0).GetComponent <DropZoneHandler>(); dropZoneHandler.SetConnectedConveyorBeltHandler(this); dropZoneHandler.SetActiveTriggerLayerMask(0); // Notify it when an object is released to check if it is under a trigger handGrabbingController.AddOnObjectReleasedListener(dropZoneHandler.OnObjectReleased); allDropZoneHandlers.Add(dropZoneHandler); } } initialInteractableGrabbableLayerMask = grabInteractableScript.interactionLayerMask; partsSpawnManager = FindObjectOfType <PartsSpawnManager>(); physicsObjectHandler.InitializeHandler(); // Initialize with all parts disabled OnPartDisabled(false); hasInitializedOnce = true; }