protected virtual void OnLoadObjectColliders() { var colliders = GetComponentsInChildren <Collider>(); Hitbox = GetComponentInChildren <Hitbox>(); if (Hitbox == null) { foreach (var c in colliders) { var hitbox = c.GetComponent <Hitbox>(); if (hitbox == null) { continue; } if (Hitbox != null) { Debug.LogWarning( $"There is more than one Hitbox in this model ({name}) with may cause problems with collision detection.", this); continue; } Hitbox = hitbox; } } Colliders.AddRange(colliders); }
/// <summary> /// For meshes... /// </summary> /// <param name="assetLoaderContext"></param> public void OnModelLoaded(object sender, ImportedMeshEventArgs args) { if (args.Name != this.GetId()) { return; } bool outlineWasHighlighted = outlineOnClick.Highlighted; if (Model != null) { outlineOnClick.UnHighlight(); outlineOnClick.ClearRenderers(); Model.SetActive(false); Destroy(Model); } Model = args.RootGameObject; Model.gameObject.transform.parent = Visual.transform; Model.gameObject.transform.localPosition = Vector3.zero; Model.gameObject.transform.localRotation = Quaternion.identity; gameObject.GetComponent <BindParentToChild>().ChildToBind = Model; foreach (Renderer child in Model.GetComponentsInChildren <Renderer>(true)) { child.gameObject.AddComponent <OnClickCollider>().Target = gameObject; child.gameObject.AddComponent <MeshCollider>(); } aoRenderers.Clear(); Colliders.Clear(); aoRenderers.AddRange(Model.GetComponentsInChildren <Renderer>(true)); Colliders.AddRange(Model.GetComponentsInChildren <MeshCollider>(true)); outlineOnClick.InitRenderers(aoRenderers); outlineOnClick.InitMaterials(); //transparent = false; //needs to be set before 1st call of SetVisibility after model loading SetVisibility(visibility, forceShaderChange: true); if (outlineWasHighlighted) { outlineOnClick.Highlight(); if (SelectorMenu.Instance.ManuallySelected) { DisplayOffscreenIndicator(true); } } MeshImporter.Instance.OnMeshImported -= OnModelLoaded; }