public FirstPersonToolRenderer( D3DEngine d3DEngine, CameraManager <ICameraFocused> camManager, PlayerEntityManager playerEntityManager, VoxelModelManager voxelModelManager, VisualWorldParameters visualWorldParameters, SingleArrayChunkContainer chunkContainer, ISkyDome skyDome) { _d3dEngine = d3DEngine; _camManager = camManager; _voxelModelManager = voxelModelManager; _chunkContainer = chunkContainer; _skyDome = skyDome; PlayerCharacter = playerEntityManager.PlayerCharacter; playerEntityManager.PlayerEntityChanged += _player_PlayerEntityChanged; _cubeRenderer = new CubeRenderer(d3DEngine, visualWorldParameters); _animationRotation = Quaternion.Identity; DrawOrders.UpdateIndex(0, 5000); this.IsDefferedLoadContent = true; }
public IconFactory(D3DEngine d3DEngine, VoxelModelManager modelManager, VisualWorldParameters visualWorldParameters) { _d3DEngine = d3DEngine; _modelManager = modelManager; _visualWorldParameters = visualWorldParameters; //if(Utopia.UtopiaRender.LCDefferedModeLvl !=1) this.IsDefferedLoadContent = true; }
public void Initialize(string utopiaPath) { if (_engine == null) { _utopiaFolder = utopiaPath; ClientSettings.PathRoot = _utopiaFolder; ClientSettings.EffectPack = Path.Combine(_utopiaFolder, @"EffectsPacks\Default\"); ClientSettings.TexturePack = Path.Combine(_utopiaFolder, @"TexturesPacks\Default\"); _engine = new D3DEngine(); DXStates.CreateStates(_engine); } var modelsStorage = new ModelSQLiteStorage(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Realms", "Common", "models.db")); var voxelMeshFactory = new VoxelMeshFactory(_engine); _modelManager = new VoxelModelManager(); _modelManager.VoxelModelStorage = modelsStorage; _modelManager.VoxelMeshFactory = voxelMeshFactory; _modelManager.Initialize(); _visualWorldParameters = new VisualWorldParameters(); _textureManager = new CubeTexturesManager(_engine); _textureManager.Initialization(_engine.ImmediateContext, FilterFlags.Point); _cubeTextureView = _textureManager.CubeArrayTexture; _visualWorldParameters.CubeTextureManager = _textureManager; _iconFactory = new IconFactory(_engine, _modelManager, _visualWorldParameters); //ArrayTexture.CreateTexture2DFromFiles(_engine.Device, _engine.ImmediateContext, // Path.Combine(ClientSettings.TexturePack, @"Terran\"), @"ct*.png", // FilterFlags.Point, "ArrayTexture_DefaultEntityRenderer", // out _cubeTextureView); }
private void LoadMissingModels(WorldConfiguration configuration, VoxelModelManager voxelModelManager) { ThreadsManager.RunAsync(() => { voxelModelManager.Initialize(); var availableModels = voxelModelManager.Enumerate().Select(m => m.VoxelModel.Name).ToList(); var neededModels = configuration.GetUsedModelsNames().Where(m => !availableModels.Contains(m)).ToList(); foreach (var neededModel in neededModels) { voxelModelManager.DownloadModel(neededModel); } }); }
public PlayerEntityManager(CameraManager <ICameraFocused> cameraManager, InputsManager inputsManager, SingleArrayChunkContainer cubesHolder, ServerComponent server, VoxelModelManager voxelModelManager, VisualWorldParameters visualWorldParameters, EntityFactory factory, LandscapeBufferManager bufferManager, ILandscapeManager landscapeManager, ChatComponent chatComponent, PostEffectComponent postEffectComponent, GuiManager guiManager, ISoundEngine soundEngine, TimerManager timerManager ) { _cameraManager = cameraManager; _inputsManager = inputsManager; _soundEngine = soundEngine; _cubesHolder = cubesHolder; _visualWorldParameters = visualWorldParameters; _factory = factory; _bufferManager = bufferManager; _landscapeManager = landscapeManager; _chatComponent = chatComponent; _postEffectComponent = postEffectComponent; OnLanding += PlayerEntityManager_OnLanding; _guiManager = guiManager; PlayerCharacter = (PlayerCharacter)server.Player; ShowDebugInfo = true; // Create a visualVoxelEntity (== Assign a voxel body to the PlayerCharacter) VisualVoxelEntity = new VisualVoxelEntity(PlayerCharacter, voxelModelManager); //Add a new Timer trigger _energyUpdateTimer = timerManager.AddTimer(1000); //A timer that will be raised every second _energyUpdateTimer.OnTimerRaised += energyUpdateTimer_OnTimerRaised; HasMouseFocus = Updatable; UpdateOrder = 0; // create "real" random var entropySource = RNGCryptoServiceProvider.Create(); var bytes = new byte[4]; entropySource.GetBytes(bytes); random = new Random(BitConverter.ToInt32(bytes, 0)); }
public GhostedEntityRenderer( PlayerEntityManager playerEntityManager, VoxelModelManager voxelModelManager, CameraManager <ICameraFocused> cameraManager ) { _playerEntityManager = playerEntityManager; _voxelModelManager = voxelModelManager; _cameraManager = cameraManager; Transform = Matrix.Identity; Display = true; DrawOrders.UpdateIndex(0, 1070); }
public LandscapeManager(ServerComponent server, IChunkStorageManager chunkStorageManager, TimerManager timerManager, VoxelModelManager voxelModelManager, LandscapeBufferManager landscapeEntityManager) { _chunkStorageManager = chunkStorageManager; _voxelModelManager = voxelModelManager; _server = server; _receivedServerChunks = new Dictionary <Vector3I, ChunkDataMessage>(1024); _server.MessageChunkData += ServerConnection_MessageChunkData; _landscapeEntityManager = landscapeEntityManager; //Add a new Timer trigger _timer = timerManager.AddTimer(10000); _timer.OnTimerRaised += _timer_OnTimerRaised; Initialize(); }
public DynamicEntityManager(D3DEngine d3DEngine, VoxelModelManager voxelModelManager, CameraManager <ICameraFocused> camManager, WorldFocusManager worldFocusManager, VisualWorldParameters visualWorldParameters, SingleArrayChunkContainer chunkContainer, IPlayerManager playerEntityManager, ISkyDome skyDome, SharedFrameCB sharedFrameCB, IWorldChunks worldChunks, ISoundEngine soundEngine, UtopiaParticuleEngine utopiaParticuleEngine ) { _d3DEngine = d3DEngine; _voxelModelManager = voxelModelManager; _camManager = camManager; _chunkContainer = chunkContainer; _soundEngine = soundEngine; _worldFocusManager = worldFocusManager; _visualWorldParameters = visualWorldParameters; _playerEntityManager = playerEntityManager; _playerEntityManager.UtopiaParticuleEngine = utopiaParticuleEngine; _skyDome = skyDome; _sharedFrameCB = sharedFrameCB; _worldChunks = worldChunks; _utopiaParticuleEngine = utopiaParticuleEngine; _voxelModelManager.VoxelModelAvailable += VoxelModelManagerVoxelModelReceived; _camManager.ActiveCameraChanged += CamManagerActiveCameraChanged; _playerEntityManager.PlayerEntityChanged += _playerEntityManager_PlayerEntityChanged; DynamicEntities = new List <VisualVoxelEntity>(); DrawOrders.UpdateIndex(VOXEL_DRAW, 99, "VOXEL_DRAW"); SPRITENAME_DRAW = DrawOrders.AddIndex(1060, "NAME_DRAW"); this.IsDefferedLoadContent = true; }
public VisualChunkBase( D3DEngine d3DEngine, WorldFocusManager worldFocusManager, VisualWorldParameters visualWorldParameter, Range3I cubeRange, CameraManager <ICameraFocused> cameraManager, WorldChunks worldChunkManager, VoxelModelManager voxelModelManager, IChunkEntityImpactManager chunkEntityImpactManager, ChunkDataProvider provider = null) : base(provider) { _cachedTrees = new Dictionary <TreeBpSeed, VisualVoxelModel>(); Graphics = new ChunkGraphics(this, d3DEngine); _d3DEngine = d3DEngine; _worldFocusManager = worldFocusManager; _worldChunkManager = worldChunkManager; _chunkEntityImpactManager = chunkEntityImpactManager; #if DEBUG _blockpickedUPEffect = new HLSLVertexPositionColor(_d3DEngine.Device); #endif _visualWorldParameters = visualWorldParameter; _cameraManager = cameraManager; _voxelModelManager = voxelModelManager; _visualVoxelEntities = new Dictionary <string, List <VisualVoxelEntity> >(); EmitterStaticEntities = new List <EntityMetaData>(); OutOfChunkLightSourceStaticEntities = new List <ILightEmitterEntity>(); SoundStaticEntities = new List <IItem>(); CubeRange = cubeRange; State = ChunkState.Empty; Entities.EntityAdded += EntitiesEntityAdded; Entities.EntityRemoved += EntitiesEntityRemoved; Entities.CollectionCleared += EntitiesCollectionCleared; }
public VisualChunk(D3DEngine d3DEngine, WorldFocusManager worldFocusManager, VisualWorldParameters visualWorldParameter, ref Range3I cubeRange, SingleArrayChunkContainer singleArrayContainer, CameraManager <ICameraFocused> cameraManager, WorldChunks worldChunkManager, VoxelModelManager voxelModelManager, IChunkEntityImpactManager chunkEntityImpactManager, ChunkDataProvider provider = null) : base(d3DEngine, worldFocusManager, visualWorldParameter, cubeRange, cameraManager, worldChunkManager, voxelModelManager, chunkEntityImpactManager, new SingleArrayDataProvider(singleArrayContainer)) { ((SingleArrayDataProvider)base.BlockData).DataProviderUser = this; //Didn't find a way to pass it inside the constructor _singleArrayContainer = singleArrayContainer; }
public VisualChunk3D( D3DEngine d3DEngine, WorldFocusManager worldFocusManager, VisualWorldParameters visualWorldParameter, Range3I cubeRange, CameraManager <ICameraFocused> cameraManager, WorldChunks worldChunkManager, VoxelModelManager voxelModelManager, IChunkEntityImpactManager chunkEntityImpactManager, ChunkDataProvider provider = null) : base( d3DEngine, worldFocusManager, visualWorldParameter, cubeRange, cameraManager, worldChunkManager, voxelModelManager, chunkEntityImpactManager, provider) { _lights = new ByteColor[BlockData.ChunkSize.Volume]; }
public VisualDynamicEntity(ICharacterEntity dynEntity, VoxelModelManager manager) : base(dynEntity, manager) { DynamicEntity = dynEntity; //Will be used to update the bounding box with world coordinate when the entity is moving LocalBBox.Minimum = new Vector3(-(DynamicEntity.DefaultSize.X / 2.0f), 0, -(DynamicEntity.DefaultSize.Z / 2.0f)); LocalBBox.Maximum = new Vector3(+(DynamicEntity.DefaultSize.X / 2.0f), DynamicEntity.DefaultSize.Y, +(DynamicEntity.DefaultSize.Z / 2.0f)); //Set Position //Set the entity world position following the position received from server WorldPosition.Value = DynamicEntity.Position; WorldPosition.ValuePrev = DynamicEntity.Position; //Compute the initial Player world bounding box RefreshWorldBoundingBox(ref WorldPosition.Value); //Set LookAt LookAtDirection.Value = DynamicEntity.HeadRotation; LookAtDirection.ValuePrev = LookAtDirection.Value; //Set Move direction = to LookAtDirection MoveDirection.Value = LookAtDirection.Value; //Change the default value when Player => The player message arrive much more faster ! if (DynamicEntity is PlayerCharacter) { _interpolationRate = 0.1; } _netLocation = new NetworkValue <Vector3D> { Value = WorldPosition.Value, Interpolated = WorldPosition.Value }; WithNetworkInterpolation = true; }
public WorldChunks(D3DEngine d3dEngine, CameraManager <ICameraFocused> camManager, VisualWorldParameters visualWorldParameters, WorldFocusManager worldFocusManager, GameStatesManager gameStates, IClock gameClock, SingleArrayChunkContainer cubesHolder, ILandscapeManager2D landscapeManager, IChunkMeshManager chunkMeshManager, IChunksWrapper chunkWrapper, ILightingManager lightingManager, IChunkStorageManager chunkstorage, ServerComponent server, IWeather weather, [Named("SkyBuffer")] StaggingBackBuffer skyBackBuffer, VoxelModelManager voxelModelManager, IChunkEntityImpactManager chunkEntityImpactManager, InputsManager inputsManager ) { _server = server; _chunkstorage = chunkstorage; _d3dEngine = d3dEngine; _worldFocusManager = worldFocusManager; _gameStates = gameStates; _camManager = camManager; _gameClock = gameClock; VisualWorldParameters = visualWorldParameters; _cubesHolder = cubesHolder; _chunkWrapper = chunkWrapper; _landscapeManager = landscapeManager; _chunkMeshManager = chunkMeshManager; _lightingManager = lightingManager; _weather = weather; _skyBackBuffer = skyBackBuffer; _voxelModelManager = voxelModelManager; _chunkEntityImpactManager = chunkEntityImpactManager; _inputsManager = inputsManager; _skyBackBuffer.OnStaggingBackBufferChanged += _skyBackBuffer_OnStaggingBackBufferChanged; SliceViewChunks = 25; DrawStaticInstanced = true; if (visualWorldParameters.WorldParameters.Configuration is UtopiaWorldConfiguration) { _utopiaProcessorParam = ((UtopiaWorldConfiguration)visualWorldParameters.WorldParameters.Configuration).ProcessorParam; } //Self injecting inside components, to avoid circular dependency _chunkWrapper.WorldChunks = this; lightingManager.WorldChunk = this; _chunkMeshManager.WorldChunks = this; landscapeManager.WorldChunks = this; DrawOrders.UpdateIndex(SOLID_DRAW, 100, "SOLID_DRAW"); TRANSPARENT_DRAW = DrawOrders.AddIndex(1050, "TRANSPARENT_DRAW"); ENTITIES_DRAW = DrawOrders.AddIndex(101, "ENTITIES_DRAW"); this.IsDefferedLoadContent = true; }
public ModelControl(VoxelModelManager manager) { Rotation = Quaternion.Identity; _manager = manager; AlterTransform = Matrix.RotationX(-MathHelper.Pi / 5); }