void AMobileEnemy::BeginPlay() { Super::BeginPlay(); m_totalDistance = RightDistance + LeftDistance; m_currentDistance = LeftDistance; m_actualJumpSpeed = 0.0f; m_capsuleHeight = CapsuleComponent->GetScaledCapsuleHalfHeight(); m_capsuleRadious = CapsuleComponent->GetScaledCapsuleRadius(); m_capsuleHeightPadding = m_capsuleHeight * PADDING_ENEMY_COLLISION_PERCENT; m_capsuleRadiousPadding = m_capsuleRadious * 0.55f; m_lastPosition = GetActorLocation(); m_nextPosition = m_lastPosition; m_rightVector = GetActorRightVector(); { FVector right = GetActorRightVector(); right = right; m_rightPosition = (m_lastPosition + RightDistance * right) * right; m_leftPosition = (m_lastPosition + LeftDistance * -right) * right; } m_isMoving = !HasTrigger; m_initialMovement = m_isMoving; m_initialStatus = GetTransform(); if (Fly) m_enableGravity = false; RegisterDelegate(); }
void UAbilityTask_WaitGameplayEffectApplied::Activate() { if (GetASC()) { RegisterDelegate(); } }
WorldEntityManager::WorldEntityManager(Filesystem::path directory, int worldWidth, int minQuadWidth) : PersistenceEntityManager::PersistenceEntityManager(directory), m_player(nullptr), m_quadTree(Rectangle(0,0,worldWidth,worldWidth),minQuadWidth) { //---------------------------------------------------------------- // Register the components RegisterComponent([] {return new Components::Player();}); RegisterComponent([] {return new Components::Position();}); RegisterComponent([] {return new Components::Movement();}); RegisterComponent([] {return new Components::Collision();}); RegisterComponent([] {return new Components::Terrain();}); RegisterComponent([] {return new Components::PositionNormalTextureVBO();}); RegisterComponent([] {return new Components::PositionNormalTextureTangentColorVBO(); }); RegisterComponent([] {return new Components::Model();}); RegisterComponent([] {return new Components::Action();}); RegisterComponent([] {return new Components::Building();}); RegisterComponent([] {return new Components::Inventory();}); //---------------------------------------------------------------- // Tags RegisterDelegate([](string type) {return new Components::Tag(type);}, vector<string>{ "Water", "Tree" }); //---------------------------------------------------------------- // Parse configuration file JsonParser config = JsonParser(std::ifstream("config/WorldEntityManager.json")); m_entityRegionWidth = (unsigned int)config["EntityRegionWidth"]; JsonParser continentConfig = JsonParser(std::ifstream("config/continent.json")); m_worldWidth = (unsigned int)continentConfig["terrainMap"]["width"]; //---------------------------------------------------------------- // Event Handlers IEventManager::RegisterHandler(Entity_ComponentAdded, std::function<void(unsigned int, unsigned long)>([=](unsigned int target, unsigned long mask) { if (mask == ComponentMask("Position")) { AddEntityToRegion(target); } })); //---------------------------------------------------------------- // Cache entity regions auto regions = FindEntities(ComponentMask(vector<string>{"EntityRegion", "Position"})); m_entityRegions = std::set<EntityPtr>(regions.begin(),regions.end()); }