Skip to content
Snippets Groups Projects
Select Git revision
  • 67b4d2772c5124b908f8ed9b13166a79bbeb88d2
  • v3.12.0a2
  • v3.12.0a1
  • v3.11.0
  • v3.8.15
  • v3.9.15
  • v3.10.8
  • v3.7.15
  • v3.11.0rc2
  • v3.8.14
  • v3.9.14
  • v3.7.14
  • v3.10.7
  • v3.11.0rc1
  • v3.10.6
  • v3.11.0b5
  • v3.11.0b4
  • v3.10.5
  • v3.11.0b3
  • v3.11.0b2
  • v3.9.13
21 results
An error occurred while fetching branches. Retry the search.

testasync.py

Blame
  • BaseAmmo.cpp 11.54 KiB
    
    /***********************************************************
    Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017, 2018
    See the license in LICENSE
    ***********************************************************/
    
    #include "BaseAmmo.h"
    #include "Tracer.h"
    #include "BaseTool.h"
    #include <particles/sxparticles.h>
    #include <decals/sxdecals.h>
    #include <BulletCollision/NarrowPhaseCollision/btRaycastCallback.h>
    
    /*! \skydocent base_ammo
    Базовый класс для патронов
    */
    
    BEGIN_PROPTABLE(CBaseAmmo)
    	//! Начальная скорость пули
    	DEFINE_FIELD_FLOAT(m_fStartSpeed, PDFF_NOEDIT | PDFF_NOEXPORT, "start_speed", "", EDITOR_NONE)
    	//! Масса пули, кг
    	DEFINE_FIELD_FLOAT(m_fBulletMass, PDFF_NOEDIT | PDFF_NOEXPORT, "bullet_mass", "", EDITOR_NONE)
    	//! Бронебойность
    	DEFINE_FIELD_FLOAT(m_fArmorPiercing, PDFF_NOEDIT | PDFF_NOEXPORT, "armor_piercing", "", EDITOR_NONE)
    	//! Экспансивная?
    	DEFINE_FIELD_BOOL(m_isExpansive, PDFF_NOEDIT | PDFF_NOEXPORT, "is_expansive", "", EDITOR_NONE)
    	//! Разрывная?
    	DEFINE_FIELD_BOOL(m_isBursting, PDFF_NOEDIT | PDFF_NOEXPORT, "is_bursting", "", EDITOR_NONE)
    END_PROPTABLE()
    
    REGISTER_ENTITY_NOLISTING(CBaseAmmo, base_ammo);
    
    struct AllHitsNotMeRayResultCallback: public btCollisionWorld::AllHitsRayResultCallback
    {
    	AllHitsNotMeRayResultCallback(btCollisionObject* me, const btVector3&	rayFromWorld, const btVector3&	rayToWorld):
    		AllHitsRayResultCallback(rayFromWorld, rayToWorld)
    	{
    		m_me = me;
    	}
    
    	virtual	btScalar	addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace)
    	{
    		//printf("%f\n", rayResult.m_hitFraction);
    		if(rayResult.m_collisionObject == m_me)
    		{
    			return 1.0;
    		}
    		if(rayResult.m_localShapeInfo)
    		{
    			m_shapeInfos.push_back(*rayResult.m_localShapeInfo);
    		}
    		else
    		{
    			m_shapeInfos.push_back({-1, -1});
    		}
    		return(AllHitsRayResultCallback::addSingleResult(rayResult, normalInWorldSpace));
    	}
    	Array<btCollisionWorld::LocalShapeInfo> m_shapeInfos;
    protected:
    	btCollisionObject* m_me;
    };
    
    CBaseAmmo::CBaseAmmo(CEntityManager * pMgr):
    	BaseClass(pMgr),
    	m_fStartSpeed(0.0f),
    	m_fBulletMass(0.0f),
    	m_fArmorPiercing(0.0f),
    	m_fNextBarrierDepth(0.0f)
    {
    	m_bPickable = false;