Перейти к публикации
  • Сейчас на странице   Всего пользователей: 3   (0 пользователей, 3 гостя)

Rooster

Программирование, т. 7

  

536 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

Как отменять выделения у документа? ondragstart=false не помогает

мирамистином полей  :trollface:

Поделиться сообщением


Ссылка на сообщение

 

слышал что все и везде делают табами

 

но ведь пробельщики получают больше денег :dunno:  

 

не все деньгами измеряется...

Можно вбросить на форум и смотреть!

 

Вот вам еще функция и я вам сразу сообщаю, она простейшая и меньше не станет никак, по крайне мере я не обладаю скилом для этого и не думаю что кто либо из вас.

 

http://puu.sh/wXJHH.gif

 

код

 

void AWalkingPlatform::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
	Super::PostEditChangeProperty(PropertyChangedEvent);
	if (PropertyChangedEvent.Property)
	{
		const FString propertyName = PropertyChangedEvent.Property->GetName();
		//Check is final
		if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bFinal).ToString())
		{
			if (bFinal)
			{
				return;
			}
		}
		if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bTryToFindLeftNeigbour).ToString())
		{
			AWalkingPlatform* bufferNeighbour = SearchForNeighbour(true);
			if (bufferNeighbour)
			{
				if (LeftNeighbour && LeftNeighbour != bufferNeighbour)
				{
					LeftNeighbour->SearchForNeighbour(false);
				}
			}
			else if (LeftNeighbour)
			{
				LeftNeighbour->SearchForNeighbour(false);
			}
			LeftNeighbour = bufferNeighbour;
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bTryToFindRightNeigbour).ToString())
		{
			AWalkingPlatform* bufferNeighbour = SearchForNeighbour(false);
			if (bufferNeighbour)
			{
				if (RightNeighbour && RightNeighbour != bufferNeighbour)
				{
					RightNeighbour->SearchForNeighbour(false);
				}
			}
			else if (RightNeighbour)
			{
				RightNeighbour->SearchForNeighbour(false);
			}
			RightNeighbour = bufferNeighbour;
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bOverlapTriggerVisible).ToString())
		{
			ChangeOverlapTriggerVisibility(bOverlapTriggerVisible);
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bOverlapTriggerVisibleIngame).ToString())
		{
			ChangeOverlapTriggerInGameVisibility(bOverlapTriggerVisibleIngame);
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bRefreshNeigboursOnEdit).ToString())
		{
			if (bRefreshNeigboursOnEdit)
			{
				UpdateNeighbours();
			}
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, LeftBoundaryPathType).ToString())
		{
			LeftBoundary.SetNodePathType(LeftBoundaryPathType);
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, RightBoundaryPathType).ToString())
		{
			RightBoundary.SetNodePathType(RightBoundaryPathType);
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, OverlapTriggerExtentZ).ToString())
		{
			if (OverlapTriggerExtentZ <= 0.f)
			{
				OverlapTriggerExtentZ = 32.f;
			}
			UpdateTriggers();
		}
		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bDisplayBoundaryGuideSphere).ToString())
		{
			if (bDisplayBoundaryGuideSphere)
			{
				ConstructGuideSpheres();
			}
			else
			{
				DestroyGuideSpheres();
			}
		}
	}

} 

 

 

 

@@madvlaydin ебани код выше в анализатор.

Поделиться сообщением


Ссылка на сообщение

это по прожекту

xkHEyE3ZJhU.jpg

 

по файликам

6eixXlRLHbU.jpg

Drakonian понравилось это

Поделиться сообщением


Ссылка на сообщение
(изменено)
слышал что все и везде делают табами

код будет съезжать в редакторах с другим размером табов


Изменено пользователем Ant0n

Поделиться сообщением


Ссылка на сообщение

 

слышал что все и везде делают табами

код будет съезжать в редакторах с другим размером табов

 функция (длинныйАргумент1

)

 

так ведь таб дефолтный 4 пробела или кто-то отличился?

Поделиться сообщением


Ссылка на сообщение

 


 

так ведь таб дефолтный 4 пробела или кто-то отличился?

 

 

хз, я на работе юзаю таб в 2 пробела (такой конвеншн), а когда пишу для себя - в 4

 

кстати, то полотно ифов чем-то паскаль напоминает, когда только так и делали  :trollface:

 

но судя по тому, что я видел в других кодах игр - там так принято

Поделиться сообщением


Ссылка на сообщение

тоесть этот код сложнее чем тот?
Видишь, штука не шарит совсем.
Эта PostEditChangeProperty() вызывается когда внутри эдитора меняют параметр объекта в деталях, например число какое или чекбокс, каждый параметр имеет кучу метадаты сгенерированой и это функция один за одним проверяет имя того что изменилось с мной вручную вписаным именем, таким образом объект реагирует на изменения параметров, никакой мыслительной нагрузки вообще.
 

		else if (propertyName == GET_MEMBER_NAME_CHECKED(AWalkingPlatform, bDisplayBoundaryGuideSphere).ToString())
		{
			if (bDisplayBoundaryGuideSphere)
			{
				ConstructGuideSpheres();
			}
			else
			{
				DestroyGuideSpheres();
			}
		}

если bDisplayBoundaryGuideSphere меняется и новое значение true -> ConstructGuideSpheres() else -> DestroyGuideSpheres().

Вот так все для вас и выглядит, функции большие длинные и с кучей проверок, но это чем она занимаются, решают одну проблему ожидая того что ты знаешь что это за проблема и какие фичи движка доступны.


 


 

так ведь таб дефолтный 4 пробела или кто-то отличился?

 

 

хз, я на работе юзаю таб в 2 пробела (такой конвеншн), а когда пишу для себя - в 4

 

кстати, то полотно ифов чем-то паскаль напоминает, когда только так и делали  :trollface:

 

но судя по тому, что я видел в других кодах игр - там так принято

 

ну так это ведь просто параметр в IDE не?
так что всегда можно пофиксить под себя, я думаю ты бы смог даже автоматизировать смену этого при коммите и работать с 4мя если тебе прям нравится.

Поделиться сообщением


Ссылка на сообщение

у меня, в коде который скидывает криер, таб отображается как 8 пробелов

Поделиться сообщением


Ссылка на сообщение

 ожидая того что ты знаешь что это за проблема и какие фичи движка доступны.

ну вот уже узкое место

 

 даже автоматизировать смену этого при коммите и работать с 4мя если тебе прям нравится.

коммитит гит, он не будет тебе править ничего, разве что ругнется на црлф и пробелы вместо табов

Поделиться сообщением


Ссылка на сообщение

это продота, там 4 пробела, дефолт вижуал студии, я ниче там не трогал ибо настроек слишком дохрена.

Поделиться сообщением


Ссылка на сообщение
(изменено)

это продота, там 4 пробела, дефолт вижуал студии, я ниче там не трогал ибо настроек слишком дохрена.

ну вот уже пара примеров, что размер табов разный

даже пример не могу скинуть, потому что всё съезжает :trollface:

 


Изменено пользователем Ant0n

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 ожидая того что ты знаешь что это за проблема и какие фичи движка доступны.

ну вот уже узкое место

 

 даже автоматизировать смену этого при коммите и работать с 4мя если тебе прям нравится.

коммитит гит, он не будет тебе править ничего, разве что ругнется на црлф и пробелы вместо табов

 

ну так, не електрик - нехуй лезть, когда суез кому то тут отвечает по поводу того как рамочки сортируются в зависимости от одной из миллиона функций для них, никто же не выебывается, все понимают что фронтенд это пиздец говно и оно такое какое есть и ты должен знать что оно делает.

 

Точно так же у меня, вот это

 

	auto TraceRoutine = [&](const FPathNode& InStartBoundary, const FVector& InDirection) -> AWalkingPlatform*
	{
		const float traceZ = InStartBoundary.GetNodeLocation().Z + BoundaryTraceStartZOffset;
		const FVector traceStart(InStartBoundary.GetNodeLocation().X, InStartBoundary.GetNodeLocation().Y, traceZ);
		const FVector traceEnd(FVector(InStartBoundary.GetNodeLocation().X, InStartBoundary.GetNodeLocation().Y, traceZ) + FVector(InDirection * NeighbourTraceDistance));

простейшая векторная математика, найти 2 точки, одну начальную сдвинутую по Z на определенное растояние

и конечную, начальная сдвинутая в сторону поиска на растояние поиска.

Ты должен понимать как это работает, как исчется начало и конец для рейкаста когда есть начало, дистанция и направление, ну тут еще + параметризированый оффсет для начала.

edit:

А вам волю дай, вы в функцию это заебените и назовете ее пафосно.

 

По поводу гита, ну можно ведь макрос ебенить какой нить в чем нить который пройдет по IDE и изменит все табы.


Изменено пользователем CriErr

Поделиться сообщением


Ссылка на сообщение

ну хуй знает

ебашить такие простыни, которые реально че-то делают и так далее, а если понадобится что-нибудь, копипастить это дерьмо, менять назнвания переменных и тому подобное

 

заебенил абстрактный класс, в нем все что нужно объявил и захуячил

 

а дальше уже вызывай методы из него

Поделиться сообщением


Ссылка на сообщение

а в плюсах нет switch'a ? что за вырви глаз ифелсы


Я не человек, Я - Кантона. (с)

Miraxes#2986

753357.png

Поделиться сообщением


Ссылка на сообщение

не думаю что можно ебенить свитч на этот макрос, да и как вообще

// Returns FName(TEXT("MemberName")), while statically verifying that the member exists in ClassName
#define GET_MEMBER_NAME_CHECKED(ClassName, MemberName) \
	((void)sizeof(UE4Asserts_Private::GetMemberNameCheckedJunk(((ClassName*)0)->MemberName)), FName(TEXT(#MemberName)))

 


ну хуй знает

ебашить такие простыни, которые реально че-то делают и так далее, а если понадобится что-нибудь, копипастить это дерьмо, менять назнвания переменных и тому подобное

http://puu.sh/wXLxD.png

офк по контексту а не просто текст на текст, умный плагин этот вижуал асист. 

Поделиться сообщением


Ссылка на сообщение
(изменено)
А вам волю дай, вы в функцию это заебените и назовете ее пафосно.

 

 

Так в этом же и суть ООП. Ты скрываешь имплементацию в приватных методах классов и выдаешь только тот интерфейс который нужен во вне, а вываливание всего этого в мейн - это процедурное программирование. Я сам сейчас вынужен много такого дерьма писать (потому что приходится писать основную логику на ебучем плскл) и после элегантного ООП кода мне иногда блевать хочется от этого нагромождения ифов, лупов и прочего дерьма и особенно разбираться в чужом нагромождении. Тогда как читая ООП код тебе зачастую даже не нужно лезть в имплементацию, что б понять, что код делает. Например для того, что б понять что делает этот кусок чужого кода - мне не нужно читать 150 строчек кода (хотя примерно столько занимает его разворачивание):

  private def fail(target: String, cursor: Int = input.cursor, errorChar: Char = cursorChar): Nothing = {
    val ParserInput.Line(lineNr, col, text) = input.getLine(cursor)
    val summary = {
      val unexpected =
        if (errorChar != EOI) {
          val c = if (Character.isISOControl(errorChar)) "\\u%04x" format errorChar.toInt else errorChar.toString
          s"character '$c'"
        } else "end-of-input"
      val expected = if (target != "'\uFFFF'") target else "end-of-input"
      s"Unexpected $unexpected at input index $cursor (line $lineNr, position $col), expected $expected"
    }
    val detail = {
      val sanitizedText = text.map(c ⇒ if (Character.isISOControl(c)) '?' else c)
      s"\n$sanitizedText\n${" " * (col-1)}^\n"
    }
    throw new ParsingException(summary, detail)
  }

Но опять таки, я ничего не навязываю, каждый дрочит как хочет, и как я понял, в геймдеве так принято, так что оу вэл.


Изменено пользователем sonac

Поделиться сообщением


Ссылка на сообщение

Тоесть ты предлагаешь хуярить виртуал клас для того чтоб спрятать функции из этого класса или что?

Поделиться сообщением


Ссылка на сообщение

 

 

писать основную логику на ебучем плскл

как вспомню, так аж в глазах темнеет от ненависти

Поделиться сообщением


Ссылка на сообщение

Я ничего не предлагаю, я же написал, каждый дрочит как хочет. Я не считаю, что твой код плохой, но это не ООП (имхо). Это типичный процедурный код, как 30 лет назад. Может быть в той сфере где ты работешь - так принято и это ок, но лично мне (да и судя по тому, что уже идет 6-ая страница обсуждения не только мне) такое писать моветон, потому что мне такое читать трудно, и длинные переменные читать трудно, и вложенные ифы читать трудно. Но может я аутист, тут такое.

Поделиться сообщением


Ссылка на сообщение

Мне одному кажется, что Crierr какой-то токсик мудила, который спорит ради спора?

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...