void FixedUpdate() { if (input.IsDown(BUTTON.CHAT)) { enabled = false; } else { if (!player.IsSpectating()) { player.SetPlayerFlag(BasePlayer.PlayerFlags.Spectating, true); TransformEx.SetLayerRecursive(gameObject, "Invisible"); CancelInvoke("MetabolismUpdate"); CancelInvoke("InventoryUpdate"); } direction = Vector3.zero; if (input.IsDown(BUTTON.FORWARD)) { direction.z++; } if (input.IsDown(BUTTON.RIGHT)) { direction.x++; } if (input.IsDown(BUTTON.LEFT)) { direction.x--; } if (input.IsDown(BUTTON.BACKWARD)) { direction.z--; } if (input.IsDown(BUTTON.FIRE_PRIMARY)) { if (input.IsDown(BUTTON.PREVIOUS)) { speed++; } else if (input.IsDown(BUTTON.NEXT)) { speed--; } } if (direction != Vector3.zero) { CheckParent(); Move(transform.position + Quaternion.Euler(input.current.aimAngles) * direction * Time.deltaTime * speed); } } }
void OnDisable() { CheckParent(); RaycastHit hit; if (Physics.Raycast(new Ray(transform.position, Vector3.down), out hit, 25000) || Physics.Raycast(new Ray(transform.position, Vector3.up), out hit, 25000)) { Move(hit.point); } player.metabolism.Reset(); InvokeRepeating("InventoryUpdate", 1f, 0.1f * UnityEngine.Random.Range(0.99f, 1.01f)); player.SetPlayerFlag(BasePlayer.PlayerFlags.Spectating, false); TransformEx.SetLayerRecursive(gameObject, "Player (Server)"); player.ChatMessage("Fly deactivated!"); }
public override void PostInitShared() { base.PostInitShared(); GameObject gameObject = null; gameObject = ((item == null || !item.info.worldModelPrefab.isValid) ? Object.Instantiate(itemModel) : item.info.worldModelPrefab.Instantiate()); gameObject.transform.SetParent(base.transform, false); gameObject.transform.localPosition = Vector3.zero; gameObject.transform.localRotation = Quaternion.identity; TransformEx.SetLayerRecursive(gameObject, base.gameObject.layer); childCollider = gameObject.GetComponent <Collider>(); if ((bool)childCollider) { childCollider.enabled = false; childCollider.enabled = true; } if (base.isServer) { WorldModel component = gameObject.GetComponent <WorldModel>(); float mass = (component ? component.mass : 1f); float drag = 0.1f; float angularDrag = 0.1f; Rigidbody rigidbody = base.gameObject.AddComponent <Rigidbody>(); rigidbody.mass = mass; rigidbody.drag = drag; rigidbody.angularDrag = angularDrag; rigidbody.interpolation = RigidbodyInterpolation.None; ConVar.Physics.ApplyDropped(rigidbody); Renderer[] componentsInChildren = gameObject.GetComponentsInChildren <Renderer>(true); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].enabled = false; } } if (item != null) { PhysicsEffects component2 = base.gameObject.GetComponent <PhysicsEffects>(); if (component2 != null) { component2.entity = this; if (item.info.physImpactSoundDef != null) { component2.physImpactSoundDef = item.info.physImpactSoundDef; } } } gameObject.SetActive(true); }
public void CreateScreenshots() { RenderTexture renderTexture = new RenderTexture(width, height, 0); GameObject gameObject = new GameObject(); Camera camera = gameObject.AddComponent <Camera>(); camera.targetTexture = renderTexture; camera.orthographic = false; camera.fieldOfView = fieldOfView; camera.nearClipPlane = 0.1f; camera.farClipPlane = 2000f; camera.cullingMask = LayerMask.GetMask("TransparentFX"); camera.clearFlags = CameraClearFlags.Color; camera.backgroundColor = new Color(0f, 0f, 0f, 0f); camera.renderingPath = RenderingPath.DeferredShading; Texture2D texture2D = new Texture2D(renderTexture.width, renderTexture.height, TextureFormat.ARGB32, false); foreach (Transform item in base.transform.Cast <Transform>()) { PositionCamera(camera, item.gameObject); int layer = item.gameObject.layer; TransformEx.SetLayerRecursive(item.gameObject, 1); camera.Render(); TransformEx.SetLayerRecursive(item.gameObject, layer); string recursiveName = TransformEx.GetRecursiveName(item); recursiveName = recursiveName.Replace('/', '.'); RenderTexture.active = renderTexture; texture2D.ReadPixels(new Rect(0f, 0f, renderTexture.width, renderTexture.height), 0, 0, false); RenderTexture.active = null; byte[] bytes = texture2D.EncodeToPNG(); string path = string.Format(folder, recursiveName, item.name); string directoryName = Path.GetDirectoryName(path); if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); } File.WriteAllBytes(path, bytes); } UnityEngine.Object.DestroyImmediate(texture2D, true); UnityEngine.Object.DestroyImmediate(renderTexture, true); UnityEngine.Object.DestroyImmediate(gameObject, true); }