コード例 #1
0
            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);
                    }
                }
            }
コード例 #2
0
            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!");
            }
コード例 #3
0
ファイル: DroppedItem.cs プロジェクト: Ailtop/RustDocuments
    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);
    }
コード例 #4
0
    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);
    }