private void OnDestroy() { if (Label.INSTANCE != null) Label.INSTANCE.Target = null; Hack = null; Destroy(FindObjectOfType<HUD>()); }
public string Address(BasePlayer player) { bool flag; if (player != null) { Networkable networkable = player.net; if (networkable != null) { flag = networkable.connection; } else { flag = false; } } else { flag = false; } if (!flag) { return(null); } return(this.Address(player.net.connection)); }
private void OnDestroy() { if (Label.INSTANCE != null) { Label.INSTANCE.Target = null; } Hack = null; Destroy(FindObjectOfType <HUD>()); }
private void MakeLine(Networkable a, Networkable b) { var dir = -Camera.main.transform.forward; var line = new GameObject("Line").AddComponent<LineRenderer>(); line.transform.parent = transform; line.SetWidth(0.4f, 0.4f); line.SetPosition(0, a.transform.position + dir * 7); line.SetPosition(1, b.transform.position + dir * 7); line.sharedMaterial = NodeMaterial; }
private void MakeLine(Networkable a, Networkable b) { var dir = -Camera.main.transform.forward; var line = new GameObject("Line").AddComponent <LineRenderer>(); line.transform.parent = transform; line.SetWidth(0.4f, 0.4f); line.SetPosition(0, a.transform.position + dir * 7); line.SetPosition(1, b.transform.position + dir * 7); line.sharedMaterial = NodeMaterial; }
public void Leave(Networkable nw) { if (this.networkables == null) { return; } if (!this.networkables.Contains(nw)) { Debug.LogWarning("Leave: Network Group doesn't contain networkable!"); return; } this.networkables.Remove(nw); }
public void Join(Networkable nw) { if (this.networkables == null) { return; } if (this.networkables.Contains(nw)) { Debug.LogWarning("Insert: Network Group already contains networkable!"); return; } this.networkables.Add(nw); }
private void DoLines(Networkable n) { if (LogA.Contains(n)) return; LogA.Add(n); DrawNode(n); foreach (var neighbor in n.Neighbors) { DrawNode(neighbor); MakeLine(n,neighbor); if (neighbor.Level <= Level && neighbor.Hacked) DoLines(neighbor); } }
private void DrawNode(Networkable n, bool hacked = false) { if (LogB.Contains(n)) return; LogB.Add(n); var dir = -Camera.main.transform.forward; var circle = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform; circle.position = n.transform.position + dir * 8; circle.parent = transform; circle.GetComponent<MeshRenderer>().shadowCastingMode = ShadowCastingMode.Off; circle.GetComponent<MeshRenderer>().receiveShadows = false; circle.GetComponent<MeshRenderer>().sharedMaterial = NodeMaterial; circle.gameObject.AddComponent<NetNode>().Label = NodeLabel; circle.GetComponent<NetNode>().Origin = n; circle.GetComponent<NetNode>().CanHack = n.Level <= Level; if (hacked) circle.GetComponent<NetNode>().Hacked = true; }
private void DoLines(Networkable n) { if (LogA.Contains(n)) { return; } LogA.Add(n); DrawNode(n); foreach (var neighbor in n.Neighbors) { DrawNode(neighbor); MakeLine(n, neighbor); if (neighbor.Level <= Level && neighbor.Hacked) { DoLines(neighbor); } } }
public virtual void Spawn() { this.SpawnShared(); if (this.net == null) { this.net = Network.Net.sv.CreateNetworkable(); } this.creationFrame = UnityEngine.Time.frameCount; this.PreInitShared(); this.InitShared(); this.ServerInit(); this.PostInitShared(); this.UpdateNetworkGroup(); this.isSpawned = true; Interface.CallHook("OnEntitySpawned", this); this.SendNetworkUpdateImmediate(true); if (Rust.Application.isLoading && !Rust.Application.isLoadingSave) { base.gameObject.SendOnSendNetworkUpdate(this as BaseEntity); } }
public virtual void Spawn() { this.SpawnShared(); if (this.net == null) { this.net = ((Network.Server)Net.sv).CreateNetworkable(); } this.creationFrame = Time.get_frameCount(); this.PreInitShared(); this.InitShared(); this.ServerInit(); this.PostInitShared(); this.UpdateNetworkGroup(); this.isSpawned = true; Interface.CallHook("OnEntitySpawned", (object)this); this.SendNetworkUpdateImmediate(true); if (Application.isLoading == null || Application.isLoadingSave != null) { return; } ((Component)this).get_gameObject().SendOnSendNetworkUpdate(this as BaseEntity); }
private bool HasTerminal(Networkable n, int level) { if (n == null || NLog.Contains(n)) { return(false); } if (n.GetComponent <Terminal>() && n.Level >= level) { return(true); } NLog.Add(n); for (int i = 0; i < n.Neighbors.Count; ++i) { if (HasTerminal(n.Neighbors[i], level)) { return(true); } } return(false); }
private void DrawNode(Networkable n, bool hacked = false) { if (LogB.Contains(n)) { return; } LogB.Add(n); var dir = -Camera.main.transform.forward; var circle = GameObject.CreatePrimitive(PrimitiveType.Sphere).transform; circle.position = n.transform.position + dir * 8; circle.parent = transform; circle.GetComponent <MeshRenderer>().shadowCastingMode = ShadowCastingMode.Off; circle.GetComponent <MeshRenderer>().receiveShadows = false; circle.GetComponent <MeshRenderer>().sharedMaterial = NodeMaterial; circle.gameObject.AddComponent <NetNode>().Label = NodeLabel; circle.GetComponent <NetNode>().Origin = n; circle.GetComponent <NetNode>().CanHack = n.Level <= Level; if (hacked) { circle.GetComponent <NetNode>().Hacked = true; } }
private bool HasTerminal(Networkable n, int level) { if (n == null || NLog.Contains(n)) return false; if (n.GetComponent<Terminal>() && n.Level >= level) return true; NLog.Add(n); for (int i = 0; i < n.Neighbors.Count; ++i) { if (HasTerminal(n.Neighbors[i], level)) return true; } return false; }
private void Start() { net = GetComponent<Networkable>(); }
public void InitLoad(uint entityID) { this.net = ((Network.Server)Net.sv).CreateNetworkable(entityID); BaseNetworkable.serverEntities.RegisterID(this); this.PreServerLoad(); }
public void Remake() { Generate = false; while (transform.childCount > 0) { DestroyImmediate(transform.GetChild(0).gameObject); } var map = GetMap().OrderBy(room => room.Level); var maxLevel = 0; foreach (var room in map) { var g = new GameObject("Room").transform; g.parent = transform; g.position = new Vector3(room.Position.x, 0, room.Position.y); g.tag = "Merge"; var floor = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; floor.parent = g; floor.localScale = new Vector3(room.Size.x, 0.1f, room.Size.y); floor.localPosition = new Vector3(0, -0.05f, 0); floor.localRotation = Quaternion.identity; floor.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; floor.gameObject.layer = LayerMask.NameToLayer("Ground"); var patrol = new GameObject(room.Level + "-Patrol").transform; patrol.parent = transform; patrol.position = new Vector3(room.Position.x, 0, room.Position.y); patrol.tag = "Patrol"; if (room.Level > maxLevel) { maxLevel = room.Level; } Networkable startDoor = null; foreach (Transform t in room.Spawns.Keys) { var spawn = Instantiate(t); spawn.transform.position = g.position + new Vector3( Random.Range(-room.Size.x / 2 + WallThickness * 2, room.Size.x / 2 - WallThickness * 2), 0.5f, Random.Range(-room.Size.y / 2 + WallThickness * 2, room.Size.y / 2 - WallThickness * 2)); spawn.parent = transform; var human = spawn.GetComponent <Human>(); var net = spawn.GetComponent <Networkable>(); if (human != null) { human.Level = room.Spawns[t]; } if (net != null) { net.Level = room.Spawns[t]; } if (net != null && room.Spawns.ContainsKey(Spawn.transform)) { startDoor = net; } } var wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(WallThickness, WallHeight, room.Size.y * (1 - room.Doors[0]) - (room.Doors[0] != 0 ? DoorWidth / 2 : 0)); wall.localPosition = new Vector3(-room.Size.x / 2 + WallThickness / 2, WallHeight / 2, room.Size.y * room.Doors[0] / 2 + (room.Doors[0] != 0 ? DoorWidth / 4 : 0)); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(WallThickness, WallHeight, room.Size.y * (1 - room.Doors[1]) - (room.Doors[1] != 0 ? DoorWidth / 2 : 0)); wall.localPosition = new Vector3(room.Size.x / 2 - WallThickness / 2, WallHeight / 2, room.Size.y * room.Doors[1] / 2 + (room.Doors[1] != 0 ? DoorWidth / 4 : 0)); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(WallThickness, WallHeight, room.Size.y * room.Doors[0] - (room.Doors[0] != 0 ? DoorWidth / 2 : 0)); wall.localPosition = new Vector3(-room.Size.x / 2 + WallThickness / 2, WallHeight / 2, -room.Size.y * (1 - room.Doors[0]) / 2 - (room.Doors[0] != 0 ? DoorWidth / 4 : 0)); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(WallThickness, WallHeight, room.Size.y * room.Doors[1] - (room.Doors[1] != 0 ? DoorWidth / 2 : 0)); wall.localPosition = new Vector3(room.Size.x / 2 - WallThickness / 2, WallHeight / 2, -room.Size.y * (1 - room.Doors[1]) / 2 - (room.Doors[1] != 0 ? DoorWidth / 4 : 0)); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(room.Size.x * (1 - room.Doors[2]) - (room.Doors[2] != 0 ? DoorWidth / 2 : 0), WallHeight, WallThickness); wall.localPosition = new Vector3(room.Size.x * room.Doors[2] / 2 + (room.Doors[2] != 0 ? DoorWidth / 4 : 0), WallHeight / 2, -room.Size.y / 2 + WallThickness / 2); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(room.Size.x * (1 - room.Doors[3]) - (room.Doors[3] != 0 ? DoorWidth / 2 : 0), WallHeight, WallThickness); wall.localPosition = new Vector3(room.Size.x * room.Doors[3] / 2 + (room.Doors[3] != 0 ? DoorWidth / 4 : 0), WallHeight / 2, room.Size.y / 2 - WallThickness / 2); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(room.Size.x * room.Doors[2] - (room.Doors[2] != 0 ? DoorWidth / 2 : 0), WallHeight, WallThickness); wall.localPosition = new Vector3(-room.Size.x * (1 - room.Doors[2]) / 2 - (room.Doors[2] != 0 ? DoorWidth / 4 : 0), WallHeight / 2, -room.Size.y / 2 + WallThickness / 2); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); wall = GameObject.CreatePrimitive(PrimitiveType.Cube).transform; wall.parent = g; wall.localScale = new Vector3(room.Size.x * room.Doors[3] - (room.Doors[3] != 0 ? DoorWidth / 2 : 0), WallHeight, WallThickness); wall.localPosition = new Vector3(-room.Size.x * (1 - room.Doors[3]) / 2 - (room.Doors[3] != 0 ? DoorWidth / 4 : 0), WallHeight / 2, room.Size.y / 2 - WallThickness / 2); wall.localRotation = Quaternion.identity; wall.GetComponent <MeshRenderer>().sharedMaterial = FloorMaterial; wall.gameObject.layer = LayerMask.NameToLayer("Obstacles"); Transform door; var lev = Mathf.Max(room.Level - (Random.value < 0.4 ? 1 : 0), 0); for (int i = 0; i < 4; ++i) { if (room.Neighbors[i] == null) { continue; } var p = Vector3.zero; switch (i) { case 0: p = new Vector3( -room.Size.x / 2, DoorHeight / 2, room.Size.y * (room.Doors[0]) - room.Size.y / 2); break; case 1: p = new Vector3( room.Size.x / 2, DoorHeight / 2, room.Size.y * (room.Doors[1]) - room.Size.y / 2); break; case 2: p = new Vector3( room.Size.x * (room.Doors[2]) - room.Size.x / 2, DoorHeight / 2, -room.Size.y / 2); break; case 3: p = new Vector3( room.Size.x * (room.Doors[3]) - room.Size.x / 2, DoorHeight / 2, room.Size.y / 2); break; } var already = FindObjectsOfType <Door>() .SingleOrDefault(d => Vector3.Distance(p + floor.position, d.transform.position) < 1); if (already == null) { door = Instantiate(Door).transform; door.parent = g; door.localScale = new Vector3(DoorWidth, DoorHeight, WallThickness); door.localPosition = p; if (i < 2) { door.Rotate(0, 90, 0); } door.parent = transform; door.GetComponent <Networkable>().Level = lev; if (startDoor != null) { door.GetComponent <Networkable>().Neighbors.Add(startDoor); startDoor.Neighbors.Add(door.GetComponent <Networkable>()); door.GetComponent <Networkable>().Level = 2; } } else { door = already.transform; if (startDoor != null) { door.GetComponent <Networkable>().Neighbors.Add(startDoor); startDoor.Neighbors.Add(door.GetComponent <Networkable>()); door.GetComponent <Networkable>().Level = 2; } } } } var network = FindObjectsOfType <Networkable>(); for (int i = 0; i < maxLevel; ++i) { var nodes = network.Where(n => n.Level == i).ToArray(); for (int l = 0; l < nodes.Length; ++l) { if (nodes[l].Neighbors.Count > 0) { continue; } var j = 0; do { j = Random.Range(0, nodes.Length); } while (j == l); nodes[l].Neighbors.Add(nodes[j]); nodes[j].Neighbors.Add(nodes[l]); } } var cabinets = FindObjectsOfType <Cabinet>(); for (int i = 0; i < cabinets.Length; ++i) { NLog.Clear(); var n = cabinets[i].GetComponent <Networkable>(); var l = 0; while (!HasTerminal(n, n.Level) && l++ < 5) { var j = 0; do { j = Random.Range(0, network.Length); } while (j == i && n.Neighbors.Contains(network[j])); n.Neighbors.Add(network[j]); network[j].Neighbors.Add(n); } } for (int i = 0; i < network.Length; ++i) { if (network[i].Neighbors.Count > 0) { continue; } var j = 0; do { j = Random.Range(0, network.Length); } while (j == i && network[i].Neighbors.Contains(network[j])); network[i].Neighbors.Add(network[j]); network[j].Neighbors.Add(network[i]); } //var merger = new GameObject("Merger").AddComponent<MergeMesh>(); //merger.transform.parent = transform; //merger.Merge(GameObject.FindGameObjectsWithTag("Merge").Select(g=>g.transform).ToArray()); }
private void Start() { net = GetComponent <Networkable>(); }