Exemple #1
0
    private void UpdateBackground()
    {
        if (starfieldGameObject != null)
        {
            if (starfieldInBackground == true)
            {
                if (starfieldCamera != null)
                {
                    // Stretch to camera's far view frustum
                    if (distributionRadius != 0.0f)
                    {
                        var scale = SGT_Helper.NewVector3(starfieldCamera.farClipPlane / distributionRadius) * 0.9f;

                        SGT_Helper.SetLocalScale(starfieldGameObject.transform, scale);
                    }

                    // Centre to main camera
                    SGT_Helper.SetPosition(starfieldGameObject.transform, starfieldCamera.transform.position);
                }
            }
            else
            {
                SGT_Helper.SetLocalPosition(starfieldGameObject.transform, Vector3.zero);
                SGT_Helper.SetLocalScale(starfieldGameObject.transform, Vector3.one);
            }
        }
    }
Exemple #2
0
    private void UpdateSnap()
    {
        if (snapSurface != null && (snapPosition == true || snapRotation != RotationSnap.None))
        {
            var point    = transform.position;
            var centre   = snapSurface.transform.position;
            var position = SurfacePositionAtPoint(centre, point);

            if (snapPosition == true)
            {
                SGT_Helper.SetPosition(transform, position);
            }

            if (snapRotation == RotationSnap.AlignToCentre)
            {
                var finalRot = Quaternion.FromToRotation(transform.up, (position - centre).normalized) * transform.rotation;

                SGT_Helper.SetRotation(transform, finalRot);
            }

            if (snapRotation == RotationSnap.AlignToNormal)
            {
                var position2 = SurfacePositionAtPoint(centre, point + transform.forward * snapRotationScanDistance);
                var position3 = SurfacePositionAtPoint(centre, point + transform.right * snapRotationScanDistance);
                var finalRot  = Quaternion.FromToRotation(transform.up, Vector3.Cross(position2 - position, position3 - position)) * transform.rotation;

                SGT_Helper.SetRotation(transform, finalRot);
            }
        }
    }
Exemple #3
0
    public void UpdateFollow()
    {
        if (followTarget != null)
        {
            if (followPosition == true)
            {
                SGT_Helper.SetPosition(transform, followTarget.position * followPositionScale);
            }

            if (followRotation == true)
            {
                SGT_Helper.SetRotation(transform, followTarget.rotation);
            }
        }
    }
Exemple #4
0
    public void LateUpdate()     // TODO: Check mesh size
    {
        if (skysphereGameObject == null)
        {
            skysphereGameObject = SGT_Helper.CreateGameObject("Skysphere", gameObject);
        }
        if (skysphereMesh == null)
        {
            skysphereMesh = new SGT_Mesh();
        }
        if (skysphereObserver == null)
        {
            skysphereObserver = SGT_Helper.FindCamera();
        }

        SGT_Helper.SetParent(skysphereGameObject, gameObject);
        SGT_Helper.SetLayer(skysphereGameObject, gameObject.layer);
        SGT_Helper.SetTag(skysphereGameObject, gameObject.tag);

        UpdateMaterial();
        UpdateShader();

        if (skysphereObserver != null)
        {
            // Stretch to camera's far view frustum
            SGT_Helper.SetLocalScale(skysphereGameObject.transform, skysphereObserver.far * 0.9f);

            // Centre to main camera
            SGT_Helper.SetPosition(skysphereGameObject.transform, skysphereObserver.transform.position);
        }

        skysphereMesh.GameObject          = skysphereGameObject;
        skysphereMesh.HasMeshRenderer     = true;
        skysphereMesh.MeshRendererEnabled = true;
        skysphereMesh.SharedMaterial      = skysphereMaterial;
        skysphereMesh.Update();

#if UNITY_EDITOR == true
        skysphereMesh.HideInEditor();
#endif
    }