Ejemplo n.º 1
0
    public override void OnEvent(SpawnFrozenBlock evnt)
    {
        IProtocolToken rawToken = evnt.token;
        Vector3        pos      = evnt.Position;
        Quaternion     rot      = evnt.Rotation;

        NetworkPartSpawner.Data.Add(new PartSpawnData(rawToken, evnt.Position, evnt.Rotation, evnt.Owner));
    }
Ejemplo n.º 2
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();
            }
        }
    }
Ejemplo n.º 3
0
    void FreezeObject()
    {
        if (BoltNetwork.IsRunning)
        {
            Vector3    pos  = childProxies[childIndex].transform.position;
            Quaternion rot  = childProxies[childIndex].transform.rotation;
            Part       part = childProxies[childIndex].GetComponent <Part>();

            int id = Random.Range(int.MinValue, int.MaxValue);
            while (GlobalReferences.FrozenParts.ContainsKey(id) && id == -1)
            {
                id = Random.Range(int.MinValue, int.MaxValue);
            }

            Part parentPart = chosenPart.GetComponent <Part>();
            int  parentID   = parentPart.Connections.IndexOf(chosenConnection);

            PartTokenParent token = new PartTokenParent(part.TemplateID, id, parentPart.ID, parentID, conIndex, false);

            var spawn = SpawnFrozenBlock.Create();
            spawn.token    = token;
            spawn.Position = pos;
            spawn.Rotation = rot;
            if (BoltNetwork.IsServer)
            {
                spawn.Owner = 0;
            }
            else
            {
                spawn.Owner = (int)BoltNetwork.Server.ConnectionId;
            }
            spawn.Send();
        }
        else
        {
            Part part = childProxies[childIndex].GetComponent <Part>();
            part.FreezePart();

            Part parentPart = chosenPart.GetComponent <Part>();

            part.Parent      = parentPart.ID;
            part.ParentCon   = parentPart.Connections.IndexOf(chosenConnection);
            part.ConToParent = conIndex;

            parentPart.Children.Add(part.ID);
            parentPart.ChildCons.Add(conIndex);

            Destroy(part.gameObject.GetComponent <CheckGrowCollision>());
        }
    }
Ejemplo n.º 4
0
    private void FreezeObject()
    {
        if (BoltNetwork.IsRunning)
        {
            Vector3    pos = carryGo[currentTempID].transform.position;
            Quaternion rot = carryGo[currentTempID].transform.rotation;
            int        id  = Random.Range(int.MinValue, int.MaxValue);
            while (GlobalReferences.FrozenParts.ContainsKey(id) && id == -1)
            {
                id = Random.Range(int.MinValue, int.MaxValue);
            }

            PartToken token = new PartToken(currentTempID, id, false);

            var spawn = SpawnFrozenBlock.Create();
            spawn.token    = token;
            spawn.Position = pos;
            spawn.Rotation = rot;
            if (BoltNetwork.IsServer)
            {
                spawn.Owner = 0;
            }
            else
            {
                spawn.Owner = (int)BoltNetwork.Server.ConnectionId;
            }
            spawn.Send();

            //Debug.Log("#43 Spawning Block: " + token.ID + ", Position = " + pos.ToString("F2") + ", Rotation = " + rot.eulerAngles.ToString("F2"));
        }
        else
        {
            Vector3 pos = carryGo[currentTempID].transform.localPosition;
            carryGo[currentTempID].transform.parent = null;
            carryGo[currentTempID].GetComponent <Part>().FreezePart();
            carryGo[currentTempID].GetComponent <Rigidbody>().isKinematic = false;

            SpawnObject(currentTempID);
            carryGo[currentTempID].transform.localPosition = pos;
            carryGo[currentTempID].SetActive(true);
        }
    }
Ejemplo n.º 5
0
    public void CtrlZ()
    {
        if (delete)
        {
            TICtrlZ.LastID = deletedPart.ID;

            if (!BoltNetwork.IsRunning)
            {
                GameObject go = PartsHolder.Holder.SpawnGhostPart(deletedPart.TemplateID);

                go.transform.position = position;
                go.transform.rotation = rotation;
                Part part = go.GetComponent <Part>();
                part.FreezePart(deletedPart.ID);
                part.Parent    = deletedPart.Parent;
                part.ParentCon = deletedPart.ParentCon;
                try
                {
                    GlobalReferences.FrozenParts[part.Parent].GetComponent <Part>().SetInactive(part.ParentCon);
                }
                catch { Debug.LogError("Parent not found for Part: " + part.ID); }

                part.Children  = deletedPart.Children;
                part.ChildCons = deletedPart.ChildCons;
                for (int childID = 0; childID < part.Children.Count; ++childID)
                {
                    try
                    {
                        GlobalReferences.FrozenParts[part.Children[childID]].GetComponent <Part>().SetInactive(part.ChildCons[childID]);
                    }
                    catch { Debug.LogError("Child not found for Part: " + part.ID); }
                }

                part.PartOwner = deletedPart.PartOwner;
                part.Respawn   = deletedPart.Respawn;

                foreach (int i in deletedPart.ActiveConnections)
                {
                    part.SetInactive(i);
                }
            }
            else
            {
                var spawn = SpawnFrozenBlock.Create();
                spawn.Position = position;
                spawn.Rotation = rotation;
                spawn.Owner    = deletedPart.PartOwner;
                spawn.token    = new PartTokenParent(deletedPart);
                spawn.Send();
            }
        }
        else
        {
            TICtrlZ.LastID = addedID;


            Part delPart = GlobalReferences.FrozenParts[addedID].GetComponent <Part>();

            if (delPart != null)
            {
                delPart.Delete();
            }
            else
            {
                Debug.LogError("Part " + addedID + " not found - cant be undone");
            }
        }
    }