コード例 #1
0
        public CameraProjection(CameraProjectionType type, float zNear, float zFar, float fovOrScale)
        {
            Type  = type;
            ZNear = zNear;
            ZFar  = zFar;
            switch (type)
            {
            case CameraProjectionType.Perspective:
            {
                Fov   = fovOrScale;
                Scale = 1;
                break;
            }

            case CameraProjectionType.Orthographic:
            {
                Fov   = 0;
                Scale = fovOrScale;
                break;
            }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
        public static GameObject CreateCamera(CameraData cameraData)
        {
            CameraProjectionType camType = (CameraProjectionType)cameraData.type;

            Debug.LogFormat("Camera - Token:{0}, Name:{1}, Projection Type:{2}, VerticalFov:{3}, AspectRatio:{4}, HorizontalMag:{5}, NearClip:{6}, FarClip:{7}", cameraData.entityToken, cameraData.displayName, camType, cameraData.verticalFov, cameraData.aspectRatio, cameraData.horizontalMag, cameraData.nearClip, cameraData.farClip);

            // Get transformation data
            var transform = MarshalData.GetXFormFromUnmanagedArray(cameraData.xform);

            // Create a new game object
            GameObject cameraInst = new GameObject(cameraData.displayName);

            // Set transformation
            SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(cameraInst, null, transform);

            // Add camera component
            Camera camera = cameraInst.AddComponent <Camera>();

            SetCameraData(camera, cameraData);

            // Add token store
            PackageMapper.AddUniqueTokenStore(cameraInst, cameraData.entityToken);

            return(cameraInst);
        }
コード例 #3
0
 public Camera()
     : base()
 {
     _fieldOfView    = MathHelper.ToRadians(45);
     _aspectRatio    = (float)Application.GraphicsDevice.Viewport.Width / (float)Application.GraphicsDevice.Viewport.Height;
     _nearPlane      = 1.0f;
     _farPlane       = 500.0f;
     _projectionType = CameraProjectionType.Perspective;
     clearColor      = Color.Black;
     depth           = 0;
 }
コード例 #4
0
        public static bool UpdateCamera(CameraData cameraData)
        {
            CameraProjectionType camType = (CameraProjectionType)cameraData.type;

            Debug.LogFormat("Camera Update - Token:{0}, Name:{1}, Projection Type:{2}, VerticalFov:{3}, AspectRatio:{4}, HorizontalMag:{5}, NearClip:{6}, FarClip:{7}", cameraData.entityToken, cameraData.displayName, camType, cameraData.verticalFov, cameraData.aspectRatio, cameraData.horizontalMag, cameraData.nearClip, cameraData.farClip);

            // Get transformation data
            var transform = MarshalData.GetXFormFromUnmanagedArray(cameraData.xform);

            // Get camera game object
            GameObject cameraInst = PackageMapper.GetObjectFromToken(cameraData.entityToken) as GameObject;

            if (cameraInst)
            {
                // Set transformation
                SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(cameraInst, null, transform);

                // Get camera component
                Camera camera = cameraInst.GetComponent <Camera>();

                if (camera)
                {
                    SetCameraData(camera, cameraData);
                }
                else
                {
                    Debug.LogErrorFormat("Camera Update error! Camera component not found! Token:{0}");
                    return(false);
                }
            }
            else
            {
                Debug.LogErrorFormat("Camera Update error! Camera game object not found! Token:{0}");
                return(false);
            }

            return(true);
        }
コード例 #5
0
 public void SetupOrthographicCamera(float width, float height, float nearPlaneDistance, float farPlaneDistance)
 {
     ProjectionType = CameraProjectionType.Orthographic;
     projection     = Matrix.CreateOrthographic(width * zoom, height * zoom, nearPlaneDistance, farPlaneDistance);
 }
コード例 #6
0
 public void SetupPerspectiveCamera(float fieldOfView, float aspectRatio, float nearPlaneDistance, float farPlaneDistance)
 {
     ProjectionType = CameraProjectionType.Perspective;
     projection     = Matrix.CreatePerspectiveFieldOfView(fieldOfView, aspectRatio, nearPlaneDistance, farPlaneDistance);
 }
コード例 #7
0
 public EditorCamera(CameraProjectionType type, GraphicsDevice device)
 {
     this.device    = device;
     ProjectionType = type;
 }
コード例 #8
0
    private void OnGUI()
    {
        scrollviewPos = EditorGUILayout.BeginScrollView(scrollviewPos);

        style            = new GUIStyle(EditorStyles.largeLabel);
        style.fontStyle  = FontStyle.Bold;
        style.fixedWidth = 120;


        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUILayout.Label("Canvas options", style);
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.Space(10);

        createCanvas = EditorGUILayout.Toggle("Create new canvas", createCanvas);
        if (createCanvas)
        {
            GUILayout.Space(5);
            style            = new GUIStyle(EditorStyles.foldoutHeader);
            style.fixedWidth = 185;
            style.fontStyle  = FontStyle.Bold;
            canvasFoldOut    = EditorGUILayout.Foldout(canvasFoldOut, "Canvas advanced options", true, style);
            if (canvasFoldOut)
            {
                CanvasOptions();
                GUILayout.Space(5);
            }
        }

        style            = new GUIStyle(EditorStyles.largeLabel);
        style.fontStyle  = FontStyle.Bold;
        style.fixedWidth = 120;

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        GUILayout.Label("Minimap options", style);
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.Space(15);


        minimapMode = (MinimapMode)EditorGUILayout.EnumPopup("minimap version", minimapMode);

        switch (minimapMode)
        {
        case MinimapMode.CAMERA_RENDER:
            createCamera = EditorGUILayout.Toggle("Create camera?", createCamera);
            if (createCamera)
            {
                cameraProjection = (CameraProjectionType)EditorGUILayout.EnumPopup("Projection", cameraProjection);

                //define culling mask

                if (cameraProjection == CameraProjectionType.Orthographic)
                {
                    //define size
                }
                else
                {
                    //define fov
                }
            }
            break;

        case MinimapMode.CUSTOM_TEXTURE:
            CustomTexture = (Sprite)EditorGUILayout.ObjectField("Map texture", CustomTexture, typeof(Sprite), false);
            break;
        }

        //list of custom waypoints to show on map.

        //image for player

        //show icons on border?

        //compass

        //minimap position
        //minimap size

        //border?
        //custom border?

        //Create radar button
        CreateButton();

        EditorGUILayout.EndScrollView();
    }