/// <summary> /// Creates a New Instance of the Base Ship Class /// </summary> /// <param name="AssetPath"></param> public vxWaterEntity(vxEngine Engine, Vector3 StartPosition, Vector3 WaterScale) : base(Engine, Engine.Assets.Models.WaterPlane, StartPosition) { Engine.Current3DSceneBase.waterItems.Add(this); waterBumpMap = vxEngine.Assets.Textures.Texture_WaterWaves; waterDistortionMap = vxEngine.Assets.Textures.Texture_WaterDistort; //Render even in debug mode RenderEvenInDebug = true; this.WaterScale = WaterScale; WrknPlane = new Plane(0, 1, 0, StartPosition.Y); Position = StartPosition; World = Matrix.CreateScale(WaterScale); World *= Matrix.CreateTranslation(Position); //Set up Scale Cubes scPosition = new vxScaleCube(vxEngine, StartPosition); scPosition.Moved += ScPosition_Moved; scLeft = new vxScaleCube(vxEngine, StartPosition + Vector3.Backward * WaterScale.Z); scLeft.Moved += Sc_Moved; scRight = new vxScaleCube(vxEngine, StartPosition - Vector3.Backward * WaterScale.Z); scRight.Moved += Sc_Moved; scForward = new vxScaleCube(vxEngine, StartPosition + Vector3.Right * WaterScale.X); scForward.Moved += Sc_Moved; scBack = new vxScaleCube(vxEngine, StartPosition - Vector3.Right * WaterScale.X); scBack.Moved += Sc_Moved; // //Physics Body // var tris = new List <Vector3[]>(); //Remember, the triangles composing the surface need to be coplanar with the surface. In this case, this means they have the same height. tris.Add(new[] { new Vector3(Position.X - WaterScale.X, Position.Y, Position.Z - WaterScale.Z), new Vector3(Position.X + WaterScale.X, Position.Y, Position.Z - WaterScale.Z), new Vector3(Position.X - WaterScale.X, Position.Y, Position.Z + WaterScale.Z), }); tris.Add(new[] { new Vector3(Position.X - WaterScale.X, Position.Y, Position.Z + WaterScale.Z), new Vector3(Position.X + WaterScale.X, Position.Y, Position.Z - WaterScale.Z), new Vector3(Position.X + WaterScale.X, Position.Y, Position.Z + WaterScale.Z), }); fluidVolume = new FluidVolume(Vector3.Up, -9.81f, tris, WaterScale.Y, density, 0.9f, .4f); Current3DScene.BEPUPhyicsSpace.Add(fluidVolume); }
public override void LoadContent() { InitialiseLevel(); vxScaleCube center = new vxScaleCube(vxEngine, Vector3.One * 1000); base.LoadContent(); InitialiseCamera(); Cursor = new vxCursor3D(vxEngine); // //Grabbers // grabber = new MotorizedGrabSpring(); BEPUPhyicsSpace.Add(grabber); rayCastFilter = RayCastFilter; workingPlane = new vxWorkingPlane(vxEngine, vxEngine.Model_Sandbox_WorkingPlane, new Vector3(0, WrkngPln_HeightDelta, 0)); for (int i = 0; i < Items.Count; i++) { Items[i].Index = i; } ConnectedMatrix = Matrix.Identity; CurrentlySelectedKey = ""; if (this.SandboxGameState == vxEnumSandboxGameState.EditMode) { this.vxEngine.InputManager.ShowCursor = true; } vxTabPage tabPage_EngineItems = new vxTabPage(vxEngine, tabControl, "General Items"); tabControl.AddItem(tabPage_EngineItems); ScrollPanel_EngineItems = new vxScrollPanel(new Vector2(0, 0), vxEngine.GraphicsDevice.Viewport.Width - 150, vxEngine.GraphicsDevice.Viewport.Height - 75); tabPage_EngineItems.AddItem(ScrollPanel_EngineItems); RegisterSandboxEntities(); }