Beispiel #1
0
        static void CreatePrimitiveBrush(PrimitiveBrushType brushType)
        {
            Vector3    position       = GetPositionForNewBrush();
            GameObject newBrushObject = csgModel.CreateBrush(brushType, position);

            // Set the selection to the new object
            Selection.activeGameObject = newBrushObject;

            Undo.RegisterCreatedObjectUndo(newBrushObject, "Create Brush");
        }
Beispiel #2
0
        static void OnSelectedCreateOption(object userData)
        {
            if (userData.GetType() == typeof(PrimitiveBrushType))
            {
                GameObject newBrushObject = csgModel.CreateBrush((PrimitiveBrushType)userData);

                if (SceneView.lastActiveSceneView != null)
                {
                    Transform cameraTransform     = SceneView.lastActiveSceneView.camera.transform;
                    Ray       ray                 = new Ray(cameraTransform.position, cameraTransform.forward);
                    List <PolygonRaycastHit> hits = csgModel.RaycastBrushesAll(ray);
                    if (hits.Count > 0)
                    {
                        Vector3 newPosition = hits[0].Point;
                        // Back a unit, since the brush is around 2 units in each dimensions
                        newPosition += hits[0].Normal;
                        if (CurrentSettings.PositionSnappingEnabled)
                        {
                            float snapDistance = CurrentSettings.PositionSnapDistance;
                            newPosition = MathHelper.RoundVector3(newPosition, snapDistance);

                            newBrushObject.transform.position = newPosition;
                        }
                    }
                    else
                    {
                        Vector3 newPosition = SceneView.lastActiveSceneView.pivot;
                        if (CurrentSettings.PositionSnappingEnabled)
                        {
                            float snapDistance = CurrentSettings.PositionSnapDistance;
                            newPosition = MathHelper.RoundVector3(newPosition, snapDistance);

                            newBrushObject.transform.position = newPosition;
                        }
                    }
                }

                newBrushObject.GetComponent <Brush>().Invalidate(true);

                // Set the selection to the new object
                Selection.activeGameObject = newBrushObject;

                Undo.RegisterCreatedObjectUndo(newBrushObject, "Create Brush");
            }
        }