//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(); } } }
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(); }