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); } } }
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); } } }
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); } } }
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 }