123
This commit is contained in:
199
Editor/Objects/SoundObject.cpp
Normal file
199
Editor/Objects/SoundObject.cpp
Normal file
@@ -0,0 +1,199 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2001.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: SoundObject.cpp
|
||||
// Version: v1.00
|
||||
// Created: 10/10/2001 by Timur.
|
||||
// Compilers: Visual C++ 6.0
|
||||
// Description: CSoundObject implementation.
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "StdAfx.h"
|
||||
#include "SoundObject.h"
|
||||
#include "..\SoundObjectPanel.h"
|
||||
|
||||
#include "..\Viewport.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// CBase implementation.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
IMPLEMENT_DYNCREATE(CSoundObject,CBaseObject)
|
||||
|
||||
int CSoundObject::m_rollupId = 0;
|
||||
CSoundObjectPanel* CSoundObject::m_panel = 0;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
CSoundObject::CSoundObject()
|
||||
{
|
||||
//m_ITag = 0;
|
||||
|
||||
m_innerRadius = 1;
|
||||
m_outerRadius = 10;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::Done()
|
||||
{
|
||||
//if (m_ITag)
|
||||
{
|
||||
// GetIEditor()->GetGame()->RemoveSoundObject( m_ITag );
|
||||
}
|
||||
CBaseObject::Done();
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CSoundObject::Init( IEditor *ie,CBaseObject *prev,const CString &file )
|
||||
{
|
||||
m_ie = ie;
|
||||
|
||||
SetColor( RGB(255,255,0) );
|
||||
bool res = CBaseObject::Init( ie,prev,file );
|
||||
|
||||
// Create Tag point in game.
|
||||
//m_ITag = GetIEditor()->GetGame()->CreateSoundObject( (const char*)GetName(),GetPos(),GetAngles() );
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::SetName( const CString &name )
|
||||
{
|
||||
CBaseObject::SetName( name );
|
||||
//if (m_ITag)
|
||||
//m_ITag->SetName( name );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::SetPos( const Vec3d &pos )
|
||||
{
|
||||
CBaseObject::SetPos( pos );
|
||||
//if (m_ITag)
|
||||
//m_ITag->SetPos( pos );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::SetAngles( const Vec3d &angles )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::SetScale( const Vec3d &scale )
|
||||
{
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::GetBoundSphere( Vec3d &pos,float &radius )
|
||||
{
|
||||
pos = GetPos();
|
||||
radius = m_outerRadius;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::BeginEditParams( IEditor *ie,int flags )
|
||||
{
|
||||
m_ie = ie;
|
||||
CBaseObject::BeginEditParams( ie,flags );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::EndEditParams( IEditor *ie )
|
||||
{
|
||||
CBaseObject::EndEditParams( ie );
|
||||
}
|
||||
|
||||
/*
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::OnPropertyChange( const CString &property )
|
||||
{
|
||||
CBaseObject::OnPropertyChange(property);
|
||||
|
||||
if (!GetParams())
|
||||
return;
|
||||
|
||||
GetParams()->getAttr( "InnerRadius",m_innerRadius );
|
||||
GetParams()->getAttr( "OuterRadius",m_outerRadius );
|
||||
}
|
||||
*/
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
int CSoundObject::MouseCreateCallback( CViewport *view,EMouseEvent event,CPoint &point,int flags )
|
||||
{
|
||||
if (event == eMouseMove || event == eMouseLDown)
|
||||
{
|
||||
Vec3 pos;
|
||||
// Position 1 meter above ground when creating.
|
||||
if (GetIEditor()->GetAxisConstrains() != AXIS_TERRAIN)
|
||||
{
|
||||
pos = view->MapViewToCP(point);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Snap to terrain.
|
||||
bool hitTerrain;
|
||||
pos = view->ViewToWorld( point,&hitTerrain );
|
||||
if (hitTerrain)
|
||||
{
|
||||
pos.z = GetIEditor()->GetTerrainElevation(pos.x,pos.y) + 1.0f;
|
||||
}
|
||||
pos = view->SnapToGrid(pos);
|
||||
}
|
||||
SetPos( pos );
|
||||
if (event == eMouseLDown)
|
||||
return MOUSECREATE_OK;
|
||||
return MOUSECREATE_CONTINUE;
|
||||
}
|
||||
return CBaseObject::MouseCreateCallback( view,event,point,flags );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
bool CSoundObject::HitTest( HitContext &hc )
|
||||
{
|
||||
Vec3 origin = GetPos();
|
||||
float radius = 1;
|
||||
|
||||
Vec3 w = origin - hc.raySrc;
|
||||
w = hc.rayDir.Cross( w );
|
||||
float d = w.Length();
|
||||
|
||||
if (d < radius + hc.distanceTollerance)
|
||||
{
|
||||
hc.dist = GetDistance(hc.raySrc,origin);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void CSoundObject::Display( DisplayContext &dc )
|
||||
{
|
||||
COLORREF color = GetColor();
|
||||
|
||||
dc.SetColor( color,0.8f );
|
||||
dc.DrawBall( GetPos(),1 );
|
||||
|
||||
dc.SetColor( 0,1,0,0.3f );
|
||||
dc.DrawWireSphere( GetPos(),m_innerRadius );
|
||||
|
||||
dc.SetColor( color,1 );
|
||||
dc.DrawWireSphere( GetPos(),m_outerRadius );
|
||||
//dc.renderer->DrawBall( GetPos(),m_outerRadius );
|
||||
|
||||
if (IsSelected())
|
||||
{
|
||||
dc.SetSelectedColor( 0.5f );
|
||||
dc.DrawBall( GetPos(),1.3f );
|
||||
}
|
||||
DrawDefault( dc );
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
XmlNodeRef CSoundObject::Export( const CString &levelPath,XmlNodeRef &xmlNode )
|
||||
{
|
||||
XmlNodeRef objNode = CBaseObject::Export( levelPath,xmlNode );
|
||||
return objNode;
|
||||
}
|
||||
Reference in New Issue
Block a user