Пример #1
0
 /// <summary>
 /// 激活场景的顶层结点
 /// </summary>
 public void ActiveScene()
 {
     if (IsDone && TargetScene.IsValid() && TargetScene.isLoaded)
     {
         GameObject[] gObjs = TargetScene.GetRootGameObjects();
         foreach (var gObj in gObjs)
         {
             gObj.SetActive(true);
         }
     }
 }
Пример #2
0
        override public bool UpdateCapture(InputEvent e)
        {
            if (eState == CaptureState.ClickType && FindHitGO(e.ray) != null)
            {
                return(true);
            }

            // otherwise we fall into drag state
            eState = CaptureState.DragType;

            SORayHit hit = null;

            if (TargetScene.FindSORayIntersection(e.ray, out hit))
            {
                if (hit.hitSO != lastHitObject)
                {
                    if (lastHitObject != null)
                    {
                        lastHitObject.PopOverrideMaterial();
                    }
                    lastHitObject = hit.hitSO;
                    if (lastHitObject.GetActiveMaterial() != tempMaterial)
                    {
                        lastHitObject.PushOverrideMaterial(tempMaterial);
                    }
                }
            }
            else
            {
                if (lastHitObject != null)
                {
                    lastHitObject.PopOverrideMaterial();
                }
                lastHitObject = null;
            }

            return(true);
        }
Пример #3
0
 public static void LoadScene(TargetScene scene)
 {
     LoadScene((int)scene);
 }
Пример #4
0
        override public bool UpdateCapture(InputEvent e)
        {
            if (eState == CaptureState.ClickType && FindHitGO(e.ray) != null)
            {
                return(true);
            }

            // otherwise we fall into drag state
            eState = CaptureState.DragType;

            if (newPrimitive == null)
            {
                newPrimitive = CreatePrimitive();

                fPrimScale = 1.0f;

                if (newPrimitive is PivotSO)
                {
                    fPrimShift = 0.0f;
                }
                else
                {
                    if (newPrimitive is PrimitiveSO)
                    {
                        if (SavedSettings.Restore("DropPrimButton_scale") != null)
                        {
                            fPrimScale = (float)SavedSettings.Restore("DropPrimButton_scale");
                            newPrimitive.SetLocalScale(fPrimScale * Vector3f.One);
                        }
                    }
                    fPrimShift = newPrimitive.GetLocalBoundingBox().Extents[1] * TargetScene.GetSceneScale();
                }

                // [RMS] this is kind of cheating - we are going to tell this SO
                //   it is part of the scene, but not actually put it in the scene.
                //   This is because sometimes the SO needs to query the scene/camera
                //   (eg for pivot resizing)
                TargetScene.ReparentSceneObject(newPrimitive, false);
                newPrimitive.SetScene(TargetScene);

                lastHitF = UnityUtil.GetGameObjectFrame(TargetScene.RootGameObject, CoordSpace.WorldCoords);
                newPrimitive.SetLocalFrame(lastHitF.Translated(fPrimShift, 1), CoordSpace.WorldCoords);
            }

            // [RMS] only Touch for this??
            if (InputState.IsDevice(e.device, InputDevice.OculusTouch) && newPrimitive is PrimitiveSO)
            {
                Vector2f vStick = e.input.StickDelta2D((int)e.side);
                if (vStick[1] != 0)
                {
                    fPrimScale = fPrimScale * (1.0f + vStick[1] * 0.1f);
                    fPrimScale = MathUtil.Clamp(fPrimScale, 0.01f, 10.0f);
                    newPrimitive.SetLocalScale(fPrimScale * Vector3f.One);
                    fPrimShift = newPrimitive.GetLocalBoundingBox().Extents[1] * TargetScene.GetSceneScale();
                }
            }

            AnyRayHit hit = null;

            if (TargetScene.FindSceneRayIntersection(e.ray, out hit))
            {
                update_position(hit);
                newPrimitive.SetLocalFrame(lastHitF.Translated(fPrimShift, 1), CoordSpace.WorldCoords);
            }

            // [RMS] have to do this because prim is not part of scene yet,
            //   and things like pivots need to be resized
            if (newPrimitive != null)
            {
                newPrimitive.PreRender();
            }

            return(true);
        }
Пример #5
0
 private void EditorButton_OnClicked(Ludum.UI.Button button)
 {
     targetScene = TargetScene.Editor;
     ChooseLevel();
 }
Пример #6
0
 private void PlayButton_OnClicked(Ludum.UI.Button button)
 {
     targetScene = TargetScene.Play;
     ChooseLevel();
 }