Example #1
0
    /// <summary>
    /// Called once at startup.
    /// </summary>
    void Start()
    {
        meshManager = MeshManager.Instance;
        voxManager  = VoxelGridManager.Instance;

        voxManager.updateStruct = updateVoxelStructure;
    }
        private void Initialize(ILevelControllerOptions options)
        {
            // Constructs all the in-level components, then stores the ones that'll be needed later in member variables.
            // Done this way rather than directly initializing the member variables because this way if they're reordered,
            // the compiler will complain if something's being constructed before its dependency.
            var surface    = GeodesicSphereFactory.Build(options);
            var simulation = new SimulationController(surface, options);

            var cameraController = new CameraController(options);

            var meshManager      = new MeshManager(surface);
            var cursorTracker    = new CursorTracker(cameraController.Camera, meshManager);
            var fieldManipulator = new FieldManipulator(surface, cursorTracker, options);

            var colorMapView     = new ColorMapView(surface, meshManager.Mesh, options);
            var particleMapView  = new ParticleMapView(surface, options);
            var rawValuesView    = new RawValuesView(cursorTracker);
            var timeDilationView = new TimeView(50, options.Timestep);
            var latLongGridView  = new LatLongGridView(options.Radius);

            _simulationController = simulation;
            _colorMapView         = colorMapView;
            _particleMapView      = particleMapView;
            _rawValuesView        = rawValuesView;
            _timeView             = timeDilationView;
            _latLongGridView      = latLongGridView;
            _cameraController     = cameraController;
            _cursorTracker        = cursorTracker;
            _fieldManipulator     = fieldManipulator;
        }
Example #3
0
    public static GameSaver gameSaver; //TODO rm
    void Start()
    {
        IObjectCreator   creator         = new ObjectCreator();
        IInputMamager    inputMamager    = new InputManager();
        IObjectPublisher publisher       = new ObjectPubisher(creator, inputMamager);
        IMeshManager     meshManager     = new MeshManager(publisher);
        IGameplayManager gameplayManager = new GameplayManager(meshManager);


        var updateManagerHolder = new GameObject("UpdateManagerHolder");

        updateManagerHolder.AddComponent <UpdateManager>();
        updateManagerHolder.AddComponent <Corutinier>();


        IUpdateManager updateManager = updateManagerHolder.GetComponent <UpdateManager>();

        updateManager.AddSubscriber(gameplayManager);
        inputMamager.AddSubscriber(gameplayManager);
        ICorutinier corutinier = updateManagerHolder.GetComponent <Corutinier>();

        gameSaver = new GameSaver(gameplayManager);
        gameSaver.Restore();
        //gameplayManager.FillMesh(Constants.HEIGHT-1);
        //meshFiller.FillMesh();
    }
    public void InitializeTree(DirectoryInfo directory)
    {
        this.directory = directory;
        meshManager    = new MeshManager(numberOfMeshes, numberOfMeshLoadingJobs);
        FileInfo     index  = directory.GetFiles("voxelIndex.json")[0];
        StreamReader reader = new StreamReader(index.FullName);
        string       s      = reader.ReadToEnd();
        JSONNode     json   = JSON.Parse(s);

        if (json.IsArray)
        {
            topNodes = new PointCloudNode[json.AsArray.Count];
            for (int i = 0; i < json.AsArray.Count; i++)
            {
                topNodes[i] = PointCloudNode.AddNode(json.AsArray[i], this.directory, gameObject, this);
            }
        }
        else
        {
            topNodes    = new PointCloudNode[1];
            topNodes[0] = PointCloudNode.AddNode(json, this.directory, gameObject, this);
        }

        if (moveCameraToCenter)
        {
            Camera.main.transform.position = topNodes[0].boundsInModelSpace.center;
        }

        System.GC.Collect(); //Garbage Collection
    }
Example #5
0
        public Engine(IDevice device, IConfiguration configuration, IWindowHost host)
        {
            WindowHost = host;
            //windowHost.Bind(this);

            Configuration = configuration;
            Device        = new TheDevice(host, device, false);

            Device.Initialize();

            statsManager  = new StatsManager();
            entityManager = new EntityManager();

            lightManager = new LightManager(this);
            inputManager = new InputManager(this);
            cameraManger = new CameraManager(this);

            materialManager = new MaterialManager(this);
            shaderManager   = new ShaderManager(this);
            meshManager     = new MeshManager(this);
            renderManager   = new RenderManager(this);

            textureManager = new TextureManager(this);
            fontManager    = new FontManager(this);
            uiManager      = new UIManager(this);
        }
 void GetReferences()
 {
     m_meshManager  = FindObjectOfType <MeshManager>();
     m_uvTool       = FindObjectOfType <UVTool>();
     m_buildingMenu = UICollection.instance.GetGameObject("Menu Building").GetComponent <UIBehaviour>();
     m_uvMenu       = UICollection.instance.GetGameObject("Menu UV").GetComponent <UIBehaviour>();
 }
Example #7
0
 // Use this for initialization
 void Start()
 {
     TextObj        = TextContainer.GetComponent <TextMesh>();
     Driver         = EFPContainer.GetComponent <ExternalFeedDriver>();
     MeshManagerObj = EFPContainer.GetComponent <MeshManager>();
     GridManager    = EFPContainer.GetComponent <VoxelGridManager>();
 }
Example #8
0
        public ShootingTarget(Vector3 position, Vector3 rotation, ShootingTargetType type,
                              SoundEffect shotSFX, SoundEffect knockdownSFX)
        {
            isActive   = true;
            targetType = type;

            this.shotSFX      = shotSFX;
            this.knockdownSFX = knockdownSFX;
            sfxVolume         = 0.75f;

            slidingDirection  = new Vector3(maxMovement, 0.0f, 0.0f);
            shiftingDirection = new Vector3(0.0f, 0.0f, maxMovement);

            initialPosition  = position;
            initialRotation  = rotation;
            animationSpeed   = 3.0f;
            runFallAnimation = false;

            // Skew starting time for randomized animations
            totalTime = (float)rand.NextDouble() * 10.0f;

            // Load the target mesh
            targetMesh                = MeshManager.LoadMesh("target.m3d");
            targetMesh.Position       = position;
            targetMesh.RotationAngles = rotation;
            targetMesh.Scale          = 3.0f;
        }
Example #9
0
    private void InitializeTree(DirectoryInfo dir)
    {
        Stopwatch stopwatch = Stopwatch.StartNew();

        this.directory = dir;
        meshManager = new MeshManager(numberOfMeshes, numberOfMeshLoadingJobs);
        JSONNode modelJSON = ReadJSON(this.directory, "pc_model.json");
        JSONArray trees = modelJSON["nodes"].AsArray;
        InitColorPalette(modelJSON["classes"].AsArray);

        topNodes = new PCTree[trees.Count];

        int i = 0;
        foreach (JSONNode tree in trees)
        {
            Vector3 min = tree["min"].AsVector3();
            Vector3 max = tree["max"].AsVector3();

            PCTree t = new PCTree();
            t.bounds = new Bounds((max + min) / 2, (max - min));
            t.treeFile = tree["file"].ToString().Trim('"');
            topNodes[i++] = t;
        }

        stopwatch.Stop();
        UnityEngine.Debug.Log("PC Model Loaded in ms: " + stopwatch.ElapsedMilliseconds);

        if (moveCameraToCenter)
        {
            Camera.main.transform.position = topNodes[0].bounds.center;
        }

        System.GC.Collect(); //Garbage Collection
    }
 public void MarkForRender(MeshManager mesh)
 {
     if (!_meshes.Contains(mesh))
     {
         _meshes.Add(mesh);
     }
 }
Example #11
0
        protected override void CreateScene()
        {
            ((Overlay)OverlayManager.Instance.getByName("Gangsta/Demo/Target")).show();

            Light l = mSceneManager.CreateLight("Light");

            l.Position = new Math3D.Vector3(400, 500, 300);
            l.SetSpecularColour(1.0f, 1.0f, 1.0f);
            l.SetCastShadows(true);

            mSceneManager.SetShadowTechnique(ShadowTechnique.ShadowTypeStencilModulative);
            mSceneManager.SetShadowColour(Converter.GetColor(0.5f, 0.5f, 0.5f));
            mSceneManager.SetAmbientLight(Converter.GetColor(0.5f, 0.5f, 0.5f));
            mSceneManager.SetSkyBox(true, "Gangsta/Skybox/Io");

            Plane plane = new Plane();

            plane.Normal.x = 0.0f;
            plane.Normal.y = 1.0f;
            plane.Normal.z = 0.0f;
            plane.D        = 0.0f;
            MeshPtr m = MeshManager.GetSingleton().CreatePlane("Plane_mesh", ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME,
                                                               plane, 400.0f, 400.0f, 10, 10, true,
                                                               1, 16.0f, 16.0f, Vector3.NegativeUnitZ);
            Entity e = mSceneManager.CreateEntity("Plane_entity", "Plane_mesh");

            e.SetCastShadows(false);
            e.SetMaterialName("Gangsta/Ground/Dust");
            m.SetNull();
            m = null;

            SceneNode n = mSceneManager.GetRootSceneNode().CreateChildSceneNode("Plane_node");

            n.AttachObject(e);
        }
Example #12
0
        protected override void Awake()
        {
            base.Awake();

            ObserverState = ObserverStates.Stopped;

            if (Test)
            {
                // create dummy SurfaceObject
                List <Vector3> testVerts = new List <Vector3>();
                testVerts.Add(new Vector3(-0.5f, -0.5f, -0.5f));
                testVerts.Add(new Vector3(0, 0, 0));
                testVerts.Add(new Vector3(0.5f, 0.5f, 0.5f));
                Mesh testMesh = new Mesh();
                testMesh.SetVertices(testVerts);
                SurfaceObject testSO = CreateSurfaceObject(testMesh, "test", gameObject.transform);
                testSO.Renderer.transform.position = new Vector3(1, 1, 1);

                // create matching dummy SurfacePoints
                Transform      tmpTransform = testSO.Renderer.transform;
                List <Vector3> tmpWvertices = testSO.Filter.sharedMesh.vertices.ToList();
                int            tmpTriCount  = testSO.Filter.sharedMesh.triangles.ToList().Count;
                for (int i = 0; i < tmpWvertices.Count; i++)
                {
                    tmpWvertices[i] = tmpTransform.TransformPoint(tmpWvertices[i]);
                }
                SurfacePoints extras = new SurfacePoints(
                    MeshManager.IntersectionPoints(testSO.Renderer.bounds), tmpWvertices,
                    tmpTriCount, testSO.Renderer.bounds);

                // Log
                UpdateOrAddSurfaceObject(testSO, extras);
            }
        }
Example #13
0
 protected virtual void Awake()
 {
     playerManager = GetComponent <PlayerManager>();
     pointManager  = GetComponent <LevelPoints>();
     meshManager   = GetComponent <MeshManager>();
     arqdutManager = GetComponent <ArqdutManager>();
 }
        /// <summary>
        /// Fully constructs this Tile. This includes creating a Mesh, painting
        /// the terrain, and adding details (grass, objects, etc.)
        ///
        /// By default, calculating heights is done off of the main thread but
        /// can be disabled.
        /// </summary>
        /// <param name="onComplete">Called after all calculations have completed.
        /// <see cref="onComplete"/>Can be null if the result is not needed.</param>
        /// <param name="async">Perform mesh computation asynchronously</param>
        public void Generate(Action onComplete, bool async = true)
        {
            //Cache current LOD
            _lastGeneratedLodLevel = GetLodLevel();
            MeshManager.LodLevel   = _lastGeneratedLodLevel;

            if (async)
            {
                MeshManager.CreateHeightmapAsync(() => {
                    MeshManager.CreateMesh();
                    PostCreateMeshGenerate();

                    if (onComplete != null)
                    {
                        onComplete();
                    }
                });
            }
            else
            {
                MeshManager.CreateHeightmap();
                MeshManager.CreateMesh();
                PostCreateMeshGenerate();

                if (onComplete != null)
                {
                    onComplete();
                }
            }
        }
Example #15
0
 private void OnEnable()
 {
     _meshManager     = target as MeshManager;
     _visualElement   = new VisualElement();
     _visualTreeAsset = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Editor/MeshGeneration.uxml");
     _uss             = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/Editor/MeshGeneration.uss");
     _visualElement.styleSheets.Add(_uss);
 }
Example #16
0
 void Apply(MeshManager manager, DeltaDoneDelegate onDone, bool undo)
 {
     if (m_co != null)
     {
         m_co.done = true;
     }
     m_co = Scheduler.StartCoroutine(DoApply(manager, onDone, undo));
 }
Example #17
0
        public override void StartClientSide(ICoreClientAPI api)
        {
            base.StartClientSide(api);

            MeshManager.Init(api.World as ClientMain);

            OBJSys = new SystemObjectLifetime(api.World as ClientMain);
        }
Example #18
0
 protected override void Awake()
 {
     m_meshManager = GameObject.FindObjectOfType <MeshManager>();
     if (m_meshManager == null)
     {
         Debug.LogWarning("Could not find MeshManager!");
     }
 }
Example #19
0
 public ChunkMeshGenerator(Game game)
 {
     _game             = game;
     _meshManager      = game.Processors.GetOrThrow <MeshManager>();
     _chunkStore       = (LookupDictionaryStore <ChunkPos, Chunk>)game.Components.GetStore <Chunk>();
     _storageStore     = game.Components.GetStore <ChunkPaletteStorage <Block> >();
     _textureCellStore = game.Components.GetStore <TextureCoords4>();
 }
Example #20
0
 public void RedoAction(MeshManager manager, DeltaDoneDelegate onDone)
 {
     Apply(manager);
     if (onDone != null)
     {
         onDone();
     }
 }
Example #21
0
    private void Awake()
    {
        rend   = GetComponent <MeshRenderer>();
        filter = GetComponent <MeshFilter>();
        mesh   = filter.mesh;

        meshManager = GameObject.FindWithTag("LevelHandler").GetComponent <MeshManager>();
    }
    public void Init(MeshManager manager, Data data, MeshPatternDelta delta)
    {
        m_data    = data;
        m_delta   = delta;
        m_manager = manager;

        CalcBounds();
    }
Example #23
0
        private void Initialize()
        {
            graphicsDevice = ScreenManager.GraphicsDevice;
            content        = ScreenManager.Content;
            spriteBatch    = ScreenManager.SpriteBatch;
            font           = ScreenManager.Font;
            MeshManager.InitializeManager(graphicsDevice, content);

            screenWidth  = graphicsDevice.Viewport.Width;
            screenHeight = graphicsDevice.Viewport.Height;

            clearColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);

            // Create Render Targets
            mainRT = new RenderTarget2D(graphicsDevice, screenWidth, screenHeight, false, SurfaceFormat.Color,
                                        DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents);
            reflectionRT = new RenderTarget2D(graphicsDevice, screenWidth / 2, screenHeight / 2, true, SurfaceFormat.Color,
                                              DepthFormat.Depth24Stencil8);
            occlusionRT = new RenderTarget2D(graphicsDevice, screenWidth / 8, screenHeight / 8, false, SurfaceFormat.Color,
                                             DepthFormat.None);
            bloomRT = new RenderTarget2D(graphicsDevice, screenWidth / 8, screenHeight / 8, false, SurfaceFormat.Color,
                                         DepthFormat.None);

            postEffects = new PostProcessingEffects(graphicsDevice,
                                                    content.Load <Effect>(@"Effects\PostProcessingEffects"));

            // Create renderers
            lightRenderer = new LightRenderer(graphicsDevice,
                                              content.Load <Effect>(@"Effects\Light"));
            terrainRenderer = new TerrainRenderer(graphicsDevice,
                                                  content.Load <Effect>(@"Effects\Terrain"));
            surfaceRenderer = new SurfaceRenderer(graphicsDevice,
                                                  content.Load <Effect>(@"Effects\Surface"));
            waterRenderer = new WaterRenderer(graphicsDevice,
                                              content.Load <Effect>(@"Effects\Water"));
            billboardRenderer = new BillboardRenderer(graphicsDevice,
                                                      content.Load <Effect>(@"Effects\Billboard"));
            meshRenderer = new MeshRenderer(graphicsDevice,
                                            content.Load <Effect>(@"Effects\Mesh"));

            // Create camera
            camera                 = new FirstPersonCamera();
            camera.AspectRatio     = graphicsDevice.Viewport.AspectRatio;
            camera.AABBSize        = new Vector2(1.0f, 8.0f);
            camera.DrawDistance    = 10000.0f;
            camera.MoveSpeed       = 25.0f;
            camera.FreeFlyEnabled  = false;
            camera.PitchMinDegrees = -75.0f;
            camera.PitchMaxDegrees = 60.0f;
            camera.Projection      = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
                                                                         camera.AspectRatio, 0.1f, 10000.0f);

            secretSFX = content.Load <SoundEffect>(@"SoundEffects\shotgun_pump");

            // Load level data
            LoadLevel(@"Levels\" + levelFileName);
        }
Example #24
0
 public DecorativeTypeZMinus(string name, string shape, string modname) : base(name + shape + "z-", false)
 {
     this.ParentType  = name + shape;
     this.IsPlaceable = true;
     if (MeshManager.GetMesh(modname, shape + "z-", out string mesh))
     {
         this.Mesh = mesh;
     }
 }
Example #25
0
    public void Apply(MeshManager manager)
    {
        VoxelBlob targetData = manager.m_blob;
        byte      newMat     = material;

        material = targetData[width, layer, depth];
        targetData[width, layer, depth] = newMat;
        manager.MarkChunksForRegenForPoint(width, layer, depth);
    }
Example #26
0
    public void DrawMesh(int playerAmount)
    {
        if (meshManager.mesh.vertexCount > 0)
        {
            meshManager.AddIndicesAndDrawMesh(playerAmount);
        }

        meshManager.SetVertices(MeshManager.ConcatV2ListsToV3(innerPoints, outerPoints));
    }
Example #27
0
 void Start()
 {
     objectStorage = new ObjectStorage();
     levelManager  = new LevelManager(this);
     meshManager   = new MeshManager(levelManager, objectStorage, grid);
     GameObject.Find("water").GetComponent <Spacing>().Manager = levelManager;
     meshManager.CreateRoad();
     isPlaying = true;
 }
Example #28
0
 void Start()
 {
     prefabStorage = new PrefabStorage();
     levelBuilder  = new LevelBuilder(this);
     meshManager   = new MeshManager(levelBuilder, prefabStorage, grid);
     GameObject.Find("WaterDrop").GetComponent <PlayerController>().Builder = levelBuilder;
     meshManager.CreateRoad();
     isPlaying = true;
 }
Example #29
0
 public Verticle(MeshManager Owner, int Xnumber, List <int> XAliases, Vector3 XpositionRelative)
 {
     Initialise();
     OwnerManager     = Owner;
     number           = Xnumber;
     Aliases          = XAliases;
     positionRelative = XpositionRelative;
     //normal = OwnerManager.mesh.normals[Aliases[0]];
     SetPositionAbsolute();
 }
Example #30
0
    public void UndoAction(MeshManager manager, DeltaDoneDelegate onDone)
    {
        blobDelta.UndoAction(manager, onDone);

        if (m_converter != null)
        {
            m_converter.shouldAbort = true;
            m_converter             = null;
        }
    }
Example #31
0
        protected override void OnLoad(EventArgs e)
        {
            // Initialize GL settings
            GPUCapabilities.Initialize();
            GLState.DepthTest = true;
            GLState.CullFace = true;
            GLState.BlendFunc(BlendingFactorSrc.DstAlpha, BlendingFactorDest.OneMinusDstAlpha);
            GL.ClearColor(0.25f, 0.25f, 0.25f, 1.0f);

            // Set up camera
            camera = new Camera(this);
            camera.Perspective(Width, Height, (float)Math.PI / 4, 1f, 1000);
            camera.Position = new Vector3(0, 20, 200);
            camera.Target = new Vector3(0, 0, -1);
            camera.SetAsCurrent(); // Use this camera for rendering

            // Set up PackageManager
            PackageManager.BasePath = "../../Assets/";

            // Load shaders
            ShaderManager.LoadCollection("Shaders/collection.xml");
            var shader = ShaderManager.Get("cubemappedmodel");

            // Load texture
            textures = new TextureManager();
            var texture = textures.Get("Textures/cubemap.tex", true);
            texture.Quality.Mipmaps = true;

            // Load up a mesh
            MeshManager meshManager = new MeshManager();
            var mesh = meshManager.Get("Meshes/sphere.mesh", true);

            // Construct a model from shader, texture and mesh, with default material
            model = new Model()
            {
                Shader = shader,
                Texture = texture,
                Mesh = mesh,
                Material = new Material()
            };

            // set up rendering queue
            renderQueue = new RenderQueue();
            renderQueue.AllowInstancing = false;
        }
Example #32
0
        /// <summary>
        /// Must be overriden by child classes for their own server specific startup behaviour.
        /// </summary>
        protected override void StartupComponents()
        {
            m_log.Info("[STARTUP]: Beginning startup processing");

            Version = Util.EnhanceVersionInformation();

            m_log.Info("[STARTUP]: Version: " + Version + "\n");

            Console = new Console(this,"Region", this);
            IConfig cnf = m_configSource.Source.Configs["Startup"];
            string loginURI = "http://127.0.0.1:9000/";
            string firstName = string.Empty;
            string lastName = string.Empty;
            string password = string.Empty;
            string startlocation = "";
            bool loadtextures = true;
            bool multipleSims = false;

            if (cnf != null)
            {
                loginURI = cnf.GetString("login_uri", "");
                firstName = cnf.GetString("first_name", "test");
                lastName = cnf.GetString("last_name", "user");
                password = cnf.GetString("pass_word", "nopassword");
                loadtextures = cnf.GetBoolean("load_textures", true);
                MeshSculpties = cnf.GetBoolean("mesh_sculpties", MeshSculpties);
                BackFaceCulling = cnf.GetBoolean("backface_culling", BackFaceCulling);
                AvatarMesh = cnf.GetString("avatar_mesh", AvatarMesh);
                AvatarMaterial = cnf.GetString("avatar_material", AvatarMaterial);
                AvatarScale = cnf.GetFloat("avatar_scale", AvatarScale);
                startlocation = cnf.GetString("start_location", "");
                multipleSims = cnf.GetBoolean("multiple_sims", multipleSims);
                ProcessFoliage = cnf.GetBoolean("process_foliage", ProcessFoliage);
                m_limitFramesPerSecond = cnf.GetBoolean("limitfps", m_limitFramesPerSecond);
            }
            LoadTextures = loadtextures;
            MainConsole.Instance = Console;

            // Initialize LibOMV
            if (NetworkInterface == null) NetworkInterface = new RadegastNetworkModule(RInstance);
            NetworkInterface.MultipleSims = multipleSims;
            NetworkInterface.OnLandUpdate += OnNetworkLandUpdate;
            NetworkInterface.OnConnected += OnNetworkConnected;
            NetworkInterface.OnObjectAdd += OnNetworkObjectAdd;
            NetworkInterface.OnSimulatorConnected += OnNetworkSimulatorConnected;
            NetworkInterface.OnObjectUpdate += OnNetworkObjectUpdate;
            NetworkInterface.OnObjectRemove += OnNetworkObjectRemove;
            NetworkInterface.OnAvatarAdd += OnNetworkAvatarAdd;
            //NetworkInterface.OnChat +=new NetworkChatDelegate(OnNetworkChat);
            //NetworkInterface.OnFriendsListUpdate +=new NetworkFriendsListUpdateDelegate(OnNetworkFriendsListChange);

            //NetworkInterface.Login(loginURI, firstName + " " + lastName, password, startlocation);

            // Startup the GUI
            Renderer = new RaegastRenderer(this,Device);
            Renderer.Startup();

            GUIFont defaultFont = Renderer.GuiEnvironment.GetFont("defaultfont.png");

            skin = Renderer.GuiEnvironment.Skin;
            skin.Font = defaultFont;
            skincolor = skin.GetColor(GuiDefaultColor.Face3D);
            skincolor.A = 255;
            skin.SetColor(GuiDefaultColor.Face3D, skincolor);
            skincolor = skin.GetColor(GuiDefaultColor.Shadow3D);
            skincolor.A = 255;
            skin.SetColor(GuiDefaultColor.Shadow3D, skincolor);
            // Set up event handler for the GUI window events.
            Renderer.Device.OnEvent += new OnEventDelegate(OnDeviceEvent);

            Renderer.Device.Resizeable = true;

            MeshManager = new MeshManager(Renderer.SceneManager.MeshManipulator, Renderer.Device);

            SceneGraph = new VSceneGraph(this);

            // Set up the picker.
            SceneGraph.TrianglePicker = new TrianglePickerMapper(Renderer.SceneManager.CollisionManager);
            SceneGraph.TriangleSelector = Renderer.SceneManager.CreateMetaTriangleSelector();

            // Only create a texture manager if the user configuration option is enabled for downloading textures
            if (LoadTextures)
            {
                TextureManager = new TextureManager(this,Renderer.Device, Renderer.Driver, SceneGraph.TrianglePicker, SceneGraph.TriangleSelector, "IdealistCache", NetworkInterface);
                TextureManager.OnTextureLoaded += OnNetworkTextureDownloaded;
            }

            AvatarController = new AvatarController(NetworkInterface, null);

            TerrainManager = ModuleManager.GetTerrainManager(this, m_configSource);

            Renderer.SceneManager.SetAmbientLight(new Colorf(1f, 0.2f, 0.2f, 0.2f));

            // This light simulates the sun
            //SceneNode light2 = Renderer.SceneManager.AddLightSceneNode(Renderer.SceneManager.RootSceneNode, new Vector3D(0, 255, 0), new Colorf(0f, 0.5f, 0.5f, 0.5f), 250, -1);
            SceneNode light2 = Renderer.SceneManager.AddLightSceneNode(Renderer.SceneManager.RootSceneNode, new Vector3D(0, 255, 0), new Colorf(0f, 0.6f, 0.6f, 0.6f), 512, -1);

            // Fog is on by default, this line disables it.
            //Renderer.SceneManager.VideoDriver.SetFog(new Color(0, 255, 255, 255), false, 9999, 9999, 0, false, false);
            float fogBrightness = 0.8f;
            Renderer.SceneManager.VideoDriver.SetFog(new Color(0, (int)(0.5f * 255 * fogBrightness), (int)(0.5f * 255 * fogBrightness), (int)(1.0f * 255 * fogBrightness)), true, 50, 100, 0, true, true);

            //ATMOSkySceneNode skynode = new ATMOSkySceneNode(Renderer.Driver.GetTexture("irrlicht2_up.jpg"), null, Renderer.SceneManager, 100, -1);
            
            //ATMOSphere atmosphere = new ATMOSphere(Renderer.Device.Timer, null, Renderer.SceneManager, -1);
            //atmosphere.SkyTexture = Renderer.Driver.GetTexture("irrlicht2_up.jpg");

            
            Renderer.Driver.SetTextureFlag(TextureCreationFlag.CreateMipMaps, false);
            bool Broken = false;
            if (!Broken) Renderer.SceneManager.AddSkyBoxSceneNode(null, new Texture[] {
                Renderer.Driver.GetTexture("topax2.jpg"),
                Renderer.Driver.GetTexture("irrlicht2_dn.jpg"),
                Renderer.Driver.GetTexture("rightax2.jpg"),
				Renderer.Driver.GetTexture("leftax2.jpg"),
                Renderer.Driver.GetTexture("frontax2.jpg"),
                Renderer.Driver.GetTexture("backax2.jpg")}, 
0);

            Renderer.Driver.SetTextureFlag(TextureCreationFlag.CreateMipMaps, true);
            

            CameraController = new CameraController(this,Renderer.SceneManager);

            SceneGraph.WaterNode = new WaterSceneNode(null, Renderer.SceneManager, new Dimension2Df(180, 180), new Dimension2D(100, 100), new Dimension2D(512, 512));
            SceneGraph.WaterNode.Position = new Vector3D(0, 30, 0);
            //SceneGraph.WaterNode.WaveHeight *= .4f;
            SceneGraph.WaterNode.RefractionFactor = 0.3f;
            SceneGraph.WaterNode.WaveDisplacement = 2f;
            SceneGraph.WaterNode.WaveHeight = 2f;
            SceneGraph.WaterNode.WaveLength = 2f;
            SceneGraph.WaterNode.WaveSpeed = 5f;
            SceneGraph.WaterNode.WaveRepetition = 20f;
            SceneGraph.WaterNode.Scale = new Vector3D(0.2f,0.2f,0.2f);
            SceneGraph.WaterNode.MultiColor = new Colorf(0.9f, 0.7f, 0.7f, 1.0f);

            UserInterface = new UserInterfaceManager(this, Renderer.Driver, Renderer.SceneManager, Renderer.GuiEnvironment, CameraController, AvatarController);
            UserInterface.DefaultFont = defaultFont;
             
            XmlReader xml = Broken? null: XmlReader.Create(new StreamReader("../../../media/About.xml"));
            while (xml != null && xml.Read())
            {
                switch (xml.NodeType)
                {
                    case XmlNodeType.Text:
                        UserInterface.AboutText = xml.ReadContentAsString();
                        break;
                    case XmlNodeType.Element:
                        if (xml.Name.Equals("startUpModel"))
                        {
                        }
                        else if (xml.Name.Equals("messageText"))
                            UserInterface.AboutCaption = xml.GetAttribute("caption");
                        break;
                }
            }

            string formsUiConfigurationOption = m_configSource.Source.Configs["Startup"].GetString("forms", "true");
            if (formsUiConfigurationOption == "true")
            {
                frmCommunications f = new frmCommunications(NetworkInterface);
                f.Visible = true;
                this.m_formsThread = new Thread(delegate() { Application.DoEvents(); Thread.Sleep(50); });
                m_formsThread.Start();
            }

            AnimationManager = new AnimationManager(this);

            TimeSpan timeTaken = DateTime.UtcNow - StartupTime;

            m_log.InfoFormat("[STARTUP]: Startup took {0}m {1}s", timeTaken.Minutes, timeTaken.Seconds);

        }
Example #33
0
        void LoadMeshStuff()
        {
            // Set up camera
            camera = new Camera(this);
            camera.Perspective(Width, Height, (float)Math.PI / 4, 1f, 1000);
            camera.Position = new Vector3(0, 20, 200);
            camera.Target = new Vector3(0, 0, 0);
            camera.SetAsCurrent(); // Use this camera for rendering

            // Set up PackageManager
            PackageManager.BasePath = "../../Assets/";

            // Load shaders
            var modelshader = ShaderManager.Get("transparentmodel");

            // Load texture
            textures = new TextureManager();
            var texture = textures.Get("Textures/lucymetal.tex", true);
            texture.Quality.Mipmaps = true;

            // Load up a mesh
            MeshManager meshManager = new MeshManager();
            var mesh = meshManager.Get("Meshes/lucy.mesh", true);

            var lucyMaterial = new Material();

            lucyMaterial.Textures.Add("textureSampler", texture);
            lucyMaterial.ShaderProgram = modelshader;

            // Construct a model from shader, texture and mesh, with default material
            model = new Model()
            {
                Mesh = mesh,
                Material = lucyMaterial
            };

            // set up rendering queue
            renderQueue = new RenderQueue()
            {
                AllowInstancing = false
            };
        }
Example #34
0
        protected override void OnLoad(EventArgs e)
        {
            // Initialize GL settings
            GPUCapabilities.Initialize();
            GLState.DepthTest = true;
            GLState.CullFace = true;
            GLState.BlendFunc(BlendingFactorSrc.SrcColor, BlendingFactorDest.OneMinusSrcAlpha);
            GL.ClearColor(0.25f, 0.25f, 0.25f, 1.0f);

            // Set up camera
            camera = new Camera(this);
            camera.Perspective(Width, Height, (float)Math.PI / 4, 1f, 1000);
            camera.Position = new Vector3(0, 20, 200);
            camera.Target = new Vector3(0, 0, 0);
            camera.SetAsCurrent();

            // Set up PackageManager
            PackageManager.BasePath = "../../Assets/";

            // Load shaders
            ShaderManager.LoadCollection("Shaders/collection.xml");

            // Load texture
            textures = new TextureManager();
            var texture = textures.Get("Textures/lucymetal.tex", true);
            texture.Quality.Mipmaps = true;

            var groundtexture = textures.Get("Textures/concreteslabs.tex", true);
            groundtexture.Quality.Mipmaps = true;
            groundtexture.Quality.TextureWrapMode = TextureWrapMode.Repeat;

            // Load up a mesh
            MeshManager meshManager = new MeshManager();
            var mesh = meshManager.Get("Meshes/lucy.mesh", true);
            var groundmesh = meshManager.Get("Meshes/plane.mesh", true);

            var modelMaterial = new Material()
                {
                    ShaderProgram = ShaderManager.Get("transparentmodel"),
                    Transparent = false,
                    UniformData = new List<IUniformData>()
                    {
                        new UniformDataVector4() {
                            Name = "color",
                            Data = new Vector4(1,1,1,0.75f),
                        },
                        new UniformDataFloat() {
                            Name = "specularIntensity",
                            Data = 0.5f,
                        }
                    }
                };

            modelMaterial.Textures.Add("textureSampler", texture);

            // Construct a model from shader, texture and mesh, with default material
            model = new Model()
            {
                Mesh = mesh,
                Material = modelMaterial
            };

            var modelMaterial2 = modelMaterial.Copy();
            modelMaterial2.Transparent = true;

            // Construct a model from shader, texture and mesh, with default material
            model2 = new Model()
            {
                Mesh = mesh,
                Material = modelMaterial2
            };

            var groundMaterial = modelMaterial.Copy();
            groundMaterial.Textures["textureSampler"] = groundtexture;

            // Construct a model from shader, texture and mesh, with default material
            groundplane = new Model()
            {
                Mesh = groundmesh,
                Material = groundMaterial
            };

            model.Transform.Position += new Vector3(1, 0, 0);
            model2.Transform.Position += new Vector3(-1, 0, 0);
            groundplane.Transform.Position += new Vector3(0, -1, 0);

            // set up rendering queue
            renderQueue = new RenderQueue();
            renderQueue.AllowInstancing = false;
        }
Example #35
0
        protected override void OnLoad(EventArgs e)
        {
            PackageManager.BasePath = "../../Assets/";

            GPUCapabilities.Initialize();
            GLState.DepthTest = true;
            GLState.CullFace = true;
            GL.ClearColor(0.25f, 0.25f, 0.25f, 1.0f);

            ShaderManager.LoadCollection("Shaders/collection.xml");

            SceneManager.Initialize(500, 5, 20, Vector3.Zero);
            SceneManager.CullByObject = false;

            renderQueue = new RenderQueue();
            renderQueue.AllowInstancing = true;

            meshes = new MeshManager();

            camera = new Hatzap.Camera(this);
            camera.SetAsCurrent();
            camera.Position = new Vector3(0, 1, 1);
            camera.Target = new Vector3(-1, 0, 0);
            camera.Update(0);
            camera.Rotate(new Vector2(-(float)Math.PI / 2.5f, 0));

            var rand = new Hatzap.Utilities.Random();

            int n = 8;
            float sizeScale = 10.0f;

            // All objects will have the same material
            Material material = new Material();

            material.ShaderProgram = ShaderManager.Get("instancedmodel");

            // To disable instancing, use these:
            //material.ShaderProgram = ShaderManager.Get("simplemodel");
            //renderQueue.AllowInstancing = false;

            for (int x = -n; x <= n; x++)
            {
                for (int y = -n; y <= n; y++)
                {
                    for (int z = -n; z <= n; z++)
                    {
                        var instancedObject = new Model();

                        // Set shader, mesh and material (no texture)
                        instancedObject.Mesh = meshes.Get("Meshes/suzanne.mesh", true);
                        instancedObject.Material = material.Copy();

                        // Set transform
                        instancedObject.Transform.Position = new Vector3(
                            (x + (float)(rand.NextDouble() - 0.5)) * sizeScale,
                            (y + (float)(rand.NextDouble() - 0.5)) * sizeScale,
                            (z + (float)(rand.NextDouble() - 0.5)) * sizeScale);
                        instancedObject.Transform.Rotation = Quaternion.FromEulerAngles(
                            x * 360.0f / n / (float)Math.PI,
                            y * 360.0f / n / (float)Math.PI,
                            z * 360.0f / n / (float)Math.PI);

                        float color = 1f;
                        color = color - ((y + n) / (n * 2.0f));

                        instancedObject.Material.Add(new UniformDataVector4(){
                            Data = new Vector4(color, color, color, 1),
                            Name = "Color",
                        });

                        // Don't calculate matrices on every frame
                        instancedObject.Transform.Static = true;

                        // Insert model in the scene octree. (Because I'm lazy and didn't want
                        // to write code to update all these meshes in the queue by hand. Also
                        // culling is done by scene automatically.)
                        SceneManager.Insert(instancedObject);
                    }
                }
            }
        }
Example #36
0
        protected override void OnLoad(EventArgs e)
        {
            // Initialize GL settings
            GPUCapabilities.Initialize();
            GLState.DepthTest = true;
            GLState.AlphaBleding = false;
            GLState.CullFace = true;
            GL.ClearColor(0.25f, 0.25f, 0.25f, 1.0f);

            // Set up camera
            camera = new Camera(this);
            camera.Perspective(Width, Height, (float)Math.PI / 4, 1f, 1000);
            camera.Position = new Vector3(0, 20, 100);
            camera.Target = new Vector3(0, 0, -1);
            camera.SetAsCurrent();

            // Set up PackageManager
            PackageManager.BasePath = "../../Assets/";

            // Load shaders
            ShaderManager.LoadCollection("Shaders/collection.xml");

            // Load texture
            textures = new TextureManager();
            var texture = textures.Get("Textures/concreteslabs.tex", true);
            texture.Quality.Mipmaps = true;
            texture.Quality.TextureWrapMode = TextureWrapMode.Repeat;

            // Load up a mesh
            MeshManager meshManager = new MeshManager();
            var mesh = meshManager.Get("Meshes/dragon.mesh", true);

            // Create base material
            materials = new MaterialManager();
            materials.Insert("uniformexamplematerial.mat", new Material()
            {
                UniformData = new List<IUniformData>()
                {
                    new UniformDataFloat() {
                        Name = "time",
                        Data = 0.0f
                    },
                    new UniformDataVector2() {
                        Name = "toffset",
                        Data = Vector2.Zero
                    },
                    new UniformDataVector4() {
                        Name = "color",
                        Data = Vector4.One
                    }
                }
            });

            // Construct a model from shader, texture and mesh, with default material
            model = new Model()
            {
                Shader = ShaderManager.Get("uniformexamplemodel"),
                Texture = texture,
                Mesh = mesh,
                Material = materials.Get("uniformexamplematerial.mat")
            };

            model2 = new Model()
            {
                Shader = ShaderManager.Get("uniformexamplemodel"),
                Texture = texture,
                Mesh = mesh,
                Material = materials.Get("uniformexamplematerial.mat")
            };

            model3 = new Model()
            {
                Shader = ShaderManager.Get("uniformexamplemodel"),
                Texture = texture,
                Mesh = mesh,
                Material = materials.Get("uniformexamplematerial.mat")
            };

            model.Transform.Position += new Vector3(-1, 0.5f, 0);
            model2.Transform.Position += new Vector3(1, 0.5f, 0);
            model3.Transform.Position += new Vector3(0, -0.75f, 0);

            model.Transform.Rotation *= new Quaternion(0, (float)Math.PI, 0);

            // set up rendering queue
            renderQueue = new RenderQueue();
            renderQueue.AllowInstancing = false;
        }
Example #37
0
        private void MenuImportMesh_Click(object sender, RoutedEventArgs e)
        {
            // Configure open file dialog box
            Microsoft.Win32.OpenFileDialog openDlg = new Microsoft.Win32.OpenFileDialog();
            openDlg.FileName = ""; // Default file name
            openDlg.DefaultExt = ".*"; // Default file extension
            openDlg.Filter = "All files |*.*"; // Filter files by extension

            // Show open file dialog box
            Nullable<bool> result = openDlg.ShowDialog();

            // Process open file dialog box results
            if (result == true)
            {
                // Open document
                string filename = openDlg.FileName;

                //Create a new importer
                AssimpContext importer = new AssimpContext();

                //This is how we add a configuration (each config is its own class)
                //NormalSmoothingAngleConfig config = new NormalSmoothingAngleConfig(66.0f);
                //importer.SetConfig(config);

                var flags = PostProcessPreset.TargetRealTimeMaximumQuality | PostProcessSteps.Triangulate | PostProcessSteps.SortByPrimitiveType | PostProcessSteps.FlipUVs;

                //Import the model. All configs are set. The model
                //is imported, loaded into managed memory. Then the unmanaged memory is released, and everything is reset.
                Scene model = importer.ImportFile(filename, flags);

                var mesh = new Hatzap.Models.Mesh();

                Assimp.Mesh aMesh = null;

                foreach (var item in model.Meshes)
                {
                    if (item.PrimitiveType != Assimp.PrimitiveType.Triangle)
                        continue;

                    aMesh = item;
                    break;
                }

                if (aMesh != null)
                {
                    AssimpConvertor ac = new AssimpConvertor();

                    mesh = ac.FromAssimp(aMesh);
                }
                else
                {
                    Debug.WriteLine("ERROR: No triangle meshes found in imported model.");
                }

                importer.Dispose();

                if (mesh == null)
                    return;

                filename = System.IO.Path.GetFileNameWithoutExtension(filename);

                filename += ".mesh";

                // Configure save file dialog box
                Microsoft.Win32.SaveFileDialog saveDlg = new Microsoft.Win32.SaveFileDialog();
                saveDlg.FileName = filename; // Default file name
                saveDlg.DefaultExt = ".mesh"; // Default file extension
                saveDlg.Filter = "Mesh files (.mesh)|*.mesh"; // Filter files by extension

                // Show save file dialog box
                result = saveDlg.ShowDialog();

                // Process save file dialog box results
                if (result == true)
                {
                    // Save document
                    filename = saveDlg.FileName;

                    MeshManager meshManager = new MeshManager();

                    using (var fs = File.OpenWrite(filename))
                    {
                        meshManager.TemporarySaveAsset(mesh, fs);
                    }
                }
            }
        }