Beispiel #1
0
    public override bool CanBePlacedChild(GameObject parent, ref ObjectVectors vectors)
    {
        bool canBePlaced = base.CanBePlacedChild(parent, ref vectors);

        RotateTowards(parent, ref vectors);
        return(canBePlaced);
    }
Beispiel #2
0
 public override void RotateTowards(GameObject parent, ref ObjectVectors vectors)
 {
     if (AllowedDirections != null && AllowedDirections.Length == 1)
     {
         if (vectors.currentObjectNormal != AllowedDirections[0])
         {
             var rot = Quaternion.LookRotation(parent.transform.localRotation * vectors.parentHitNormal * -1);
             transform.localRotation = rot;
         }
     }
 }
Beispiel #3
0
 public virtual void RotateTowards(GameObject parent, ref ObjectVectors vectors)
 {
     if (AllowedDirections != null && AllowedDirections.Length == 1)
     {
         if (vectors.currentObjectNormal != AllowedDirections[0])
         {
             // This ensures that A's down points at B's position
             Quaternion rotationOffset = Quaternion.AngleAxis(90.0f, Vector3.right);
             // Point straight towards B with secondary emphasis on the root's forward vector
             // Then, apply offset to align the downward axis instead
             transform.localRotation = Quaternion.LookRotation(transform.localPosition - parent.transform.localPosition, FacingDirection) * rotationOffset;
         }
     }
 }
Beispiel #4
0
 public ObjHudButton(ObjectVectors anObjectVectors) : base(anObjectVectors)
 {
     Name += ":ObjHudButton";
 }
Beispiel #5
0
        public static ObjGroupSkyBox GetNewSkyBox1(ShaderProgram program)
        {
            ObjGroupSkyBox tempObjGroupSkyBox = new ObjGroupSkyBox(program);

            tempObjGroupSkyBox.ClearObjects();


            ObjMaterial tempMat =
                GameCore.TheGameCore.TheRendererManager.TheRenderer.TheResourceManager.GetFromFile(program,
                                                                                                   @".\SkyBoxes\SkyBox-Clouds-Few-Noon.png", false);

            float dist   = 0.5f;
            float distz  = 0.45f;
            float distz0 = -0.05f;


            ObjectVectors tempVectors = new ObjectVectors(); // TOP ?

            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, 0.25),
                new Vector2(0.75, 0.25),
                new Vector2(0.25, 0.75),
                new Vector2(0.75, 0.75),
            };

            ObjObject tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };

            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Left
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.0, 0.25),
                new Vector2(0.25, 0.25),
                new Vector2(0.0, 0.75),
                new Vector2(0.25, 0.75),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Back
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, 0.0),
                new Vector2(0.25, 0.25),
                new Vector2(0.75, 0.0),
                new Vector2(0.75, 0.25),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Right
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(1.0, 0.25),
                new Vector2(0.75, 0.25),
                new Vector2(1.0, 0.75),
                new Vector2(0.75, 0.75),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Front
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, 1.0),
                new Vector2(0.25, 0.75),
                new Vector2(0.75, 1.0),
                new Vector2(0.75, 0.75),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            return(tempObjGroupSkyBox);
        }
Beispiel #6
0
        /// <summary>
        ///     Loads a single image texture into the skybox this will probably always result in visibale seams.
        ///     Image 4x3
        ///     |       |       |
        ///     |  Top  |       |
        ///     -------------------------------
        ///     Left   | Front | Right | Back
        ///     |       |       |
        ///     -------------------------------
        ///     |Bottom |       |
        ///     |       |       |
        /// </summary>
        /// <param name="program"></param>
        /// <returns></returns>
        public static ObjGroupSkyBox GetNewSkyBox2(ShaderProgram program)
        {
            ObjGroupSkyBox tempObjGroupSkyBox = new ObjGroupSkyBox(program);

            tempObjGroupSkyBox.ClearObjects();


//            ObjMaterial tempMat =
//                GameCore.TheGameCore.TheRendererManager.TheRenderer.theResourceManager.GetFromFile(program,
//                    @".\SkyBoxes\Day_Skybox.png", false);
            ObjMaterial tempMat =
                GameCore.TheGameCore.TheRendererManager.TheRenderer.TheResourceManager.GetFromFile(program,
                                                                                                   @".\SkyBoxes\Above_The_Sea.jpg", false);

            float dist   = 0.5f;
            float distz  = 0.5f;
            float distz0 = -0.5f;


            ObjectVectors tempVectors = new ObjectVectors(); // TOP ?

            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            double aThird   = 0.33;
            double twoThird = 0.66;

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, aThird),
                new Vector2(0.5, aThird),
                new Vector2(0.25, 0.0),
                new Vector2(0.5, 0.0),
            };


            ObjObject tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };

            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Left
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, twoThird),
                new Vector2(0.25, aThird),
                new Vector2(0.0, twoThird),
                new Vector2(0.0, aThird),
            };


            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Back
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, twoThird),
                new Vector2(0.25, aThird),
                new Vector2(0.5, twoThird),
                new Vector2(0.5, aThird),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Right
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.5, twoThird),
                new Vector2(0.5, aThird),
                new Vector2(0.75, twoThird),
                new Vector2(0.75, aThird),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Front
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(1, twoThird),
                new Vector2(1, aThird),
                new Vector2(0.75, twoThird),
                new Vector2(0.75, aThird),
            };

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Bottom ?
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(dist, distz0, -dist),
                new Vector3(-dist, distz0, dist),
                new Vector3(dist, distz0, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.25, twoThird),
                new Vector2(0.5, twoThird),
                new Vector2(0.25, 1.0),
                new Vector2(0.5, 1.0),
            };


            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);


            return(tempObjGroupSkyBox);
        }
Beispiel #7
0
        public static ObjGroupSkyBox GetTexturedBox3(ShaderProgram program,
                                                     Dictionary <RenderObjects.BoxSides, Bitmap> aBmpList)
        {
            ObjGroupSkyBox tempObjGroupSkyBox = new ObjGroupSkyBox(program);
            float          dist   = 0.5f;
            float          distz  = 0.5f;
            float          distz0 = -0.5f;


            ObjectVectors tempVectors = new ObjectVectors(); // TOP ?

            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.0, 1.0),
                new Vector2(1.0, 1.0),
                new Vector2(0.0, 0.0),
                new Vector2(1.0, 0.0),
            };

            ObjMaterial tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Top]);

            ObjObject tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };

            tempObjGroupSkyBox.AddObject(tempObj);


            tempVectors            = new ObjectVectors(); // Left
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(1.0, 1.0),
                new Vector2(1.0, 0.0),
                new Vector2(0.0, 1.0),
                new Vector2(0.0, 0.0),
            };

            tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Left]);

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Back
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(-dist, distz, -dist),
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.0, 1.0),
                new Vector2(0.0, 0.0),
                new Vector2(1.0, 1.0),
                new Vector2(1.0, 0.0),
            };

            tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Back]);


            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Right
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(dist, distz0, -dist),
                new Vector3(dist, distz, -dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.0, 1.0),
                new Vector2(0.0, 0.0),
                new Vector2(1.0, 1.0),
                new Vector2(1.0, 0.0),
            };

            tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Right]);

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Front
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, dist),
                new Vector3(-dist, distz, dist),
                new Vector3(dist, distz0, dist),
                new Vector3(dist, distz, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(1.0, 1.0),
                new Vector2(1.0, 0.0),
                new Vector2(0.0, 1.0),
                new Vector2(0.0, 0.0),
            };


            tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Front]);


            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            tempVectors            = new ObjectVectors(); // Bottom ?
            tempVectors.Vertex     =
                tempVectors.Vertex = new[]
            {
                new Vector3(-dist, distz0, -dist),
                new Vector3(dist, distz0, -dist),
                new Vector3(-dist, distz0, dist),
                new Vector3(dist, distz0, dist),
            };

            tempVectors.ElementData = new[]
            {
                0, 1, 2,
                1, 3, 2,
            };

            tempVectors.Uvs = new Vector2[]
            {
                new Vector2(0.0, 0.0),
                new Vector2(1.0, 0.0),
                new Vector2(0.0, 1.0),
                new Vector2(1.0, 1.0),
            };

            tempMat = GetObjMaterial(program, aBmpList[RenderObjects.BoxSides.Bottom]);

            tempObj = new ObjObject(tempVectors)
            {
                Material = tempMat
            };
            tempObjGroupSkyBox.AddObject(tempObj);

            return(tempObjGroupSkyBox);
        }
Beispiel #8
0
 public ObjGameObject(ObjectVectors anObjectVectors) : base(anObjectVectors)
 {
 }
Beispiel #9
0
 public ObjHudPanel(ObjectVectors anObjectVectors) : base(anObjectVectors)
 {
     Name += "ObjHudPanel";
 }