Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет nancygold ([info]nancygold)
@ 2024-08-08 10:52:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: amused
Entry tags:computing

This shit is still alive!
https://github.com/TorqueGameEngines/Torque3D/
>3 hours ago

So SOLID it hurts...
https://github.com/TorqueGameEngines/Torque3D/blob/development/Engine/source/console/simObject.h

class SimObject: public ConsoleObject, public TamlCallbacks
{
   public:
   
      typedef ConsoleObject Parent;

      friend class SimManager;
      friend class SimGroup;
      friend class SimNameDictionary;
      friend class SimManagerNameDictionary;
      friend class SimIdDictionary;

      /// @name Notification
      /// @{
      
      struct Notify
      {
         enum Type
         {
            ClearNotify,   ///< Notified when the object is cleared.
            DeleteNotify,  ///< Notified when the object is deleted.
            ObjectRef,     ///< Cleverness to allow tracking of references.
            Invalid        ///< Mark this notification as unused (used in freeNotify).
         } type;
         
         void *ptr;        ///< Data (typically referencing or interested object).
         Notify *next;     ///< Next notification in the linked list.
      };

      /// @}

      /// Flags passed to SimObject::write 
      enum WriteFlags
      {
         SelectedOnly         = BIT( 0 ), ///< Indicates that only objects marked as selected should be outputted. Used in SimSet.
         NoName               = BIT( 1 ), ///< Indicates that the object name should not be saved.
         IgnoreCanSave        = BIT( 2 ), ///< Write out even if CannotSave=true.
      };

   private:

      /// Flags for use in mFlags
      enum
      {
         Deleted           = BIT( 0 ),    ///< This object is marked for deletion.
         Removed           = BIT( 1 ),    ///< This object has been unregistered from the object system.
         Added             = BIT( 3 ),    ///< This object has been registered with the object system.
         Selected          = BIT( 4 ),    ///< This object has been marked as selected. (in editor)
         Expanded          = BIT( 5 ),    ///< This object has been marked as expanded. (in editor)
         ModStaticFields   = BIT( 6 ),    ///< The object allows you to read/modify static fields
         ModDynamicFields  = BIT( 7 ),    ///< The object allows you to read/modify dynamic fields
         AutoDelete        = BIT( 8 ),    ///< Delete this object when the last ObjectRef is gone.
         CannotSave        = BIT( 9 ),    ///< Object should not be saved.
         EditorOnly        = BIT( 10 ),   ///< This object is for use by the editor only.
         NoNameChange      = BIT( 11 ),   ///< Whether changing the name of this object is allowed.
         Hidden            = BIT( 12 ),   ///< Object is hidden in editors.
         Locked            = BIT( 13 ),   ///< Object is locked in editors.
      };
      
      // dictionary information stored on the object
      StringTableEntry mObjectName;
      StringTableEntry mOriginalName;
      SimObject*       nextNameObject;
      SimObject*       nextManagerNameObject;
      SimObject*       nextIdObject;

      StringTableEntry mInheritFrom;
      bool    mPrototype;
      /// SimGroup we're contained in, if any.
      SimGroup*   mGroup;
      
      /// Flags internal to the object management system.
      BitSet32    mFlags;

      StringTableEntry    mProgenitorFile;

      /// Object we are copying fields from.
      SimObject* mCopySource;

      /// Table of dynamic fields assigned to this object.
      SimFieldDictionary *mFieldDictionary;

      /// Buffer to store textual representation of this object's numeric ID in.
      char mIdString[ 11 ];
      
      /// @name Serialization
      /// @{

      /// Path to file this SimObject was loaded from.
      StringTableEntry mFilename;

      /// The line number that the object was declared on if it was loaded from a file.
      S32 mDeclarationLine;
      
      /// @}

      /// @name Notification
      /// @{
      
      /// List of notifications added to this object.
      Notify* mNotifyList;

      static SimObject::Notify *mNotifyFreeList;
      static SimObject::Notify *allocNotify();     ///< Get a free Notify structure.
      static void freeNotify(SimObject::Notify*);  ///< Mark a Notify structure as free.

      /// @}

      static bool _setCanSave( void* object, const char* index, const char* data );
      static const char* _getCanSave( void* object, const char* data );
      
      static const char* _getHidden( void* object, const char* data )
         { if( static_cast< SimObject* >( object )->isHidden() ) return "1"; return "0"; }
      static const char* _getLocked( void* object, const char* data )
         { if( static_cast< SimObject* >( object )->isLocked() ) return "1"; return "0"; }
      static bool _setHidden( void* object, const char* index, const char* data )
         { static_cast< SimObject* >( object )->setHidden( dAtob( data ) ); return false; }
      static bool _setLocked( void* object, const char* index, const char* data )
         { static_cast< SimObject* >( object )->setLocked( dAtob( data ) ); return false; }

      // Namespace protected set methods
      static bool setClass( void *object, const char *index, const char *data )
         { static_cast<SimObject*>(object)->setClassNamespace(data); return false; };
      static bool setSuperClass(void *object, const char *index, const char *data)     
         { static_cast<SimObject*>(object)->setSuperClassNamespace(data); return false; };

            static bool writeObjectName(void* obj, StringTableEntry pFieldName)
         { SimObject* simObject = static_cast<SimObject*>(obj); return simObject->mObjectName != NULL && simObject->mObjectName != StringTable->EmptyString(); }
      static bool writeCanSaveDynamicFields(void* obj, StringTableEntry pFieldName)  
         { return static_cast<SimObject*>(obj)->mCanSaveFieldDictionary == false; }
      static bool writeInternalName(void* obj, StringTableEntry pFieldName)          
         { SimObject* simObject = static_cast<SimObject*>(obj); return simObject->mInternalName != NULL && simObject->mInternalName != StringTable->EmptyString(); }
      static bool setParentGroup(void* obj, const char* data);
      static bool writeParentGroup(void* obj, StringTableEntry pFieldName)           
         { return static_cast<SimObject*>(obj)->mGroup != NULL; }
      static bool writeSuperclass(void* obj, StringTableEntry pFieldName)            
         { SimObject* simObject = static_cast<SimObject*>(obj); return simObject->mSuperClassName != NULL && simObject->mSuperClassName != StringTable->EmptyString(); }
      static bool writeClass(void* obj, StringTableEntry pFieldName)                 
         { SimObject* simObject = static_cast<SimObject*>(obj); return simObject->mClassName != NULL && simObject->mClassName != StringTable->EmptyString(); }
      static bool writeClassName(void* obj, StringTableEntry pFieldName)
         { SimObject* simObject = static_cast<SimObject*>(obj); return simObject->mClassName != NULL && simObject->mClassName != StringTable->EmptyString(); }

      
      // Group hierarchy protected set method 
      static bool setProtectedParent(void *object, const char *index, const char *data);

      // Object name protected set method
      static bool setProtectedName(void *object, const char *index, const char *data);

      // Sets object to inherit default values from
      static bool setInheritFrom(void* object, const char* index, const char* data);

   public:
      inline void setProgenitorFile(const char* pFile) { mProgenitorFile = StringTable->insert(pFile); }
      inline StringTableEntry getProgenitorFile(void) const { return mProgenitorFile; }
      static bool _doPrototype(void* object, const char* index, const char* data);
   protected:
      /// Taml callbacks.
      void onTamlPreWrite(void) override {}
      void onTamlPostWrite(void) override {}
      void onTamlPreRead(void) override {}
      void onTamlPostRead(const TamlCustomNodes& customNodes) override {}
      void onTamlAddParent(SimObject* pParentObject) override {}
      void onTamlCustomWrite(TamlCustomNodes& customNodes) override {}
      void onTamlCustomRead(const TamlCustomNodes& customNodes) override;
   
      /// Id number for this object.
      SimObjectId mId;
      
      /// Internal name assigned to the object.  Not set by default.
      StringTableEntry mInternalName;
      
      static bool          smForceId;   ///< Force a registered object to use the given Id.  Cleared upon use.
      static SimObjectId   smForcedId;  ///< The Id to force upon the object.  Poor object.
      
      /// @name Serialization
      /// @{
      
      /// Whether dynamic fields should be saved out in serialization.  Defaults to true.
      bool mCanSaveFieldDictionary;
      
      /// @}

      /// @name Persistent IDs
      /// @{
      
      /// Persistent ID assigned to this object.  Allows to unambiguously refer to this
      /// object in serializations regardless of stream object ordering.
      SimPersistID* mPersistentId;
      
      static bool _setPersistentID( void* object, const char* index, const char* data );
         
      /// @}
      
      /// @name Namespace management
      /// @{
      
      /// The namespace in which method lookup for this object begins.
      Namespace* mNameSpace;

      /// Name of namespace to use as class namespace.
      StringTableEntry mClassName;
      
      /// Name of namespace to use as class super namespace.
      StringTableEntry mSuperClassName;

      /// Perform namespace linking on this object.
      void linkNamespaces();
      
      /// Undo namespace linking on this object.
      void unlinkNamespaces();
      
      /// @}

      /// Called when the object is selected in the editor.
      virtual void _onSelected() {}

      /// Called when the object is unselected in the editor.
      virtual void _onUnselected() {}
   
      /// We can provide more detail, like object name and id.
      String _getLogMessage(const char* fmt, va_list args) const override;
   
      DEFINE_CREATE_METHOD
      {
         T* object = new T;
         object->incRefCount();
         return object;
      }

      
      // EngineObject.
      void _destroySelf() override;




(Добавить комментарий)


(Анонимно)
2024-08-08 12:23 (ссылка)
So are you, Nancy, so are you. Yet

(Ответить) (Ветвь дискуссии)


(Анонимно)
2024-08-08 12:36 (ссылка)
минет!

(Ответить) (Уровень выше)


(Анонимно)
2024-08-08 13:50 (ссылка)
За то не нужно ебаться с columanar store и фигачить четырехэтажных макросов, всё интуитивно понятно прочитавшему книгу по С++.

(Ответить)


(Анонимно)
2024-08-08 14:09 (ссылка)
Ну и когда этот движок писался в 2001ом году, ты только учился программировать, а когда его релизнули как опенсорс в 12ом, ни про какой data-oriented design нихуя не знал. Так что наезд типично Садковский -- неадекватный.

(Ответить) (Ветвь дискуссии)


[info]nancygold
2024-08-08 14:49 (ссылка)
когда его релизнули как опенсорс в 12ом, ни про какой data-oriented design нихуя не знал.
ECS style databases first appeared in Ultima Underworld, due to memory constraints.
Then refined into proper ECS in the Thief game.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 15:44 (ссылка)
И чо, ты то тут причем? Data-orientностью ты озаботился совершенно недавно, т.е. был таким же "типа дебилом", как и авторы этого движка 23летней выдержки, только в 2010ых.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nancygold
2024-08-08 18:03 (ссылка)
Misgendering people is very rude and shows that you have no arguments.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 18:52 (ссылка)
Calling people niggers left and right, celebrating their suffering or bad luck, like you regularly do, is very rude, and you said yourself that you like to annoy people. I'm just do to you like you do to the others others.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nancygold
2024-08-08 20:01 (ссылка)
>niggers
>people


joke of the day?

(Ответить) (Уровень выше) (Ветвь дискуссии)

(Комментарий удалён)

[info]nancygold
2024-08-08 21:08 (ссылка)
enjoy censorship

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 21:14 (ссылка)
heh, the bully doesn't like retribution in the form of collective action.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 22:14 (ссылка)
>collective

One schizo anon discussing programming basics with a schizo trans

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 22:22 (ссылка)
You don't know what's been deleted.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 22:52 (ссылка)
поведай нам

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nancygold
2024-08-09 10:57 (ссылка)
some anon bullied me

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-09 13:34 (ссылка)
садков врёт

(Ответить) (Уровень выше)


(Анонимно)
2024-08-09 20:20 (ссылка)
What about all the times you bullied other people? Should we be understanding or something of your neurodivergence or should we retaliate?

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-09 21:28 (ссылка)
don't you remember sadkov's only possible friend, a Russian whom sadkov indirectly pushed to commit suicide instead of supporting?

"bullying" is just a childish joke

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-09 21:42 (ссылка)
What was the real content of their relationship -- we can't know. What we know for sure is Sadkov's public behavior on the internet, and it's undeserving of any kind of respect or tender treatment.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-09 22:54 (ссылка)
but still we know there was a relationship and we know the end of it

(Ответить) (Уровень выше)


[info]nancygold
2024-08-10 00:38 (ссылка)
I haven't bullied anyone

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-10 14:26 (ссылка)
садков врёт, причём всегда

(Ответить) (Уровень выше)


(Анонимно)
2024-08-08 18:54 (ссылка)
I wouldn't misgender a nice person, and you didn't address the arguments about your hypocrisy.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]nancygold
2024-08-08 20:01 (ссылка)
I don't speak with bullies.

(Ответить) (Уровень выше) (Ветвь дискуссии)


(Анонимно)
2024-08-08 20:20 (ссылка)
Says a nigger bully.

(Ответить) (Уровень выше)


(Анонимно)
2024-08-08 20:21 (ссылка)
I mean a bully who is also a nigger.

(Ответить) (Уровень выше)


(Анонимно)
2024-08-09 23:47 (ссылка)
Его вроде русачки оккупировали и умучили. Или это не тот..?
В любом случае игр на нем нормальных не было.

(Ответить)