コード例 #1
0
    //Events
    #region
    public override void OnEvent(CheckBlockFreeze evnt)
    {
        if (BoltNetwork.IsServer)
        {
            Part p          = gameObject.GetComponent <Part>();
            Part parentPart = GlobalReferences.FrozenParts[evnt.ParentID].GetComponent <Part>();

            Connection bestOnPart        = p.Connections[evnt.ConnectionID];
            Connection closestConnection = parentPart.Connections[evnt.ParentCon];

            gameObject.transform.position = evnt.BlockPosition;
            gameObject.transform.rotation = evnt.BlockRotation;
            //AlignPlane.Orient(bestOnPart.Pln, closestConnection.Pln, gameObject);

            if (!ConnectionScanning.CollisionDetection(gameObject) && CheckOriginAlignment(bestOnPart, closestConnection, evnt.BlockPosition, evnt.BlockRotation))// && CheckConncetionAlignment(bestOnPart, closestConnection))//, transform, parentPart.transform))
            {
                var token = new PartTokenParent();
                token.TemplateID = p.TemplateID;

                token.ID = UnityEngine.Random.Range(int.MinValue, int.MaxValue);

                while (GlobalReferences.FrozenParts.ContainsKey(token.ID))
                {
                    token.ID = UnityEngine.Random.Range(int.MinValue, int.MaxValue);
                }


                token.Parent    = evnt.ParentID;
                token.ParentCon = evnt.ParentCon;

                token.Con = evnt.ConnectionID;

                var spawn = SpawnFrozenBlock.Create();
                spawn.token    = token;
                spawn.Position = evnt.BlockPosition;
                spawn.Rotation = evnt.BlockRotation;
                spawn.Send();

                var destroy = BlockDestroy.Create(entity);
                destroy.Send();

                //Debug.Log("#43 Spawning Block: " + token.ID + ", Position = " + evnt.BlockPosition.ToString("F2") + ", Rotation = " + evnt.BlockRotation.eulerAngles.ToString("F2"));
            }
            else
            {
                var decline = DeclineBlockFreeze.Create(entity);
                decline.OldBlockPosition = evnt.OldBlockPosition;
                decline.OldBlockRotation = evnt.OldBlockRotation;

                decline.Send();
            }
        }
    }
コード例 #2
0
ファイル: CheckCollision.cs プロジェクト: jpdrude/DisCo-Code
    void FreezeMultiPlayer()
    {
        var checkFreeze = CheckBlockFreeze.Create(gameObject.GetComponent <NetworkBlockBehaviour>().entity);

        checkFreeze.BlockPosition = gameObject.transform.position;
        checkFreeze.BlockRotation = gameObject.transform.rotation;

        checkFreeze.OldBlockPosition = respawnPosition;
        checkFreeze.OldBlockRotation = respawnRotation;

        checkFreeze.ParentID = closestConnection.ParentPart.ID;

        checkFreeze.ParentCon    = closestConnection.ParentPart.Connections.IndexOf(closestConnection);
        checkFreeze.ConnectionID = gameObject.GetComponent <Part>().Connections.IndexOf(bestOnPart);

        checkFreeze.Send();
    }