Example #1
0
    void showCutcables(_StructureHit3 hitter)
    {
        var tf = transform;


        if (tfStartSideHub != null)
        {
            var rot = tf.rotation;

            foreach (var pos in sidePositions)
            {
                createCutcableInstance(tfStartSideHub, pos.start, rot, hitter);
            }
        }

        if (tfEndSideHub != null)
        {
            var rot = Quaternion.Inverse(tf.rotation);

            foreach (var pos in sidePositions)
            {
                createCutcableInstance(tfEndSideHub, pos.end, rot, hitter);
            }
        }
    }
Example #2
0
    public _StructurePart3 fallDownDestructionSurface(_StructureHit3 hitter, Vector3 force, Vector3 point)
    // 落下する物体用
    {
        var instance = getDestructionSurfaceInstance(hitter.structure.tf);

        instance.fallDownDestructionSurface(force, point);

        return(instance);
    }
Example #3
0
    // 瓦解(表示用:破片メッシュのインスタンス化など)-----------------------
    // 子孫の fallDown() から必要に応じて呼ばれる

    public _StructurePart3 fallDownDestructionSurface(_StructureHit3 hitter)
    // ただ消える物体用
    {
        var instance = getDestructionSurfaceInstance(hitter.structure.tf);

        Destroy(instance.gameObject);

        return(instance);
    }
Example #4
0
    protected override bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
    {
        showCutcables(hitter);


        fallDownDestructionSurface(hitter);


        return(true);
    }
Example #5
0
    public void cut(_StructureHit3 hitter)
    {
        var tf = transform;

        if (!hitter.breakManager.isPartBroken(partId))           // breaker.structure.nearRender.isVisible( partId ) )
        {
            //fallDownAllChildren( hitter, 0.0f, Vector3.down, tf.position + tf.forward * ( tf.localScale.z * 0.5f ) );
            fallDownEntity(hitter, Vector3.down, tf.position + tf.forward * (tf.localScale.z * 0.5f));
        }
    }
Example #6
0
 public void cutAllLinkedCablesets(_StructureHit3 hitter)
 {
     for (var link = cablesetLink; link != null; link = link.next)
     {
         if (link.cableset != null)
         {
             link.cableset.cut(hitter);
         }
     }
 }
Example #7
0
    protected void fallDownEntity(_StructureHit3 hitter, Vector3 force, Vector3 point)
    // パーツ個体のみの破壊(子パーツ破壊不要ならこれの直呼びでOK)
    {
        var isBreak = fallDown(hitter, force, point);


        if (isBreak)
        {
            hitter.breakAndPartVisibilityOff(this);
        }
    }
Example #8
0
    public CutcableLinkHolder3 cutcableLink;            // 自分につながる断線ケーブルのチェイン



    protected override bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
    {
        cablesetLink.cutAllLinkedCablesets(hitter);


        var instance = fallDownDestructionSurface(hitter, force, point);


        cutcableLink.reparentAllCutcables(instance);


        return(true);
    }
Example #9
0
    protected override bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
    {
        //var tf = transform;


        //var smoke = (GameObject)Instantiate( GM.roadBreakPrefab, tf.position, GM.roadBreakPrefab.transform.rotation );

        //Destroy( smoke, 1.0f );


        fallDownDestructionSurface(hitter);


        return(true);
    }
Example #10
0
    // 瓦解(パーツ本体用:メッシュ破壊など) ---------------------------
    //  主に _Hit3 関連から呼ばれる 破壊が必要な際の窓口
    // 子孫の差異に関係なく定型なので、仮想関数ではない

    public void fallDownAllChildren(_StructureHit3 hitter, Vector3 force, Vector3 point)
    // 所持する子パーツを含めて破壊する(単純に fallDownEntity() を子の分まわしている)
    {
        fallDownEntity(hitter, force, point);


        if (children != null)
        {
            foreach (var child in children)
            {
                if (child != null && !hitter.breakManager.isPartBroken(child.partId))
                {
                    child.fallDownEntity(hitter, force, point);
                }
            }
        }
    }
Example #11
0
    void createCutcableInstance(Transform tfHub, Vector3 pos, Quaternion rot, _StructureHit3 hitter)
    {
        //pos = structure.tf.TransformPoint( pos );

        //rot *= structure.tf.rotation;



        var cutcableInstance = (CutCable3)Instantiate(GM.cutcablePrefab, pos, rot);

        cutcableInstance.transform.parent = hitter.structure.near.transform;        //hitter.transform;



        tfHub.GetComponent <PlotPartUtlPole3>().cutcableLink.addCutCable(cutcableInstance);
        //tfHub.GetComponentInParent<PlotPartUtlPole3>().cutcableLink.addCutCable( cutcableInstance );
    }
Example #12
0
    // 瓦解 =============================================
    // ちょっとごちゃごちゃしてなくもない。後から加えた仕組みも多いし。場合分けを再検討してすっきりさせたい。


    // 瓦解(継承用:子孫ごとのふるまい)--------------------------------------
    //  fallDownAllChildren() からパーツ個別に呼ばれる
    //  パーツごとに異なるふるまいが必要な場合は、これを継承して記述する

    protected abstract bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point);
Example #13
0
 public bool FallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
 {
     throw new System.NotImplementedException();
 }
Example #14
0
    protected override bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
    {
        //fallDownDestructionSurface( hitter, pressure, direction, point );

        return(false);
    }
Example #15
0
    protected override bool fallDown(_StructureHit3 hitter, Vector3 force, Vector3 point)
    {
        fallDownDestructionSurface(hitter, force, point);

        return(true);
    }