void ResetAllParts() { foreach (GameObject go in GlobalReferences.FrozenParts.Values) { Part part = go.GetComponent <Part>(); int templateId = part.TemplateID; int id = (int)part.ID; Vector3 scale = go.transform.localScale; Vector3 pos = go.transform.position; Quaternion rot = go.transform.rotation; var token = new PartTokenComplex(); token.TemplateID = templateId; token.ID = id; //token.Position = pos; //token.Rotation = rot; //token.Scale = scale; if (part.Parent != -1) { token.Parent = part.Parent; } else { token.Parent = -1; } if (part.ParentCon != -1) { token.ParentCon = part.ParentCon; } else { token.ParentCon = -1; } token.ActiveCons = part.ActiveConnections; //token.Children = part.Children; //token.ChildCons = part.ChildCons; var compare = BlockCompare.Create(); compare.CompareToken = token; compare.BlockEntity = go.GetComponent <NetworkBlockBehaviour>().entity; compare.BlockPosition = go.transform.position; compare.BlockRotation = go.transform.rotation; compare.Send(); } var changeNumParts = ChangeNumOfParts.Create(); changeNumParts.Number = GlobalReferences.NumOfParts; changeNumParts.Send(); }
public override void OnEvent(BlockCompare evnt) { if (BoltNetwork.IsClient) { PartTokenComplex token = (PartTokenComplex)evnt.CompareToken; GameObject go = evnt.BlockEntity.gameObject; NetworkBlockBehaviour behaviour = go.GetComponent <NetworkBlockBehaviour>(); go.transform.position = evnt.BlockPosition; go.transform.rotation = evnt.BlockRotation; int tempID = token.TemplateID; int id = token.ID; int parent = token.Parent; int parentCon = token.ParentCon; List <int> activeCons = token.ActiveCons; behaviour.state.SetTransforms(behaviour.state.BlockTransform, transform); Part part = go.GetComponent <Part>(); if (part == null) { part = behaviour.InitializeNetworkedPart(tempID, id); } if (part.Parent == -1 && parent != -1) { part.Parent = parent; part.ParentCon = parentCon; } if (activeCons.Count > 0) { part.ActiveConnections = activeCons; } if (id != -1 && id != part.ID && GlobalReferences.FrozenParts.ContainsKey(id)) { part.ChangeID(id); } } }