Beispiel #1
0
        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);
        }
Beispiel #2
0
    /// <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;
    }