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