FDsagizi

Member
  • Content count

    147
  • Joined

  • Last visited

Community Reputation

514 Good

About FDsagizi

  • Rank
    Member
  1. Hi  , in our project - game. We are use only script addon, and we need use Our memory allocator  and I create possible to change memory allocator for addon CScriptArray   scriptarray.patch          
  2. Hi  On Win32, Linux, MaxOs work fine, bug on - ARM( iPad )    after call C++ function, and pass in here asOBJ_VALUE type( my string's ), he create a copy, but not call destructor   simple code void startGame(){    MyStr m1;    TestMyStrLeak( m1 ); } C++ int con_count = 0; int des_count = 0; class MyStr{ public:     MyStr(){         std::cout << "CONSTR: " << ++con_count << "\n";     }     MyStr( const MyStr &other ){         std::cout << "CONSTR Ohter: " << ++con_count << "\n";     }     ~MyStr(){         std::cout << "DESTR: " << ++des_count << "\n";     }     static void Construct(MyStr *thisPointer){         new(thisPointer) MyStr();     }     static void CopyConstruct(const MyStr &other, MyStr *thisPointer){         new(thisPointer) MyStr(other);     }     static void Destruct(MyStr *thisPointer){         thisPointer->~MyStr();     } }; void MemLeakMyStr( MyStr my_str ){     std::cout << "L\n"; } void RegMyStr( asIScriptEngine *en ){     int r;     r=en->RegisterObjectType("MyStr", sizeof(MyStr), asOBJ_VALUE | asOBJ_APP_CLASS_CD ); nu_assert( r >= 0 );     r=en->RegisterObjectBehaviour("MyStr", asBEHAVE_CONSTRUCT,  "void f()",             asFUNCTION(MyStr::Construct), asCALL_CDECL_OBJLAST); nu_assert( r >= 0 );     r=en->RegisterObjectBehaviour("MyStr", asBEHAVE_CONSTRUCT,  "void f(const MyStr &)",asFUNCTION(MyStr::CopyConstruct), asCALL_CDECL_OBJLAST); nu_assert( r >= 0 );     r=en->RegisterObjectBehaviour("MyStr", asBEHAVE_DESTRUCT,   "void f()",              asFUNCTION(MyStr::Destruct),  asCALL_CDECL_OBJLAST); nu_assert( r >= 0 );     r=en->RegisterGlobalFunction( "void TestMyStrLeak(MyStr name )",asFUNCTION(MemLeakMyStr),asCALL_CDECL);nu_assert(r>=0); } output:   CONSTR: 1 CONSTR Ohter: 2 L DESTR: 1   Engine flags:   engine->SetEngineProperty(asEP_ALWAYS_IMPL_DEFAULT_CONSTRUCT, false);      engine->SetEngineProperty(asEP_ALLOW_UNSAFE_REFERENCES, true);      engine->SetEngineProperty( asEP_ALLOW_IMPLICIT_HANDLE_TYPES, true );      engine->SetEngineProperty(asEP_AUTO_GARBAGE_COLLECT, true);      engine->SetEngineProperty( asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE, true );      engine->SetEngineProperty(asEP_COPY_SCRIPT_SECTIONS, true);     With ref type ( MyStr & name ) or generic type, work fine Use last svn version
  3. Hi   Im here againe) And soon show our game)   Today update for new AS from svn. and found bug:   Message : Can't implicitly convert from 'const TestClass@' to 'TestClass@&'. Sample code: class TestClass{} void Test(){    array<TestClass@> test;    TestClass @s = test.Size() > 0 ? test[i] : null; }
  4. @a = @b = c;

    Hello    This code crashed. class TestClass{} TestClass @t1; TestClass @t2; void startGame( string &param ){     TestClass @t = TestClass();     @t1 = @t2 = t; }
  5. Implicit conversion of value is not exact

    Ok! I'll look into this.
  6. Hi. some times i have problem with float AS work strange with this.   example, that code not work because he not understand '0', he think is a "int". float ret = true ? 0 : 0.1;  and ok, that code make warning!    next code, work wrong float f = 0.1; float ret = 0.2; ret += false ? 0 : f * 15 ; // ( 15 * 0.1 == 1.5 ) then 1.5 + 0.2 == 1.7 ok ? output( "ret: " + ret ); // BUT result == 1.2
  7. Finding matching Operators

    i thinking about this when i use Vec3 and convert to string class.   r = en->RegisterObjectBehaviour("Vec3", asBEHAVE_IMPLICIT_VALUE_CAST, "string f()", asMETHOD(Vec3,ToString), asCALL_THISCALL ); nu_assert( r >= 0 ); this code work fine: Vec3 my_vec; string str = my_vec; ( Vec3 can convert to string ) But, this code wrong:   Vec3 vec; string s1; string s2 = s1 + vec3; // for this case be best if AS automaticly find variant when he can append to string
  8. [PATCH] Compiler performance improvements

      What is wrong with you code if they can't save and load?
  9. bug with ?& and ?&out

    Hi!  if we are register functions as "bool retrieve(?&out)" this logic work fine: AS: SomeScriptObject @obj_null; retrieve( obj_null ); c++: bool retrieve( void *ptr, int type_id ){    ptr != 0x000000; // ok } And them, if we are use without out - "bool retrieve(?&)" in c++ handle will be always 0x000000.   AS: SomeScriptObject @obj_null; retrieve( obj_null ); c++: bool retrieve( void *ptr, int type_id ){    ptr == 0x000000; // always } use unsafe refences == true!
  10. Clarify @ vs & when registering application functions

    By the way, if you want to use & with out 'in' or 'out', you can set this:   script_engine->SetEngineProperty(asEP_ALLOW_UNSAFE_REFERENCES, true);   and this code, in scripts, will be walid void SomeFunct( float &f ){     f = 10; }
  11. AngelScript 2.26.3 is out

    Surep! allways - engine->SetEngineProperty( asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE , true );  by the way if asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE  == true then '@' not actual! Thanks!
  12. AngelScript 2.26.3 is out

    i have small question, how use array sorting, with ref type ?
  13. Object Handle vs Object reference

    obj ref - use ref couner to variable, if ref count > 0 varialbe is live! obj handle not use this and can be not a valid.