public override bool CanBePlacedChild(GameObject parent, ref ObjectVectors vectors) { bool canBePlaced = base.CanBePlacedChild(parent, ref vectors); RotateTowards(parent, ref vectors); return(canBePlaced); }
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; } } }
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; } } }
public ObjHudButton(ObjectVectors anObjectVectors) : base(anObjectVectors) { Name += ":ObjHudButton"; }
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); }
/// <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); }
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); }
public ObjGameObject(ObjectVectors anObjectVectors) : base(anObjectVectors) { }
public ObjHudPanel(ObjectVectors anObjectVectors) : base(anObjectVectors) { Name += "ObjHudPanel"; }