public FluidSystem(SystemManager systemManager, EntityManager entityManager) { _systemManager = systemManager; _entityManager = entityManager; _physicsSystem = (PhysicsSystem)_systemManager.getSystem(SystemType.Physics); _renderSystem = (RenderSystem)_systemManager.getSystem(SystemType.Render); fluidGrid = new Dictionary<int, Dictionary<int, List<int>>>(); liquid = new Particle[MAX_PARTICLES]; activeParticles = new int[MAX_PARTICLES]; _simPositions = new Vector2[MAX_PARTICLES]; _simVelocities = new Vector2[MAX_PARTICLES]; _delta = new Vector2[MAX_PARTICLES]; for (int i = 0; i < MAX_PARTICLES; i++) { liquid[i] = new Particle(this, i, LIQUID_ORIGIN); } }
// draw public void draw(RenderSystem renderSystem) { if (_renderObject != null) { _renderObject.worldMatrix = _renderObject.originMatrix * Matrix.CreateRotationZ(currentTextureAngle) * Matrix.CreateTranslation(new Vector3(position, 0)); _renderObject.updateVertices(); renderSystem.addRenderablePrimitive(_renderObject); } if (mainMetamer != null) mainMetamer.draw(renderSystem); if (lateralMetamer != null) lateralMetamer.draw(renderSystem); }
// endLevel public void endLevel() { ScreenSystem screenSystem = (ScreenSystem)_systemManager.getSystem(SystemType.Screen); foreach (string levelUid in _levelsData.Keys) { List<int> entitiesToPreserve = new List<int>(); entitiesToPreserve.Add(PlayerSystem.PLAYER_ID); _entityManager.killAllEntities(levelUid, entitiesToPreserve); //_regionGoals.Clear(); //_eventGoals.Clear(); //_completedGoals.Clear(); } ResourceManager.clearCache(); _renderSystem = null; currentLevelUid = null; screenSystem.removeScreen(_game.levelScreen); _systemManager.remove(SystemType.Input); _systemManager.remove(SystemType.Physics); _systemManager.remove(SystemType.Camera); _systemManager.remove(SystemType.Event); _systemManager.remove(SystemType.Render); _systemManager.remove(SystemType.Rope); _systemManager.remove(SystemType.Fluid); _systemManager.remove(SystemType.Tree); _systemManager.remove(SystemType.CharacterMovement); _systemManager.remove(SystemType.Explosion); _game.openWorldMap(); _scriptManager.onReturnToWorldMap(currentLevelUid, this); }
// Create systems public void createLevelSystems() { _systemManager.add(new InputSystem(_systemManager, _entityManager), -1); _systemManager.add(new PhysicsSystem(_systemManager, _entityManager), -1); _systemManager.add(new CameraSystem(_systemManager, _entityManager), -1); _systemManager.add(new EventSystem(_systemManager, _entityManager), -1); _systemManager.add(new RopeSystem(_systemManager, _entityManager), -1); _systemManager.add(new ExplosionSystem(_systemManager, _entityManager), -1); _renderSystem = new RenderSystem(_game, _systemManager, _entityManager); _animationSystem = new AnimationSystem(_systemManager, _entityManager, _game.animationManager); _systemManager.add(_renderSystem, -1); _systemManager.add(_animationSystem, -1); _systemManager.add(new TreeSystem(_systemManager, _entityManager), -1); _systemManager.add(new FluidSystem(_systemManager, _entityManager), -1); _systemManager.add(new AIBehaviorSystem(_systemManager, _entityManager), -1); _systemManager.add(new DialogueSystem(_systemManager, _entityManager), -1); _playerSystem = (PlayerSystem)_systemManager.getSystem(SystemType.Player); }