/// <summary> /// 激活场景的顶层结点 /// </summary> public void ActiveScene() { if (IsDone && TargetScene.IsValid() && TargetScene.isLoaded) { GameObject[] gObjs = TargetScene.GetRootGameObjects(); foreach (var gObj in gObjs) { gObj.SetActive(true); } } }
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); }
public static void LoadScene(TargetScene scene) { LoadScene((int)scene); }
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); }
private void EditorButton_OnClicked(Ludum.UI.Button button) { targetScene = TargetScene.Editor; ChooseLevel(); }
private void PlayButton_OnClicked(Ludum.UI.Button button) { targetScene = TargetScene.Play; ChooseLevel(); }