示例#1
0
    private void UpdateForAxisAlignedCube(Vector3 wpos)
    {
        reticleCubical.EnableRenderer(true);
        reticleCubical.SetPositionAndSize(wpos, Vector3.one * BrushSize);

        if (clicking && Terrain.OperationsManager.IsReadyToComputeAsync)
        {
            Terrain.OperationsManager
            .Add(AxisAlignedCube.CreateFromUnityWorld(Terrain, dig, wpos, BrushSize * Vector3.one, voxelType), true)
            .PerformAll(asyncOperations);
        }
    }
示例#2
0
        public void CopyCurrentAxisAlignedCubes()
        {
            foreach (AxisAlignedCube cube in CurrentShapeCollection.AxisAlignedCubes)
            {
                AxisAlignedCube newCube = cube.Clone <AxisAlignedCube>();

                ShapeManager.AddAxisAlignedCube(newCube);

                EditorData.ShapeCollection.AxisAlignedCubes.Add(newCube);

                FlatRedBall.Utilities.StringFunctions.MakeNameUnique <AxisAlignedCube>(newCube, EditorData.AxisAlignedCubes);
            }
        }
示例#3
0
        public void SelectAxisAlignedCube(AxisAlignedCube axisAlignedCube)
        {
            CurrentShapeCollection.AxisAlignedCubes.Clear();

            GuiData.ShapeCollectionPropertyGrid.CurrentAxisAlignedCube = axisAlignedCube;

            if (axisAlignedCube != null)
            {
                bool         isNewWindow;
                PropertyGrid propertyGrid = (PropertyGrid)GuiManager.ObjectDisplayManager.GetObjectDisplayerForObject(axisAlignedCube, GuiData.ShapeCollectionPropertyGrid, null, out isNewWindow);

                if (isNewWindow)
                {
                    propertyGrid.SetMemberChangeEvent("Name", GuiData.MakeAxisAlignedCubeNameUnique);
                }

                CurrentShapeCollection.AxisAlignedCubes.Add(axisAlignedCube);
                SelectPolygon(null);
                SelectCircle(null);
                SelectAxisAlignedRectangle(null);
                SelectSphere(null);
            }
        }
示例#4
0
        public void AddAxisAlignedCube()
        {
            AxisAlignedCube cube = new AxisAlignedCube();

            ShapeManager.AddAxisAlignedCube(cube);
            cube.Color = EditorProperties.AxisAlignedCubeColor;

            cube.X = SpriteManager.Camera.X;
            cube.Y = SpriteManager.Camera.Y;

            float scale = (float)Math.Abs(
                18 / SpriteManager.Camera.PixelsPerUnitAt(0));

            cube.ScaleX = scale;
            cube.ScaleY = scale;
            cube.ScaleZ = scale;

            EditorData.ShapeCollection.AxisAlignedCubes.Add(cube);

            cube.Name = "Cube" + EditorData.AxisAlignedCubes.Count;

            StringFunctions.MakeNameUnique <AxisAlignedCube>(cube, EditorData.AxisAlignedCubes);
        }
示例#5
0
 public void Remove(AxisAlignedCube cube)
 {
     this.mCubes.Remove(cube);
     cube.mLayerBelongingTo = null;
 }
示例#6
0
        public static void MakeAxisAlignedCubeNameUnique(Window callingWindow)
        {
            AxisAlignedCube cube = ((PropertyGrid <AxisAlignedCube>)callingWindow.Parent).SelectedObject;

            StringFunctions.MakeNameUnique <AxisAlignedCube>(cube, EditorData.ShapeCollection.AxisAlignedCubes);
        }
示例#7
0
        private void Update()
        {
            if (Terrain.IsLoaded == true)
            {
                float yRot   = Input.GetAxis("Mouse X");
                float xRot   = Input.GetAxis("Mouse Y");
                float xInput = Input.GetAxisRaw("Horizontal");
                float zInput = Input.GetAxisRaw("Vertical");

                Vector3 xMovement = transform.right * xInput;
                Vector3 yMovement = transform.forward * zInput;

                Vector3 Rotation       = new Vector3(0, yRot, 0) * LookSpeed;
                Vector3 CameraRotation = new Vector3(-xRot, 0, 0) * LookSpeed;

                Vector3 Movement = (xMovement + yMovement).normalized * Speed;

                if (Controller.isGrounded != true)
                {
                    GravityVelocity.y -= GravitationalConstant * Time.deltaTime;
                }
                else if (Jumped == true)
                {
                    GravityVelocity.y += JumpHeight;
                    Jumped             = false;
                }
                else
                {
                    GravityVelocity.y = -1f;
                }

                UImanager.Debugtext2.text = "VerticalVelocity: " + GravityVelocity.y.ToString();

                Rotate(Rotation, CameraRotation);
                Move(Movement, GravityVelocity);
            }

            if (Controller.isGrounded == true)
            {
                UImanager.DebugText1.text = "Grounded: True";
                if (Input.GetKeyDown(KeyCode.Space))
                {
                    Jump();
                }
            }
            else
            {
                UImanager.DebugText1.text = "Grounded: False";
            }

            if (Input.GetKey(KeyCode.LeftShift))
            {
                Speed = RunSpeed;
            }

            if (Input.GetKeyUp(KeyCode.LeftShift))
            {
                Speed = WalkSpeed;
            }

            if (Input.GetMouseButtonDown(0))
            {
                Debug.Log("Button Clicked");

                RaycastHit Hit;
                Ray        Ray = Camera.ScreenPointToRay(Input.mousePosition);

                Physics.Raycast(Ray, out Hit, 5f, Terrain.Params.ChunkLayerMask);

                var Position = Hit.point + Hit.normal * 0.01f;

                Vector3 Size = new Vector3(1, 1, 1);

                if (Terrain.OperationsManager.IsReadyToComputeAsync)
                {
                    Debug.Log("Added Operation");

                    Terrain.OperationsManager.Add(AxisAlignedCube.CreateFromUnityWorld(Terrain, true, Position, Size, type), true).PerformAll(true);
                }
            }
            if (Input.GetMouseButtonDown(1))
            {
                Debug.Log("Button Clicked");

                RaycastHit Hit;
                Ray        Ray = Camera.ScreenPointToRay(Input.mousePosition);

                Physics.Raycast(Ray, out Hit, 5f, Terrain.Params.ChunkLayerMask);

                var Position = Hit.point + Hit.normal * 0.01f;

                Vector3 Size = new Vector3(1, 1, 1);

                if (Terrain.OperationsManager.IsReadyToComputeAsync)
                {
                    Debug.Log("Added Operation");

                    Terrain.OperationsManager.Add(AxisAlignedCube.CreateFromUnityWorld(Terrain, false, Position, Size, type), true).PerformAll(true);
                }
            }
        }
示例#8
0
        /// <summary>
        ///  Creates a runtime object and adds the LoadedFile to the element.
        /// </summary>
        /// <param name="objectToLoad"></param>
        /// <param name="container"></param>
        /// <param name="elementRuntime"></param>
        /// <param name="objectType"></param>
        /// <param name="objectJustLoaded"></param>
        /// <param name="newElementRuntime"></param>
        /// <param name="toAddTo"></param>
        /// <param name="layerToAddTo"></param>
        /// <param name="rfs"></param>
        /// <param name="pullsFromEntireNamedObject"></param>
        /// <returns></returns>
        private static LoadedFile CreateRuntimeObjectForNamedObject(NamedObjectSave objectToLoad,
                                                                    IElement container, ElementRuntime elementRuntime, string objectType,
                                                                    LoadedFile objectJustLoaded,
                                                                    ElementRuntime newElementRuntime,
                                                                    object toAddTo,
                                                                    Layer layerToAddTo, ReferencedFileSave rfs, bool pullsFromEntireNamedObject)
        {
            var fileName = ElementRuntime.ContentDirectory + objectToLoad.SourceFile;


            bool       shouldClone = rfs != null && (rfs.IsSharedStatic && !(container is ScreenSave)) && !pullsFromEntireNamedObject;
            LoadedFile toReturn    = null;

            // This could have a ( in the name in a file like .scnx, so use the last (
            //int indexOfType = objectToLoad.SourceName.IndexOf("(");
            int indexOfType = objectToLoad.SourceName.LastIndexOf("(");

            string objectName = objectToLoad.SourceName.Substring(0, indexOfType - 1);

            switch (objectType)
            {
            case "Scene":
            {
                Scene scene = objectJustLoaded.RuntimeObject as Scene;

                foreach (Text text in scene.Texts)
                {
                    text.AdjustPositionForPixelPerfectDrawing = true;
                    if (ObjectFinder.Self.GlueProject.UsesTranslation)
                    {
                        text.DisplayText = LocalizationManager.Translate(text.DisplayText);
                    }
                }

                if (shouldClone)
                {
                    scene = scene.Clone();
                    elementRuntime.EntireScenes.Add(objectToLoad.SourceFile, scene);

                    var loadedFile = new LoadedFile();
                    loadedFile.RuntimeObject      = scene;
                    loadedFile.FilePath           = objectToLoad.SourceFile;
                    loadedFile.ReferencedFileSave = rfs;
                    toReturn = loadedFile;

                    newElementRuntime.ReferencedFileRuntimeList.Add(loadedFile);

                    scene.AddToManagers(layerToAddTo);
                }
            }
            break;


            case "Sprite":
            {
                Sprite loadedSprite = null;
                Scene  scene        = objectJustLoaded.RuntimeObject as Scene;
                if (scene != null)
                {
                    loadedSprite = scene.Sprites.FindByName(objectName);
                }

                if (loadedSprite == null)
                {
                    System.Windows.Forms.MessageBox.Show("There is a missing Sprite called\n\n" + objectName + "\n\n" +
                                                         "in the object\n\n" + elementRuntime.Name + "\n\n" +
                                                         "This probably happened if someone changed the name of a Sprite in a .scnx file but didn't update " +
                                                         "the associated object in Glue", "Missing Sprite");
                }
                else
                {
                    if (shouldClone)
                    {
                        loadedSprite = loadedSprite.Clone();
                        (toAddTo as Scene).Sprites.Add(loadedSprite);
                        SpriteManager.AddToLayer(loadedSprite, layerToAddTo);

                        var loadedFile = new LoadedFile();

                        loadedFile.RuntimeObject      = loadedSprite;
                        loadedFile.FilePath           = objectJustLoaded.FilePath;
                        loadedFile.DataModel          = objectJustLoaded.DataModel;
                        loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;

                        toReturn = loadedFile;
                    }
                }
            }
            break;


            case "SpriteFrame":
            {
                Scene       scene             = objectJustLoaded.RuntimeObject as Scene;
                SpriteFrame loadedSpriteFrame = scene.SpriteFrames.FindByName(objectName);
                if (loadedSpriteFrame != null)
                {
                    if (shouldClone)
                    {
                        loadedSpriteFrame = loadedSpriteFrame.Clone();
                        (toAddTo as Scene).SpriteFrames.Add(loadedSpriteFrame);
                        SpriteManager.AddToLayer(loadedSpriteFrame, layerToAddTo);

                        var loadedFile = new LoadedFile();

                        loadedFile.RuntimeObject      = loadedSpriteFrame;
                        loadedFile.FilePath           = objectJustLoaded.FilePath;
                        loadedFile.DataModel          = objectJustLoaded.DataModel;
                        loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                        toReturn = loadedFile;
                    }
                }
            }
            break;

            case "SpriteGrid":
            {
                Scene      scene      = objectJustLoaded.RuntimeObject as Scene;
                SpriteGrid spriteGrid = null;
                for (int i = 0; i < scene.SpriteGrids.Count; i++)
                {
                    if (scene.SpriteGrids[i].Name == objectName)
                    {
                        spriteGrid = scene.SpriteGrids[i];
                        break;
                    }
                }
                if (spriteGrid != null)
                {
                    if (shouldClone)
                    {
                        spriteGrid = spriteGrid.Clone();
                        (toAddTo as Scene).SpriteGrids.Add(spriteGrid);
                        spriteGrid.Layer = layerToAddTo;
                        spriteGrid.PopulateGrid();
                        spriteGrid.RefreshPaint();
                        spriteGrid.Manage();

                        var loadedFile = new LoadedFile();

                        loadedFile.RuntimeObject      = spriteGrid;
                        loadedFile.FilePath           = objectJustLoaded.FilePath;
                        loadedFile.DataModel          = objectJustLoaded.DataModel;
                        loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                        toReturn = loadedFile;
                    }
                }
            }
            break;

            case "Text":
            {
                Scene scene = objectJustLoaded.RuntimeObject as Scene;

                Text loadedText = scene.Texts.FindByName(objectName);
                if (loadedText != null)
                {
                    if (shouldClone)
                    {
                        loadedText = loadedText.Clone();
                        (toAddTo as Scene).Texts.Add(loadedText);

                        TextManager.AddToLayer(loadedText, layerToAddTo);

                        var loadedFile = new LoadedFile();

                        loadedFile.RuntimeObject      = loadedText;
                        loadedFile.FilePath           = objectJustLoaded.FilePath;
                        loadedFile.DataModel          = objectJustLoaded.DataModel;
                        loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                        toReturn = loadedFile;
                    }
                    loadedText.AdjustPositionForPixelPerfectDrawing = true;
                    if (LocalizationManager.HasDatabase)
                    {
                        loadedText.DisplayText = LocalizationManager.Translate(loadedText.DisplayText);
                    }
                }
            }
            break;

            case "ShapeCollection":
            {
                ShapeCollection shapeCollection = objectJustLoaded.RuntimeObject as ShapeCollection;

                if (shouldClone)
                {
                    shapeCollection = shapeCollection.Clone();
                    elementRuntime.EntireShapeCollections.Add(objectToLoad.SourceFile, shapeCollection);

                    newElementRuntime.ReferencedFileRuntimeList.LoadedShapeCollections.Add(shapeCollection);

                    shapeCollection.AddToManagers(layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = shapeCollection;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
                // Most cases are handled below in an AttachTo method, but
                // ShapeCollection isn't a PositionedObject so we have to do it manually here
                if (objectToLoad.AttachToContainer)
                {
                    shapeCollection.AttachTo(elementRuntime, true);
                }
            }
            break;

            case "AxisAlignedCube":
            {
                ShapeCollection shapeCollection       = objectJustLoaded.RuntimeObject as ShapeCollection;
                AxisAlignedCube loadedAxisAlignedCube = shapeCollection.AxisAlignedCubes.FindByName(objectName);


                if (shouldClone)
                {
                    loadedAxisAlignedCube = loadedAxisAlignedCube.Clone();
                    (toAddTo as ShapeCollection).AxisAlignedCubes.Add(loadedAxisAlignedCube);
                    ShapeManager.AddToLayer(loadedAxisAlignedCube, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedAxisAlignedCube;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;


            case "AxisAlignedRectangle":
            {
                ShapeCollection      shapeCollection            = objectJustLoaded.RuntimeObject as ShapeCollection;
                AxisAlignedRectangle loadedAxisAlignedRectangle = shapeCollection.AxisAlignedRectangles.FindByName(objectName);


                if (shouldClone)
                {
                    loadedAxisAlignedRectangle = loadedAxisAlignedRectangle.Clone();
                    (toAddTo as ShapeCollection).AxisAlignedRectangles.Add(loadedAxisAlignedRectangle);
                    ShapeManager.AddToLayer(loadedAxisAlignedRectangle, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedAxisAlignedRectangle;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Circle":
            {
                ShapeCollection shapeCollection = objectJustLoaded.RuntimeObject as ShapeCollection;
                Circle          loadedCircle    = shapeCollection.Circles.FindByName(objectName);


                if (shouldClone)
                {
                    loadedCircle = loadedCircle.Clone();
                    (toAddTo as ShapeCollection).Circles.Add(loadedCircle);
                    ShapeManager.AddToLayer(loadedCircle, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedCircle;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Polygon":
            {
                ShapeCollection shapeCollection = objectJustLoaded.RuntimeObject as ShapeCollection;
                Polygon         loadedPolygon   = shapeCollection.Polygons.FindByName(objectName);


                if (shouldClone)
                {
                    loadedPolygon = loadedPolygon.Clone();
                    (toAddTo as ShapeCollection).Polygons.Add(loadedPolygon);
                    ShapeManager.AddToLayer(loadedPolygon, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedPolygon;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Sphere":
            {
                ShapeCollection shapeCollection = objectJustLoaded.RuntimeObject as ShapeCollection;
                Sphere          loadedSphere    = shapeCollection.Spheres.FindByName(objectName);


                if (shouldClone)
                {
                    loadedSphere = loadedSphere.Clone();
                    (toAddTo as ShapeCollection).Spheres.Add(loadedSphere);
                    ShapeManager.AddToLayer(loadedSphere, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedSphere;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Capsule2D":
            {
                ShapeCollection shapeCollection = objectJustLoaded.RuntimeObject as ShapeCollection;
                Capsule2D       loadedCapsule2D = shapeCollection.Capsule2Ds.FindByName(objectName);


                if (shouldClone)
                {
                    loadedCapsule2D = loadedCapsule2D.Clone();
                    (toAddTo as ShapeCollection).Capsule2Ds.Add(loadedCapsule2D);
                    ShapeManager.AddToLayer(loadedCapsule2D, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedCapsule2D;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Emitter":
            {
                EmitterList emitterList   = objectJustLoaded.RuntimeObject as EmitterList;
                Emitter     loadedEmitter = emitterList.FindByName(objectName);

                if (shouldClone && loadedEmitter != null)
                {
                    loadedEmitter = loadedEmitter.Clone();
                    (toAddTo as EmitterList).Add(loadedEmitter);
                    SpriteManager.AddEmitter(loadedEmitter, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = loadedEmitter;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "EmitterList":
            {
                EmitterList emitterList = objectJustLoaded.RuntimeObject as EmitterList;

                if (shouldClone && emitterList != null)
                {
                    emitterList = emitterList.Clone();

                    foreach (var item in emitterList)
                    {
                        SpriteManager.AddEmitter(item);
                    }

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = emitterList;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "NodeNetwork":
            {
                NodeNetwork nodeNetwork = objectJustLoaded.RuntimeObject as NodeNetwork;

                if (shouldClone)
                {
                    nodeNetwork = nodeNetwork.Clone();

                    elementRuntime.EntireNodeNetworks.Add(objectToLoad.SourceFile, nodeNetwork);

                    newElementRuntime.ReferencedFileRuntimeList.LoadedNodeNetworks.Add(nodeNetwork);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = nodeNetwork;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "SplineList":
            {
                SplineList splineList = objectJustLoaded.RuntimeObject as SplineList;

                if (shouldClone)
                {
                    splineList = splineList.Clone();

                    elementRuntime.EntireSplineLists.Add(splineList.Name, splineList);

                    foreach (var spline in splineList)
                    {
                        spline.CalculateVelocities();
                        spline.CalculateAccelerations();
                    }

                    splineList.AddToManagers();


                    splineList[0].UpdateShapes();

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = splineList;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
            }
            break;

            case "Spline":
            {
                SplineList splineList = objectJustLoaded.RuntimeObject as SplineList;
                Spline     spline     = splineList.FirstOrDefault(item => item.Name == objectName);


                if (shouldClone && spline != null)
                {
                    spline = spline.Clone();
                    (toAddTo as SplineList).Add(spline);

                    // Eventually support layers?
                    //ShapeManager.AddToLayer(spline, layerToAddTo);

                    var loadedFile = new LoadedFile();

                    loadedFile.RuntimeObject      = spline;
                    loadedFile.FilePath           = objectJustLoaded.FilePath;
                    loadedFile.DataModel          = objectJustLoaded.DataModel;
                    loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                    toReturn = loadedFile;
                }
                spline.CalculateVelocities();
                spline.CalculateAccelerations();
            }
            break;
            }

            if (toReturn == null)
            {
                foreach (var manager in ReferencedFileRuntimeList.FileManagers)
                {
                    var objectFromFile = manager.TryGetObjectFromFile(elementRuntime.ReferencedFileRuntimeList.LoadedRfses, rfs, objectType, objectName);

                    if (objectFromFile != null)
                    {
                        var runtimeObject = objectFromFile;

                        var loadedFile = new LoadedFile();

                        loadedFile.RuntimeObject      = runtimeObject;
                        loadedFile.FilePath           = objectJustLoaded.FilePath;
                        loadedFile.DataModel          = objectJustLoaded.DataModel;
                        loadedFile.ReferencedFileSave = objectJustLoaded.ReferencedFileSave;
                        toReturn = loadedFile;


                        break;
                    }
                }
            }


            if (toReturn != null && objectToLoad.AttachToContainer)
            {
                if (toReturn.RuntimeObject is PositionedObject)
                {
                    // If the object is already attached to something, that means it
                    // came from a file, so we don't want to re-attach it.
                    PositionedObject asPositionedObject = toReturn.RuntimeObject as PositionedObject;
                    if (asPositionedObject.Parent == null)
                    {
                        asPositionedObject.AttachTo(elementRuntime, true);
                    }
                }
                else if (toReturn.RuntimeObject is Scene)
                {
                    ((Scene)toReturn.RuntimeObject).AttachAllDetachedTo(elementRuntime, true);
                }
                else if (toReturn.RuntimeObject is ShapeCollection)
                {
                    ((ShapeCollection)toReturn.RuntimeObject).AttachAllDetachedTo(elementRuntime, true);
                }
            }


            return(toReturn);
        }
示例#9
0
        public void SelectAxisAlignedCube(AxisAlignedCube axisAlignedCube)
        {
            CurrentShapeCollection.AxisAlignedCubes.Clear();

            GuiData.ShapeCollectionPropertyGrid.CurrentAxisAlignedCube = axisAlignedCube;

            if (axisAlignedCube != null)
            {
                bool isNewWindow;
				PropertyGrid propertyGrid = (PropertyGrid)GuiManager.ObjectDisplayManager.GetObjectDisplayerForObject(axisAlignedCube, GuiData.ShapeCollectionPropertyGrid, null, out isNewWindow);

                if (isNewWindow)
                {
                    propertyGrid.SetMemberChangeEvent("Name", GuiData.MakeAxisAlignedCubeNameUnique);
                }

                CurrentShapeCollection.AxisAlignedCubes.Add(axisAlignedCube);
                SelectPolygon(null);
                SelectCircle(null);
                SelectAxisAlignedRectangle(null);
                SelectSphere(null);
            }
        }
示例#10
0
        public void AddAxisAlignedCube()
        {
            AxisAlignedCube cube = new AxisAlignedCube();
            ShapeManager.AddAxisAlignedCube(cube);
            cube.Color = EditorProperties.AxisAlignedCubeColor;

            cube.X = SpriteManager.Camera.X;
            cube.Y = SpriteManager.Camera.Y;

            float scale = (float)Math.Abs(
                18 / SpriteManager.Camera.PixelsPerUnitAt(0));

            cube.ScaleX = scale;
            cube.ScaleY = scale;
            cube.ScaleZ = scale;

            EditorData.ShapeCollection.AxisAlignedCubes.Add(cube);
                
            cube.Name = "Cube" + EditorData.AxisAlignedCubes.Count;

            StringFunctions.MakeNameUnique<AxisAlignedCube>(cube, EditorData.AxisAlignedCubes);
        }
    protected virtual IOperation CreateOperationFromEditor(Vector3 worldPosition, TerrainToolEditor editor)
    {
        var voxelType = EditorUtils.GetVoxelTypeFromIndex(VoxelTypeIndex, editor.Terrain.VoxelTypeSet);

        return(AxisAlignedCube.CreateFromUnityWorld(editor.Terrain, Dig, worldPosition, Size, voxelType));
    }
示例#12
0
        public void UpdateToEmitter(Emitter currentEmitter)
        {
            #region Update All Visibility

            if (currentEmitter == null)
            {
                if (mCurrentVisibleRepresentation != null)
                {
                    MakeAllInvisible();


                    mCurrentVisibleRepresentation = null;
                }
            }
            else
            {
                object shapeThatShouldBeVisible = mVisibleRepresentations[currentEmitter.AreaEmission];

                if (shapeThatShouldBeVisible != ((object)mCurrentVisibleRepresentation))
                {
                    MakeAllInvisible();

                    object visibleRepresentation = mVisibleRepresentations[currentEmitter.AreaEmission];

                    LateBinder.GetInstance(visibleRepresentation.GetType()).SetValue(visibleRepresentation, "Visible", true);


                    mCurrentVisibleRepresentation = mVisibleRepresentations[currentEmitter.AreaEmission] as PositionedObject;
                }
            }

            #endregion

            #region Update the current Shape's properties

            if (mCurrentVisibleRepresentation != null)
            {
                switch (currentEmitter.AreaEmission)
                {
                case Emitter.AreaEmissionType.Point:
                    // We do nothing here since we're not showing anything
                    break;

                case Emitter.AreaEmissionType.Cube:
                    AxisAlignedCube asAxisAlignedCube = mCurrentVisibleRepresentation as AxisAlignedCube;

                    asAxisAlignedCube.ScaleX = currentEmitter.ScaleX;
                    asAxisAlignedCube.ScaleY = currentEmitter.ScaleY;
                    asAxisAlignedCube.ScaleZ = currentEmitter.ScaleZ;

                    asAxisAlignedCube.Position = currentEmitter.Position;

                    break;

                case Emitter.AreaEmissionType.Rectangle:
                    AxisAlignedRectangle asAxisAlignedRectangle = mCurrentVisibleRepresentation as AxisAlignedRectangle;
                    asAxisAlignedRectangle.ScaleX   = currentEmitter.ScaleX;
                    asAxisAlignedRectangle.ScaleY   = currentEmitter.ScaleY;
                    asAxisAlignedRectangle.Position = currentEmitter.Position;

                    break;
                }
            }

            #endregion
        }